不幸的是,opencv中的C4V2调用不能用于使用UVC驱动程序试用过的任何相机拍摄的静态图像。
为了调试我一直在试图用c代码直接调用c4v2来实现这个问题。
我一直在玩示例代码找到here。它使用从视频流中拉出帧的方法。
你可以编译:
gcc -O2 -Wall `pkg-config --cflags --libs libv4l2` filename.c -o filename
我有3个罗技摄像头试验。最好的部分似乎是罗技C910。但即使它有重大的问题。
以下是我尝试使用此代码完成相同任务时遇到的问题。
它的工作几乎每一次的宽度和高度设置为1920x1080。
当我使用例如直接查询从命令行其他可能性:
v4l2-ctl --list-formats-ext
和我尝试一些其他的“可用的”更小它在选择等待挂起大小的相机以释放缓冲器。
而且当我尝试在命令行中使用,例如直接设置其他尺寸:
v4l2-ctl -v height=320 -v width=240 -v pixelformat=YUYV
然后用
v4l2-ctl -V
检查我发现它返回正确的像素格式,但往往不正确的大小。
显然这是对UVC site列为是UVC并且因此用v412兼容此照相机是达不到鼻烟。我怀疑它和其他相机一样糟糕。另外两个我尝试过的网站也被列为兼容网站,但问题更严重。
我做了一些LogitechC910更多的测试我张贴了这个之后。我想我会公布结果以防别人帮忙。
我写了一个脚本来测试用v412抓取代码上面提到的所有的相机声称它支持的格式,当它被查询与用v412这里的结果:
640x480 => Hangs on clearing buffer
160x120 => Works
176x144 => Works
320x176 => Works
320x240 => Works
432x240 => Works
352x288 => Works
544x288 => Works
640x360 => Works
752x416 => Hangs on clearing buffer
800x448 => Hangs on clearing buffer
864x480 => Works
960x544 => Works
1024x576 => Works
800x600 => Works
1184x656 => Works
960x720 => Works
1280x720 => Works
1392x768 => Works
1504x832 => Works
1600x896 => Works
1280x960 => Works
1712x960 => Works
1792x1008 => Works
1920x1080 => Works
1600x1200 => Works
2048x1536 => Works
2592x1944 => Hangs on clearing buffer.
事实证明,默认设置640x480不起作用,这就是困扰我和大多数在留言板上张贴的人。
由于它抓住一个视频帧启动时可具有不正确的曝光(通常为黑色或接近)它抓住的第一帧。我相信这是因为它被用作摄像机,所以它会随着时间的推移调整曝光,而不关心第一帧。我相信这也困扰了我和其他谁看到第一帧为黑色或接近黑色,并认为这是某种错误。后来帧正确的曝光量
事实证明,与OpenCV的Python包装,如果你避免上面列出的地雷和忽略所有的错误信息正常工作与这台相机。错误信息是由于相机接受v4l2命令而不能正确响应的事实。所以,如果你设置宽度,它实际上会被正确设置,但它会以不正确的宽度进行响应。
要使用Python包装,你可以做以下的OpenCV下运行:作为相机尚未准备好
import cv2
import numpy
cap = cv2.VideoCapture(0) #ignore the errors
cap.set(3, 960) #Set the width important because the default will timeout
#ignore the error or false response
cap.set(4, 544) #Set the height ignore the errors
r, frame = cap.read()
cv2.imwrite("test.jpg", frame)
我不知道这是否有帮助,这就是为什么我把它作为评论。有一个叫做“奶酪”的oss程序可以拍摄照片和录像。看看这里:https://apps.ubuntu.com/cat/applications/precise/cheese/ ...也许看看代码可能会帮助你。 – Joe 2014-03-20 13:06:22
[Linux上用于C的网络摄像头库?](http:// stackoverflow。com/questions/278112/webcam-library-for-c-on-linux) – 2016-11-12 09:53:05