当前位置: 首页 > 知识库问答 >
问题:

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

祝允晨
2023-03-14

我在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的图像时打印零)。

能够提高捕获的分辨率对我来说是非常关键的任务,所以我非常感谢任何人能提供的任何建议。

共有3个答案

祁曦哲
2023-03-14

它似乎是由cammera变量。

AFIK,罗技相机有特别糟糕的linux支持(虽然它;变得更好)他们的大部分问题是像焦点控制这样的高级功能。

我内置的笔记本电脑摄像头没有问题,显示在正常分辨率。
我的外部罗技专业人士有问题。

然而,我可以用这两行来克服分辨率问题。

是的,它们和你用的一样。

cv.SetCaptureProperty(self.capture,cv.CV_CAP_PROP_FRAME_WIDTH, 1280)
cv.SetCaptureProperty(self.capture,cv.CV_CAP_PROP_FRAME_HEIGHT, 720)

我的罗技仍然会抛出错误,但分辨率很好。

请确保您设置的分辨率受您的相机支持,否则v4l会对您大喊大叫。如果我设置了一个不受支持的本机解析,我将不会成功。

凌华奥
2023-03-14

我和你有同样的问题。最后进入OpenCV源代码并更改了modules/highgui/src/cap_v4l中的默认参数。cpp,第245-246行,并重建项目。

#define DEFAULT_V4L_WIDTH  1920
#define DEFAULT_V4L_HEIGHT 1080

这是用于OpenCV 2.4.8

端木鹏
2023-03-14

从医生那里,

函数cvSetCaptureProperty设置视频捕获的指定属性。目前该功能仅支持视频文件:CV_CAP_PROP_POS_MSEC、CV_CAP_PROP_POS_FRAMES、CV_CAP_PROP_POS_AVI_RATIO。

注意:在linux上使用最新的CVS下载和FFMPEG时,此函数当前不执行任何操作(如果使用并返回0,则函数内容将隐藏)。

 类似资料:
  • 问题内容: 我有一组元素,要求它们的最小宽度等于它们的高度,但是高度没有明确设置。目前,我可以通过jQuery 设置css 属性来实现此目的: 是否可以直接在CSS中指定此行为? 问题答案: 我不相信没有JS,这是不可能的,但是也许有人可以证明我错了? CSS不允许您使用动态变量,因此,如果在页面加载之前未设置高度,我不确定该怎么做。

  • 问题内容: 我的元素: 风格: 脚本,使其保持方形: 问题是要在纯CSS中做同样的事情。没有脚本。 问题答案: 我知道有两种技术可以根据元素的高度保持元素的长宽比: 当 高度相对于视口时 : 您可以使用vh单位: 对于 基于父元素的高度的高度 : 您可以使用具有所需纵横比的虚拟图像。宽高比为1:1的示例可以使用1 * 1透明.png图像,也可以使用@vlgalik注释为1 * 1 base64编码

  • 问题内容: 是否可以在锚标签上设置像素的宽度和高度?我希望锚标签具有背景图像,同时将文本保留在锚内。 问题答案: 您需要制作锚点或,然后它将接受宽度和高度值。

  • 我正在尝试我的Matplotlib图表的一些功能,我想在图表的不同部分创建一系列小正方形。 以下是文档说明的内容:下面的示例演示了使用数组在一个命令中绘制具有不同格式样式的多条线。 我的问题是:我不需要一行正方形,我只需要在X,Y坐标的某个位置加上一行,但我遇到的问题是找到一种方法使它变小,下面是我尝试的: 我试图将设置为不同的值,但没有任何变化。文档在这方面有点模糊,有人能告诉我如何设置正方形的

  • 我用角2,我创建一个甜甜圈图 组件的html 我想要的是将这些值作为主组件的输入进行传递。因此,假设在html上,我将该组件称为: 主HTML 组成部分js代码 因此,我的问题是如何将这些输入传递到组件的html中。

  • 如何设置自定义的高度和宽度的PDF格式像这样: 我要设定高度:13.6厘米,宽度:21.2厘米 如果我导出为PDF,纸张大小始终为A4格式,如何使纸张大小为13.6cm(高度)和**21.2cm(宽度),如上图所示 我在yii2上使用mpdf kartik。。 这是我的控制器代码: 希望能有帮助。。。