1,847
edits
(created page) |
m (Remove redundant Category:Packages.) |
||
(26 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
The {{Forge| | The {{Forge|image-acquisition}} package is part of the [[Octave Forge]] project. | ||
Build dependencies for Debian GNU/Linux are '''libv4l-dev''' and '''libfltk1.3-dev''' or '''libfltk1.1-dev'''. You can install it on GNU/Linux in octave with | |||
octave> pkg install -forge image-acquisition | |||
If you see complains about a missing mkoctfile: [[FAQ#I_cannot_install_a_package._Octave_complains_about_a_missing_mkoctfile.]] | |||
If you want to report a bug: [[Image_acquisition_package#Reporting_bugs]] | |||
'''image-acquisition will not work on Windows as far as there is not port of v4l2 (standing for ''Video for Linux 2'')''' | |||
== Example session == | == Example session == | ||
Lines starting with "octave:>" are executed on the octave prompt. | |||
=== Load the package and list available hardware === | |||
octave:> pkg load image-acquisition | |||
octave:> imaqhwinfo | |||
ans = | |||
scalar structure containing the fields: | |||
driver = uvcvideo | |||
card = UVC Camera (046d:0825) | |||
bus_info = usb-0000:00:12.2-4 | |||
version = 3.16.7 | |||
capabilities = 2.2314e+09 | |||
device = /dev/video0 | |||
=== 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 | |||
=== Query which properties are available for the used device === | |||
The first 8 ones, starting with an upper letter are fixed, the other specific to the used v4l2 device. | |||
octave:> get(obj) | |||
ans = | |||
{ | |||
[1,1] = SelectedSourceName | |||
[2,1] = ReturnedColorSpace | |||
[3,1] = BayerSensorAlignment | |||
[4,1] = DeviceCapabilities | |||
[5,1] = VideoInput | |||
[6,1] = VideoResolution | |||
[7,1] = VideoFrameInterval | |||
[8,1] = VideoFormat | |||
[9,1] = brightness | |||
[10,1] = contrast | |||
[11,1] = saturation | |||
[12,1] = white_balance_temperature_auto | |||
[13,1] = gain | |||
[14,1] = power_line_frequency | |||
[15,1] = white_balance_temperature | |||
[16,1] = sharpness | |||
[17,1] = backlight_compensation | |||
[18,1] = exposure_auto | |||
[19,1] = exposure_absolute | |||
[20,1] = exposure_auto_priority | |||
} | |||
=== Set VideoFormat to RGB3 aka RGB24 === | |||
octave:> set(obj, "VideoFormat", "RGB3"); | |||
=== List available video resolutions === | |||
octave:> set(obj, "VideoResolution") | |||
ans = | |||
640 480 | |||
160 120 | |||
176 144 | |||
320 176 | |||
320 240 | |||
352 288 | |||
432 240 | |||
544 288 | |||
640 360 | |||
752 416 | |||
800 448 | |||
800 600 | |||
864 480 | |||
960 544 | |||
960 720 | |||
1024 576 | |||
1184 656 | |||
1280 720 | |||
1280 960 | |||
=== Set the video resolution to 320x240px === | |||
octave:> set(obj, "VideoResolution", [320 240]) | |||
=== Get the current brightness value === | |||
octave:> get(obj, "brightness") | |||
ans = 100 | |||
=== Query possible range for brightness === | |||
octave:> set(obj, "brightness") | |||
ans = | |||
scalar structure containing the fields: | |||
min = 0 | |||
max = 255 | |||
step = 1 | |||
default = 128 | |||
=== Set a new value for brightness === | |||
octave:> set(obj, "brightness", 100) | |||
=== Start preview === | |||
octave:> preview(obj) | |||
Close it with CTRL+C or with [X] on the preview window | |||
=== Use higher resolution and start streaming with 2 buffers === | |||
octave:> set(obj, "VideoResolution", [640 480]); | |||
octave:> start(obj, 2) | |||
=== Get an image from the buffers, view and save it === | |||
octave:> img = getsnapshot(obj); | |||
octave:> image(img) | |||
octave:> imwrite(img, "ex1_a.png") | |||
octave:> [img, seq, t] = getsnapshot(obj); | |||
octave:> seq | |||
seq = 1 | |||
octave:> t | |||
t = | |||
scalar structure containing the fields: | |||
tv_sec = 10281 | |||
tv_usec = 779303 | |||
=== Stop streaming === | |||
octave:> stop(obj) | |||
== Using v4l2loopback for tests == | == Using v4l2loopback for tests == | ||
If you don't have a v4l2 device but test the package you could create a loopback device: | If you don't have a v4l2 device but want to test the package you could create a loopback device: | ||
modprobe v4l2loopback | modprobe v4l2loopback | ||
gst-launch-0.10 videotestsrc ! v4l2sink device=/dev/video0 | gst-launch-0.10 videotestsrc ! v4l2sink device=/dev/video0 | ||
Line 29: | Line 176: | ||
There might be some warnings like "warning: function xyz shadows a built-in function" at start. | There might be some warnings like "warning: function xyz shadows a built-in function" at start. | ||
Exit octave and add libv4l2_debug.log to your bug report | Exit octave and add libv4l2_debug.log to your bug report. The logfile libv4l2_debug.log is overwritten between open/close so you have to rename it if you run different scripts. | ||
Consider running the included tests: | Consider running the included tests: | ||
test @videoinput/videoinput | octave> test @videoinput/videoinput | ||
test @videoinput/get | octave> test @videoinput/get | ||
test @videoinput/set | octave> test @videoinput/set | ||
test @videoinput/getsnapshot | octave> test @videoinput/getsnapshot | ||
Run the compliance check (perhaps also with -s) | |||
v4l2-compliance -d /dev/video0 | |||
== Build source from mercurial repository == | |||
'''Warning: You really should use the <pkg install -forge> method described above if you are not sure what you are doing here.''' | |||
Get the source and build it yourself. The build dependencies for Debian GNU/Linux jessie are '''libv4l-dev''' and '''libfltk1.3-dev''' or '''libfltk1.1-dev'''. You also need the GNU autotools to generate the configure script. | |||
$ hg clone http://hg.code.sf.net/p/octave/image-acquisition octave-image-acquisition | |||
$ cd octave-image-acquisition/ | |||
$ make install | |||
== make check == | |||
If you have cloned the hg repo you can also run the test scripts to see if all works. | |||
$ cd octave-image-acquisition/devel | |||
$ make check | |||
octave -q run_tests.m | |||
../src/__v4l2_handler__.cc........................ PASS 3/3 | |||
@videoinput/videoinput............................ PASS 1/1 | |||
@videoinput/get................................... PASS 4/4 | |||
@videoinput/set................................... PASS 7/7 | |||
@videoinput/getsnapshot........................... PASS 4/4 | |||
imaqhwinfo........................................ PASS 1/1 | |||
Summary: | |||
PASS 20 | |||
FAIL 0 | |||
If there are tests which FAIL, then please have a look at the generated fntest.log and add it to your bug report. | |||
[[Category:Octave Forge]] |