关于用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 问题

    capture.set(CV_CAP_PROP_FRAME_WIDTH, videoSize.width);capture.set(CV_CAP_PROP_FRAME_HEIGHT, videoSize.height);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

capture.set(CV_CAP_PROP_FRAME_WIDTH, videoSize.width);
capture.set(CV_CAP_PROP_FRAME_HEIGHT, videoSize.height);
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软件有关.

【计算机视觉】关于用opencv 设置摄像头读分辨率问题的若干说明相关推荐

  1. python获取摄像头型号_python opencv设置摄像头分辨率以及各个参数的方法_python

    下面就为大家分享一篇python opencv设置摄像头分辨率以及各个参数的方法,具有很好的参考价值,希望对大家有所帮助.一起过来看看吧 1,为了获取视频,你应该创建一个 VideoCapture 对 ...

  2. python opencv设置摄像头分辨率以及各个参数的方法

    摘自:http://www.cppcns.com/jiaoben/python/224278.html python opencv设置摄像头分辨率以及各个参数的方法 发布时间: 2019-04-21 ...

  3. opencv设置摄像头获取图片大小

    opencv设置摄像头获取图片大小方法如下: cap = cv2.VideoCapture(0) #打开默认摄像头采集图像width = 640 #定义摄像头获取图像宽度 height = 480 # ...

  4. opencv设置摄像头分辨率不生效

    opencv vs2019 videoCapture set分辨率1600*1200 设置为1600-1200,读取时变成了1280-960,在linux上是正常的,到了win10不知怎得就设置不了了 ...

  5. Python OpenCV设置摄像头分辨率

    在创建完 VideoCapture 对象并成功打开摄像头后,可以使用函数 video.get(propId) 来获得视频的一些参数信息.这里propId 可以是 0 到 18 之间的任何整数.每一个数 ...

  6. opencv获取摄像头帧率分辨率

    python opencv 获取摄像头分辨率,设置摄像头分辨率 import cv2cap = cv2.VideoCapture(0)#先设置参数,然后读取参数cap.set(3,1280) # wi ...

  7. 关于OpenCV打开摄像头默认分辨率是640*480的问题

    在使用OpenCV打开2k USB摄像头时,发现VideoCapture实例化的对象捕捉的视频帧的分辨率总是640×480640 \times 480640×480,而我的摄像头硬件分辨率最高可以支持 ...

  8. 【Qt】QCamera查询和设置摄像头的分辨率

    查询和设置摄像头分辨率的API QCamera::supportedViewfinderResolutions() QCamera::setViewfinderSettings() 设置摄像头帧率.比 ...

  9. OpenCv设置摄像头参数/获得摄像头参数值

    希望大家学会分享,你懂得别人未必懂,大家一起学习. 先看效果图再上代码,这是所获取的摄像头参数 这是修改了曝光值后的效果: 温馨提示:想要修改这些参数之前请一定一定一定要记住你摄像头参数的初始值,因为 ...

最新文章

  1. 基于 gulp 的 fancybox 源码压缩
  2. 文件系统管理 之 Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍...
  3. 浅谈Iframe和FRAME的区别
  4. C语言中动态数组的作用,C语言实现动态数组
  5. 【学习笔记】CO-PA 简介
  6. Java基础——Java反射机制及IoC原理
  7. Visual Studio 2010 中JS注释制作
  8. 作者:吴东亚(1972-),女,中国电子技术标准化研究院信息技术研究中心高级工程师、副主任,国家OID注册中心副主任。...
  9. vsftpd 可以登录,无法写入和上传
  10. HDU 4983 Goffi and GCD(数论)
  11. JAVA打印功能总结文档
  12. 台式计算机看网络电视,台式电脑无线投屏到电视
  13. ArcGIS教程 - 5 地图可视化
  14. 分享一个响应式电商网站前端模板
  15. 51单片机原理以及接口技术(四)--80C51的程序设计
  16. tif数据84坐标经纬度转Unity3D坐标
  17. (第六章)hive之查询
  18. 想考华为认证HCIP-RoutingSwitching,应该看什么书?
  19. ble协议栈从零开始七(linklayer 之 privacy)
  20. 什么软件可以编辑PDF文件?编辑工具分享

热门文章

  1. 双击打开Excel文件要反应很久之后才能打开,先开excel程序,再打开文件就很快的解决办法...
  2. ffmpeg超时设置
  3. 手机中html文件能不能删除,如何彻底删除手机里的文件,并且不能被恢复?
  4. 上传声音 微信小程序_图文详解微信小程序中调用录音功能和音频播放的方法...
  5. SpringCloud的实用篇
  6. 参考文献是会议论文应该什么格式?
  7. Fabric官方教程(release 2.2)翻译及总结——链码的生命周期管理
  8. 使用Python的Scrapy框架编写web爬虫的简单示例
  9. ai cs6和ps cs6 破解
  10. 英语学习——新婚贺词