opencv摄像头闪退问题总结,解决一闪而过的问题

#opencv摄像头闪退问题总结,解决播放视频时一闪而过的问题

总结:
1.视频解码问题

出现这种情况一般是你的电脑里缺少XviD codec(视频编解码器),也就是opencv打开视频之前必须将视频解码以得到可处理的数据,因此解决方案:

视频一闪而过如果程序没有错误一般可能有两个问题
1.需要下载安装XviD codec,http://www.xvidmovies.com/codec/(翻不了的同学可以在这里下载
2.你打开的文件是avi而且必须是XviD编码的视频文件,如果不是就要用视频转换器转换一下 http://zhidao.baidu.com/question/316469686.html

2.摄像头反应慢问题
以下方法之一(二选一):
1.在视频显示的while里,加入Sleep(300); //Sleep函数包含在windows.h里
2.设置waitkey,例如waitKey(30)。通常也是放在while循环里,一般放在imread()等具有显示作用的函数后面

3.waitKey返回值问题
waitkey(30) 如果不按键的时候是返回 oxff,这个无符号就是255,有符号就是-1
windows vs 的环境默认了这个为非符号数 即255

解决方案:把原始代码中循环读取帧的
if (waitKey(30)>=0) break;
改为
if (waitKey(30) != 255) break;
或者把waitkey的返回值用有符号数去读取。

4.动态链接库DLL的问题
把 opencv_ffmpeg_64.dll位于{opencv}\sources\3rdparty\ffmpeg 和
opencv_ffmpegxxx_64.dll位于{opencv}\build\x64\vc15\bin
复制到了项目文件下(xxx表示你当前的opencv版本,同理64和32对应着你的平台是64位 or 32位)

官方提示:
来自OpenCV官网手册
http://docs.opencv.org/2.4/modules/highgui/doc/user_interface.html?highlight=waitkey
Note:
This function(imshow) should be followed by waitKey function which displays the image for specified milliseconds. Otherwise, it won’t display the image. For example, waitKey(0) will display the window infinitely until any keypress (it is suitable for image display). waitKey(25) will display a frame for 25 ms, after which display will be automatically closed. (If you put it in a loop to read videos, it will display the video frame-by-frame)

9102年更新
1.遇到terminating async callback 然后直接退出的情况的,都是没有加上下面这个:

cap.release()
cv2.destroyAllWindows()
#imshow显示不出画面时,加上:
if cv2.waitKey(1) & 0xFF == ord('q'):
    break

参考博客:

https://blog.csdn.net/u012724120/article/details/47010267
https://blog.csdn.net/c272588756/article/details/77650285
https://blog.csdn.net/u013006675/article/details/75425917

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值