java获取视频分辨率_OpenCV:无法设置视频捕获的分辨率

在Ubuntu 12.04 64位系统上,使用OpenCV 2.4.5尝试从Logitech C310摄像头获取1280x960分辨率视频失败。尽管摄像头在guvcview中支持该分辨率,OpenCV默认获取640x480。尝试通过`cap.set(CV_CAP_PROP_FRAME_WIDTH, 1280)`和`cap.set(CV_CAP_PROP_FRAME_HEIGHT, 960)`设置分辨率导致程序崩溃或无法改变分辨率。错误提示包含'HIGHGUI ERROR: V4L / V4L2: VIDIOC_S_CROP',表明可能存在兼容性问题。问题可能出在OpenCV本身或与摄像头的交互上。" 118342159,11009958,SQL多表查询详解,"['数据库理论', 'SQL', '数据查询', '数据库设计', '数据库操作']
摘要由CSDN通过智能技术生成

我在Ubuntu 12.04 64位上使用OpenCV 2.4.5 . 我希望能够设置Logitech C310网络摄像头的输入分辨率 . 相机支持最高1280x960(30fps),我可以在guvcview中以此分辨率观看视频 . 但OpenCV总是以640x480的速度获取视频 .

在创建VideoCapture上限后立即尝试使用cap.set(CV_CAP_PROP_FRAME_WIDTH,1280)和cap.set(CV_CAP_PROP_FRAME_HEIGHT,960)更改分辨率无效;尝试在获取每个帧之前立即设置它们会导致程序立即崩溃 . 我也不能用这种方法降低分辨率 . 我也收到错误“HIGHGUI ERROR:V4L / V4L2:VIDIOC_S_CROP” . 我认为这可能是相关的,因为它在创建VideoCapture时出现一次,并且当我尝试设置宽度和高度时出现一次(但奇怪的是,如果我尝试仅设置其中一个,则不是这样) .

我知道我已经试过无法解决这个StackOverflow问题的答案:Increasing camera capture resolution in OpenCV) . 这是OpenCV中的错误吗?如果是这样的话,这是一个相当明显的 .

这是一个展示问题的代码示例(只是OpenCV视频显示代码的修改版本):

#include

#include

using namespace cv;

int main(int argc, char** argv)

{

VideoCapture cap(0); // open the default camera

if(!cap.isOpened()) // check if we succeeded

return -1;

cap.set(CV_CAP_PROP_FRAME_WIDTH, 160);

cap.set(CV_CAP_PROP_FRAME_HEIGHT, 120);

Mat image;

namedWindow("Video", CV_WINDOW_AUTOSIZE);

while(1)

{

// cap.set(CV_CAP_PROP_FRAME_WIDTH, 160);

// cap.set(CV_CAP_PROP_FRAME_HEIGHT, 120);

cap >> image;

imshow("Video", image);

if(waitKey(10) == 99 ) break;

}

return

}

实际上,如上所述,我得到两个"HIGHGUI ERROR",我得到一个640x480输出 . 我知道160x120是我的相机支持的运行 v4l2-ctl --list-formats-ext 的分辨率 . 如果我取消注释while循环中两条注释掉的行,程序会立即崩溃 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值