我正在尝试同时从两个摄像头捕获图像,请参阅以下matlab代码:
cam1 = initCamera(1);
cam2 = initCamera(2);
image1 = cam1.getSnapshot();
image2 = cam2.getSnapshot();
因为matlab逐行处理这段代码,它们是从代码中获取的图像之间的延迟。
我想打电话给" getSnapshot"同时指示两个摄像机,因为我想从两个摄像机同时准确地获取图像。
有没有办法在matlab中执行此操作?我试图使用parfor
和spmd
,但我的相机对象变量范围有问题。
答案 0 :(得分:0)
并行工具箱可以帮助您。
matlabpool % Use default parallel configuration
spmd % By default uses all labs in the pool
INP = load(['somedatafile' num2str(labindex) '.mat']);
RES = somefun(INP);
end
实验室中的 RES
可以从实验室1 RES{1}
,实验室2的RES{2}
等访问客户端。
答案 1 :(得分:0)
如果您希望它在每个工作人员上运行(即spmd
):
spmd
cam = initCamera(labindex);
end
spmd
img = cam.getSnapshot();
end
img{1}; % access first image
img{2}; % access second image, etc
请注意,cam
变量存在于每个工作区的工作空间中。它不是切片变量,因此您无需索引。您可以使用单元数组索引从每个worker获取结果,例如img{1}
等。
如果您想使用parfor
,可以这样做:
parfor i = 1:2
cam{i} = initCamera(i);
end
parfor i = 1:2
img{i} = cam{i}.getSnapshot();
end
img{1}; % access first image
img{2}; % access second image