关于opencv读取摄像头的未解之谜

    前段时间做项目需要用opencv读usb摄像头的视频数据,遇到很多无解的问题,虽然后来没有用到,但是还是记录下来,也许以后就知道答案了呢。

1、无论摄像头的实际分辨率是多少,opencv读进来的视频分辨率都是640*480大小的,网上说可以用内置的函数修改分辨率的大小,我试了下下面的函数语句,虽然分辨率确实变成了720p,但是清晰度并没有提升甚至有些模糊,看起来像是强行插值扯大的,没有真正得到清晰度720p的图像。

	cap.set(CV_CAP_PROP_FRAME_WIDTH, 1280);//不起作用
	cap.set(CV_CAP_PROP_FRAME_HEIGHT, 720);

     另外,看网上有资料说可以修改opencv的默认值,找到了设置640*480的地方在modules/highgui/src/cap_v4l.cpp,但是修改之后编译并没有什么变化,不知道编译的方式是不是不对。

2、无论摄像头的帧率多少,用opencv内置的函数读到的帧率永远是0.

	double fps = cap.get(CV_CAP_PROP_FPS);//帧率总是得到0

    后来用内置语句对帧率进行设置,没有明显的变化,但是再次输出时,帧率的确是1.也许是显示的原因,设置waitkey=1000ms就可以真正达到一秒一帧。

cap.set(CV_CAP_PROP_FPS, 1);

3、最大的谜团是关于循环读摄像头,最终会内存泄漏这个问题。解决这个问题引申出很多其他问题,比如openc

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值