MATLAB: What is the difference between videoinput and imaq.VideoDevice

image acquisitionImage Acquisition Toolboxvideo object

There are two ways to initialize a video object:
vid = videoinput('winvideo');
and
vid = imaq.VideoDevice('winvideo')
What's the difference? Is one better suited for high-speed acquisition?

Best Answer

The object returned by imaq.VideoDevice is a System Object and is designed for stream processing. The object returned by videoinput is just a normal MATLAB object. Under the covers, both objects use the same fundamental implementation so both acquire the same data at the same rate.
Since the imaq.VideoDevice is a System Object, it supports code generation with MATLAB Coder. However, since System Objects are designed for stream processing, it does not support buffered acquisition or events, which the videoinput object does. If you need code generation, you should use the imaq.VideoDevice interface. If you need buffered acquisition or events, you should use videoinput. Otherwise, you can choose either interface.
Related Question