如何在MATLAB中使用网络摄像头在While循环内拍照?

如何在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

问题的情况:

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);
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
是真的,代码得到了真正的评估?