Why do I receive the error "GETDATA timed out before FRAMES were available" when using GETDATA in Image Acquisition Toolbox 4.3 (R2012a)?

27 views (last 30 days)
I'm using a camera on a Linux machine. I would like to get image data frame by frame in a for-loop. However, I get errors as follows at the same line of different iterations. What should I do to avoid the error?
Warning: Unable to start acquisition:
Error event occurred at 13:57:18 for video input object: YUYV_640x480-linuxvideo-2.
The image acquisition device failed to start acquiring images.
The image acquisition device failed to
start acquiring images.
Error in imaqdevice/getdata (line 139)
frames =
getdata(imaqgate('privateGetField',
obj, 'uddobject'),varargin{:});
Error in test (line 8)
imageData1=getdata(vid1,1);
Error using imaqdevice/getdata (line
146)
OBJ is not running and no frames are
available.
Error in test (line 10)
imageData2=getdata(vid2,1);

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 25 Oct 2013
The error message on your Linux machine is caused by the delay between the device and MATLAB, which is not a constant value and this related to your system and device driver. This is the reason why it happens at random iterations. Due to the delay, there are no available frames when the time exceeds the Timeout value. To ensure that you are getting data from the camera, you have two options:
1. Setting a larger Timeout value for the object
set(vid,'Timeout',50); %set the Timeout property of VIDEOINPUT object 'vid' to 50 seconds
2. Before GETDATA, wait until there's an available frame
while get(vid,'FramesAvailable')<1 %Wait until at least 1 frame is available
unavailable=1;
end

More Answers (0)

Products


Release

R2012a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!