Question
Why do I receive the error "GETDATA timed out before FRAMES were available" when using GETDATA in Image Acquisition Toolbox 4.3 (R2012a)? 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);
Related Questions
Expert Answer
Kshitij Singh
PhD Expert
Answered Aug 15, 2026
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
Have a different question? Ask here