如何在MATLAB中使用网络摄像头在While循环内拍照?
问题的情况: Arduino测量物体的长度。如果长度介于预定间隔之间,则Arduino串行在特定COM端口上写入“1”。MATLAB将在同一COM端口上读取,因此我们可以读取MATLAB内部的“1”。对于每个“1”(由Matlab读取),网络摄像头会拍摄一张照片。下面的While循环让我们有机会阅读MATLAB中的“1”如何在MATLAB中使用网络摄像头在While循环内拍照?,matlab,webcam-capture,Matlab,Webcam Capture,问题的情况: Arduino测量物体的长度。如果长度介于预定间隔之间,则Arduino串行在特定COM端口上写入“1”。MATLAB将在同一COM端口上读取,因此我们可以读取MATLAB内部的“1”。对于每个“1”(由Matlab读取),网络摄像头会拍摄一张照片。下面的While循环让我们有机会阅读MATLAB中的“1” clear all clc arduino = serial('/dev/tty.usbmodem1411','BaudRate',9600); fopen(arduino
clear all
clc
arduino = serial('/dev/tty.usbmodem1411','BaudRate',9600);
fopen(arduino);
Sensor = true
cam = webcam(2);
while (Sensor)
A = fscanf(arduino,'%d')
if A == 1
img = snapshot(cam);
imshow(img);
end
end
fclose(arduino);
但是网络摄像头并不能拍摄我们想要的照片
我们有以下问题:
第一次读取“1”(通过Matlab)时,不会拍摄任何照片。第二次是拍照。到第三个“1”时,前一张照片会发生一些变化(但Matlab不会给出第三个“1”拍摄的照片)。然后到第四个“1”,Matlab会给出第三个“1”拍摄的照片
有人知道我如何解决这个问题吗?如果第一次迭代没有收到
1
,会收到什么?如果不是“1”,则不会收到任何东西。MATLAB只需检查是否有“1”。如果没有“1”,MATLAB只需检查“1”(fscanf)。我理解代码,但我想了解发生了什么。第一次没有收到任何东西,或者不是收到了1
吗?第一次,收到了1,但什么也没有发生。因此,当MATLAB收到1时,网络摄像头不会拍照。因此a==1
是真的,并且代码确实得到了评估?如果对于第一次迭代,它没有收到1
,而是收到了什么?如果不是“1”,则不会收到任何内容。MATLAB只需检查是否有“1”。如果没有“1”,MATLAB除了检查“1”(fscanf)外,无需做任何其他事情。我理解代码,但我想了解发生了什么。第一次没有收到任何东西,或者不是收到了1
吗?第一次,收到了1,但什么也没有发生。因此,当MATLAB收到1时,网络摄像头不会拍照片。因此a==1
是真的,代码得到了真正的评估?