关于用opencv 设置摄像头读分辨率问题的若干说明

这篇至少让我知道了一点

设置摄像机分辨率的问题。最小分辨率,宽度为4,高度为3。以此类推应该为4的倍数或3的倍数。你可以通过videocapture成员函数set来设置,摄像机的分辨率。videocapture默认的情况下为640×480。

opencv 可以   4-3 8-6  16-12  32-24  320-240  640-480  960-720 1280-960

4-2,4-6不可以 1288-966 不可以

1284-963可以

 

 

我实际的操作情况来看,摄像头有个最低分辨率,如果你的分辨率低于那个最低,它就会以自身最低的分辨率,高于那个分辨率就会按照你设置的分辨率。

 

 

 

 

还有是否提高分辨率可以提高摄像头视角?

莫非我那个摄像头视角只有七十度的原因是没有用到1080的?

 

摘自:https://blog.csdn.net/kyjl888/article/details/69367912

关于用opencv 设置摄像头读分辨率问题的若干说明

苏源流 2017-04-06 00:47:24 20022 收藏 11

分类专栏: 工业摄像头USB 工业摄像头USB,opencv调用多个相机

版权

关于用opencv 设置摄像头读分辨率问题的若干说明

1 问题最初起因

我想充分利用相机高分辨率来提高视角,故用opencv直接设置摄像机分辨率。不幸的我倒霉出现问题。

VideoCapture类读AVI视频可以设置高分辨率1294*964,读摄像头为啥不能设置1294*964,可以设置640*480,也可以设置320*240

有读摄像头设置分辨率1294*964成功的吗,相机要求视场大,距离目标不能太远,要求稳定。所以就用最高分辨率了。
是我相机问题,还是VideoCapture类问题 

 

2 问题表现形式

2.1  ERROT: SampleCB() - buffer sizes do not match 解决方案

cap.set(CV_CAP_PROP_FRAME_WIDTH,1294);

cap.set(CV_CAP_PROP_FRAME_HEIGHT,964);

 

 

摄像头摄取的图片超出了OpenCV的最大限度,造成缓冲区大小不匹配:

解决方法很简单。

    cv::VideoCapture capture(1);

double width=capture.get(CV_CAP_PROP_FRAME_WIDTH);

double height=capture.get(CV_CAP_PROP_FRAME_HEIGHT);

capture.set(CV_CAP_PROP_FRAME_WIDTH,width);

capture.set(CV_CAP_PROP_FRAME_HEIGHT,height);

参考 的http://blog.csdn.net/jia_zhengshen/article/details/9980495

2.2 但没有解决,因为默认为VideoCapture  640*480

 

VideoCapture cap(1);

//double width=cap.get(CV_CAP_PROP_FRAME_WIDTH);

//double height=cap.get(CV_CAP_PROP_FRAME_HEIGHT);

//cap.set(CV_CAP_PROP_FRAME_WIDTH,width);

//cap.set(CV_CAP_PROP_FRAME_HEIGHT,height);

 VideoCapture 或basler 相机默认为640*480 

 

VideoCapture capture(1);//默认为640*480,不可设置再大,可以设置再小

//VideoCapture capture("1.avi");//读取视频1294*964--640*480

//capture.set(CV_CAP_PROP_FRAME_WIDTH,1294);//

//capture.set(CV_CAP_PROP_FRAME_HEIGHT,964);

 

//double width=capture.get(CV_CAP_PROP_FRAME_WIDTH);

//double height=capture.get(CV_CAP_PROP_FRAME_HEIGHT);

//capture.set(CV_CAP_PROP_FRAME_WIDTH,width);

//capture.set(CV_CAP_PROP_FRAME_HEIGHT,height);

 

2.3 但可以设置再小

 

2.4  摄像机采集图像时出现了问题图像是条状

一般使用,摄像机自带的软件,打开摄像机,设置摄像机的分辨率是没有问题的。如果你使用其他软件,打开摄像机采集图像时出现了问题。问题就是您读取得图像是条状。

 

 

