The image-acquisition package of octave-forge will be used for this purpose. So, first of all, you need to install and load this package in octave. You also need to install build dependencies for the package, these are – ‘libv4l-dev’ and ‘libfltk1.3-dev’ or ‘libfltk1.1-dev’.
octave> pkg install -forge image-acquisition octave:> pkg load image-acquisition
After loading this package, you can further proceed to capture an image from web cam or from any other connected camera.
The function below will open the v4l2 device and output the result-
octave:> obj = videoinput("v4l2", "/dev/video0") obj = videoinput for v4l2 device = /dev/video0 driver = uvcvideo card = UVC Camera (046d:0825) VideoInput = 0 VideoResolution = 320 x 240 px VideoFormat = YUYV
Now, follow the given steps-
>> get(obj); // To check properties available for used device >> set(obj, "VideoFormat", "RGB3"); // To convert video format from RGB24 to RGB3 >> set(obj, "VideoResolution", [320 240]); // To get the list of available video resolutions >> preview(obj) // To start preview Hit CTRL+C to exit
>> set(obj, "VideoResolution", [640 480]); // Use higher resolution >> start(obj, 2) // Start streaming with two buffers >> img = getsnapshot(obj); // To get an image from the buffers, view and save it >> image(img) // To show >> img = getsnapshot(obj); >> image(img) >> imwrite(img, "e.png") // To write warning: your version of GraphicsMagick limits images to 16 bits per pixel warning: called from imformats>default_formats at line 256 column 11 imformats at line 79 column 3 imwrite at line 99 column 7 >> [img, seq, t] = getsnapshot(obj); >> seq seq = 178 >> t t = scalar structure containing the fields: tv_sec = 56491 tv_usec = 320175 >> stop(obj) // To stop streaming
We can also set the brightness of video. Use the following to do so-
octave:> get(obj, "brightness") //To get the current brightness value ans = 100 octave:> set(obj, "brightness") //Query possible range for brightness ans = scalar structure containing the fields: min = 0 max = 255 step = 1 default = 128 octave:> set(obj, "brightness", 100) //Set a new value for brightness octave:>preview(obj) octave:>
You can perform many other image-processing functions on this too.