与后处理并行执行网络摄像头图像采集
此示例显示了如何与数据后处理并行从网络摄像头执行帧采集。
在示例中,您使用并行工人执行图像采集,然后将数据流回到客户端以进行后处理Dataqueue
目的。
要使用工人而不是MATLAB客户端执行后处理,请参见执行图像采集和并行图像处理。
设置平行环境
在本地群集上使用一个工人开始平行池。
Parpool('当地的',1);
使用“本地”配置文件开始并行池(PARPOOL)...连接到并行池(工人数:1)。
要将信息从工人发送回MATLAB客户端,请创建一个Dataqueue
目的。
d = parallel.pool.dataqueue;
创建一个图形对象并设置'可见的'
至'上'
这样它就可以在实时脚本之外打开。每次从图像中显示图像Dataqueue
对象,使用后到达
。
无花果=图('可见的',,,,'上');AfterEach(D,@processDisp);
获取数据并并行执行后处理
定义采集的频率,即每秒要从相机中拔出多少帧。
freq = 5;
选择一个考虑到后处理需要多长时间的值。否则,视频流会随着时间的流逝而大大落后。
要启动对并行工人的数据获取,请致电帕菲瓦尔
并通过采集功能,Dataqueue
对象和收购率作为参数。
f = parfeval(@getframefromcamera,0,d,freq);
获取30秒的框架。此示例将一个模糊的过滤器应用于后处理步骤,并并排显示原始和处理的帧。
暂停(30);
要停止视频提要,请取消收购。
取消(f);
有关向工人进行后处理的更详细的示例,请参见执行图像采集和并行图像处理。
定义辅助功能
这GetFrameFromCamera
功能连接到网络摄像头,然后获取图像帧并将其发送到Dataqueue
无限循环中的对象。
功能GetFrameFromCamera(D,FREQ)CAM = WebCAM;尽管true img =快照(cam);发送(d,img);暂停(1/freq);结尾结尾
这ProcessDISP
功能后处理框架并每次数据到达Dataqueue
目的。
功能processDisp(img)imgblur = imgaussfilt(img,3);imshow([img,imgblur],“父母”,GCA)结尾
也可以看看
Parpool
|Parallel.Pool.Dataqueue
|后到达
|帕菲瓦尔
|Imshow