这说明你摄像设置的摄像机分辨率是有问题的。

2.5 自带软件 可以,SDK可以 设置高分辨率1294*964

 

3 问题说明

设置摄像机分辨率的问题。最小分辨率,宽度为4,高度为3。以此类推应该为4的倍数或3的倍数。你可以通过videocapture成员函数set来设置,摄像机的分辨率。videocapture默认的情况下为640×480。

3.1

 opencv 可以   4-3 8-6  16-12  32-24  320-240  640-480  960-720 1280-960

4-2,4-6不可以 1288-966 不可以

1284-963可以

 

capture.set(CV_CAP_PROP_FRAME_WIDTH,4);可以显示 但8*6最小

capture.set(CV_CAP_PROP_FRAME_HEIGHT,3);

capture.set(CV_CAP_PROP_FRAME_WIDTH,960);//可以

capture.set(CV_CAP_PROP_FRAME_HEIGHT,720);

 

capture.set(CV_CAP_PROP_FRAME_WIDTH,1284);//最大

capture.set(CV_CAP_PROP_FRAME_HEIGHT,963);

 

 

笔记本摄像头禁用方法

参考http://wenda.so.com/q/1460885382721621?src=140

两种方法实现摄像头的禁用:

1、部分品牌和型号的笔记本电脑有禁用摄像头的快捷键,比如THINKPAD E450,该机使用快捷键FN+F7禁用或者启用摄像头,如图:

2、在设备管理器里禁用摄像头,右键点击“计算机”,选择“管理”,在左侧点击“设备管理器”,可以在图像设备下找到摄像头,右键点击,选择禁用即可,如图:

 

 

 

 

 

opencv读取百万高清摄像头。先设置摄像头分辨率。

 

opencv设置USB免驱动摄像头问题 (liunx)

问题来源:

用笔记本接USB 摄像机opencv代码采集视频数据,保存的视频AVI 提示 错误 [无法解码多工传送的流]

保存avi视频问题(与摄像机分辨率有关)--- VideoWriter 问题

 
  1. capture.set(CV_CAP_PROP_FRAME_WIDTH, videoSize.width);

  2. capture.set(CV_CAP_PROP_FRAME_HEIGHT, videoSize.height);

  3. VideoWriter writer(saveFileName, CV_FOURCC('X','V','I','D'), rate, videoSize,isColor);

1.视频存储为摄像机分辨率的整数倍分

摄像机分辨率为1280*720

视频可以存为-w=1280 -h=720 /-w=640 -h=360-/ -w=320 -h=240-/ ......

视频如果存为-w=1960 -h=1080 /-w=800 -h=600   提示 错误 [无法解码多工传送的流]

在窗口显示没有问题

w=1960 -h=1080 /-w=1280 -h=720

-w=800 -h=600 (不在中心)

 

图片分辨率 imwrite

图片不在中心问题(图片问题比视频少)

在上诉设置中截图保存,得到的分辨率也不一定为设置的分辨率    摄像机分辨率为1280*720

-w=1960 -h=1080/ -w=1000 -h=720 ======= 1280*720

-w=880 -h=600/880 720=================960*540

-w=600 -h=480/640 720 ===============640*480

-w=600 -h=400 ============640*360

 
  1. capture.set(CV_CAP_PROP_FRAME_WIDTH, videoSize.width);

  2. capture.set(CV_CAP_PROP_FRAME_HEIGHT, videoSize.height);

  3. imwrite(fname,frame);//imwrite函数与

 

 

 

 

 

 

另一个摄像机1080P 1920 x 1080分辨率

视频

1920 x 1080   1280 x 720 -ok

图片

-w=660 -h=720/ -w=990 -h=550 /-w=880 -h=600 ======800*600

-w=440 -h=550 ======640*480

 

与硬件摄像机本身分辨率和opencv软件有关. 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值