【发布时间】:2012-07-16 09:20:58
【问题描述】:
我在 linux (ubuntu 12.04) 上通过 python 使用 openCV,并且我有一个罗技 c920,我想从中获取图像。 Cheese 能够抓取非常高分辨率的帧,但每当我尝试使用 openCV 时,我只能得到 640x480 的图像。我试过了:
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)
生成的图像仍然是 640x480。
我尝试通过(在 python 之外)安装似乎相关的工具:
sudo apt-get install libv4l-dev v4l-utils qv4l2 v4l2ucp
我确实可以通过以下方式操纵相机的设置(同样,在 python 之外):
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 shell 时,上述代码的行为与之前完全相同(尝试设置属性并获取 640x480 的图像时打印零)。
能够提高捕获的分辨率对我来说是非常关键的任务,所以我非常感谢任何人可以提供的任何指针。
【问题讨论】:
-
我在 ubuntu 12.04 中遇到了与 cv2 (OpenCV 2.4.2) 相同的问题。以前,它可以正常工作。
-
@Froyo:你在哪个版本的 opencv 和 ubuntu 上工作过?我可能只是恢复我的系统以使其正常工作...
-
OpenCV 2.3.1 和 ubuntu 11.10
-
我最近answered 有一个类似的问题,并认为答案也应该适合你。
标签: python linux opencv webcam v4l2