1.图像的采集速度快于图像的处理速度
场景:新型的图像采集卡配合高端摄像头,能在每秒内采集100张4096*1024像素的图片。而只是显示图片就需要20ms,处理图片速度也差不多。
分析:如下图所示,这是一个入口“进水量”大于出口“出水量”的典型问题。一般会在中间加上一段空间进行缓存。但这个方法只能维持一段时间,长时间运行这个缓存总会发生溢出。
因此可以通过多开出口的方式,加大“出水量”。在计算机中可以通过多线程,多进程的方式实现。
处理方法:
1)设置由两个内存块组成的缓存空间,一个内存块可以存放100张图片,当前是第几个内存块由n的值决定(0代表第一个内存块,1代表第二个内存块)
2)读取图像线程0不断在内存块n中写入数据,每完成4张图片的存放,向主线程发送当前存放的位置(第i个内存块,第j个位置),显示图像主线程读取图像并显示
3)读取图像线程0在内存块n存满100张图片后,向存储图像线程1,线程2,线程3,线程4发送存满的内存块位置,存放数据的地址,第几次存满一个内存块(第n个内存块,存放在硬盘的路径,第m次存满内存块)
4)处理图像的4个线程,将一个内存块分为4个部分,每个线程完成对应25张图片的处理