我在linux上使用openCV(Ubuntu 12.04),我有一个Logitech c920,我想从中抓取图像。奶酪能够抓取高达分辨率的帧,但每当我尝试使用openCV时,我只能获得640x480的图像。我曾尝试:Linux上的OpenCV(通过python):设置帧的宽度/高度?
import cv
cam = cv.CaptureFromCAM(-1)
cv.SetCaptureProperty(cam,cv.CV_CAP_PROP_FRAME_WIDTH,1920)
cv.SetCaptureProperty(cam,cv.CV_CAP_PROP_FRAME_WIDTH,1080)
但每个的最后两行的后这会产生“0”的输出,而当我通过随后抓住一个帧:
image = cv.QueryFrame(cam)
所得图像仍然是640×480。
我试着安装了似乎通过(蟒蛇外)进行相关的工具:
sudo apt-get install libv4l-dev v4l-utils qv4l2 v4l2ucp
,我确实可以明显地操控相机的设置(再次,蟒蛇外)通过:
v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=1
v4l2-ctl --set-parm=30
,并观察:
v4l2-ctl -V
确实表明,有些事情被更改:
Format Video Capture:
Width/Height : 1920/1080
Pixel Format : 'H264'
Field : None
Bytes per Line : 3840
Size Image : 4147200
Colorspace : sRGB
但是,当我弹出到Python壳,上面的代码(试图设置的属性,并获得图像即为640x480时印刷零)行为完全与以前相同。能够提高捕获的分辨率对我来说是非常重要的任务,所以我非常感谢任何人都可以提供的指针。
我在与CV2同样的问题(OpenCV的2.4.2)。以前,它曾经工作得很好。 – Froyo 2012-07-17 14:52:54
@Froyo:你有什么版本的opencv和ubuntu工作?我可能只是恢复我的系统得到这个工作... – 2012-07-18 14:16:12
OpenCV 2.3.1和Ubuntu 11.10 – Froyo 2012-07-18 14:22:35