Linux上的OpenCV(通过python):设置帧宽/高?

前端之家收集整理的这篇文章主要介绍了Linux上的OpenCV(通过python):设置帧宽/高?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 linux(ubuntu 12.04)上通过 python使用openCV,我有一个我想要抓图像的logitech c920.奶酪能够抓住高分辨率的帧,但是每当我尝试使用openCV时,我只能获得640×480的图像.我努力了:
import cv
cam = cv.CaptureFromCAM(-1)
cv.SetCaptureProperty(cam,cv.CV_CAP_PROP_FRAME_WIDTH,1920)
cv.SetCaptureProperty(cam,1080)

但是在最后两行之后,这会产生“0”的输出,当我随后通过以下方式获取一个帧时:

image = cv.QueryFrame(cam)

得到的图像仍然是640×480.

我已经尝试通过(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时,上述代码的行为与以前完全一样(尝试设置属性获取640×480的图像时打印零).

能够提高捕获的分辨率对我来说是非常关键的,所以我非常感谢任何人都可以提供的任何指针.

解决方法

the docs,

The function cvSetCaptureProperty sets the specified property of video capturing. Currently the function supports only video files: CV_CAP_PROP_POS_MSEC,CV_CAP_PROP_POS_FRAMES,CV_CAP_PROP_POS_AVI_RATIO .

NB This function currently does nothing when using the latest CVS download on linux with FFMPEG (the function contents are hidden if 0 is used and returned).

猜你在找的Linux相关文章