加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-13 18:18:22 所属栏目:Linux 来源:网络整理
导读:我在 linux(ubuntu 12.04)上通过 python使用openCV,我有一个我想要抓图像的logitech c920.奶酪能够抓住高分辨率的帧,但是每当我尝试使用openCV时,我只能获得640×480的图像.我努力了: import cvcam = cv.CaptureFromCAM(-1)cv.SetCaptureProperty(cam,cv.CV
我在 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).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读