Python使用Opencv打开笔记本电脑摄像头报错解问题及解决


Posted in Python onJune 21, 2022

使用Opencv打开笔记本电脑摄像头报错

近期要做一个下位机上发图像数据给上位机的任务,调试时自己写了一个客户端获取笔记本电脑的摄像头视频数据传输给服务器,然后服务器端显示摄像头视频数据。结果运行时发现客户端报错,视频窗口闪退。

一般获取摄像头图像数据的代码如下:

capture = cv.VideoCapture(0)

但是运行会报错如下:

[ WARN:0] global C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-52oirelq\opencv\modules\videoio\src\cap_msmf.cpp (677) CvCapture_MSMF::initStream Failed to set mediaType (stream 0, (640x480 @ 30) MFVideoFormat_RGB24(codec not found)

网上搜索了一下后发现只要对上述代码稍作修改即可

# 建立图像读取对象
    capture = cv.VideoCapture(0,cv.CAP_DSHOW)  #更改API设置

此处0代表笔记本自带的摄像头,如果有外接摄像头则可以选填1、2等。

Opencv打开摄像头报错问题

CvCapture_MSMF::initStream Failed to set mediaType (stream 0, (640x480 @ 30)

cap=cv2.VideoCapture(0,cv2.CAP_DSHOW)
enum VideoCaptureAPIs {
       CAP_ANY          = 0,            //!< Auto detect == 0
       CAP_VFW          = 200,          //!< Video For Windows (obsolete, removed)
       CAP_V4L          = 200,          //!< V4L/V4L2 capturing support
       CAP_V4L2         = CAP_V4L,      //!< Same as CAP_V4L
       CAP_FIREWIRE     = 300,          //!< IEEE 1394 drivers
       CAP_FIREWARE     = CAP_FIREWIRE, //!< Same value as CAP_FIREWIRE
       CAP_IEEE1394     = CAP_FIREWIRE, //!< Same value as CAP_FIREWIRE
       CAP_DC1394       = CAP_FIREWIRE, //!< Same value as CAP_FIREWIRE
       CAP_CMU1394      = CAP_FIREWIRE, //!< Same value as CAP_FIREWIRE
       CAP_QT           = 500,          //!< QuickTime (obsolete, removed)
       CAP_UNICAP       = 600,          //!< Unicap drivers (obsolete, removed)
       CAP_DSHOW        = 700,          //!< DirectShow (via videoInput)
       CAP_PVAPI        = 800,          //!< PvAPI, Prosilica GigE SDK
       CAP_OPENNI       = 900,          //!< OpenNI (for Kinect)
       CAP_OPENNI_ASUS  = 910,          //!< OpenNI (for Asus Xtion)
       CAP_ANDROID      = 1000,         //!< Android - not used
       CAP_XIAPI        = 1100,         //!< XIMEA Camera API
       CAP_AVFOUNDATION = 1200,         //!< AVFoundation framework for iOS (OS X Lion will have the same API)
       CAP_GIGANETIX    = 1300,         //!< Smartek Giganetix GigEVisionSDK
       CAP_MSMF         = 1400,         //!< Microsoft Media Foundation (via videoInput)
       CAP_WINRT        = 1410,         //!< Microsoft Windows Runtime using Media Foundation
       CAP_INTELPERC    = 1500,         //!< RealSense (former Intel Perceptual Computing SDK)
       CAP_REALSENSE    = 1500,         //!< Synonym for CAP_INTELPERC
       CAP_OPENNI2      = 1600,         //!< OpenNI2 (for Kinect)
       CAP_OPENNI2_ASUS = 1610,         //!< OpenNI2 (for Asus Xtion and Occipital Structure sensors)
       CAP_GPHOTO2      = 1700,         //!< gPhoto2 connection
       CAP_GSTREAMER    = 1800,         //!< GStreamer
       CAP_FFMPEG       = 1900,         //!< Open and record video file or stream using the FFMPEG library
       CAP_IMAGES       = 2000,         //!< OpenCV Image Sequence (e.g. img_%02d.jpg)
       CAP_ARAVIS       = 2100,         //!< Aravis SDK
       CAP_OPENCV_MJPEG = 2200,         //!< Built-in OpenCV MotionJPEG codec
       CAP_INTEL_MFX    = 2300,         //!< Intel MediaSDK
       CAP_XINE         = 2400,         //!< XINE engine (Linux)
     };

附查看摄像头下标:

import cv2
ID = 0
while(1):
    cap = cv2.VideoCapture(ID,cv2.CAP_DSHOW)
    # get a frame
    ret, frame = cap.read()
    if ret == False:
        ID += 1
    else:
        print(ID)
    break

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。


Tags in this post...

Python 相关文章推荐
Python中使用glob和rmtree删除目录子目录及所有文件的例子
Nov 21 Python
python通过BF算法实现关键词匹配的方法
Mar 13 Python
在Python的Django框架中包装视图函数
Jul 20 Python
在Python的Django框架中使用通用视图的方法
Jul 21 Python
解决nohup重定向python输出到文件不成功的问题
May 11 Python
windows下python安装pip图文教程
May 25 Python
Python面向对象之接口、抽象类与多态详解
Aug 27 Python
基于多进程中APScheduler重复运行的解决方法
Jul 22 Python
Python线上环境使用日志的及配置文件
Jul 28 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
Oct 18 Python
python实现图像随机裁剪的示例代码
Dec 10 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
Feb 22 Python
virtualenv隔离Python环境的问题解析
Jun 21 #Python
pd.drop_duplicates删除重复行的方法实现
Jun 16 #Python
使用pd.merge表连接出现多余行的问题解决
Jun 16 #Python
pd.DataFrame中的几种索引变换的实现
Python实战实现爬取天气数据并完成可视化分析详解
pandas时间序列之pd.to_datetime()的实现
Jun 16 #Python
pandas中pd.groupby()的用法详解
Jun 16 #Python
You might like
PHP中的reflection反射机制测试例子
2014/08/05 PHP
javascript模仿msgbox提示效果代码
2008/06/10 Javascript
jquery中常用的SET和GET
2009/01/13 Javascript
用js实现计算加载页面所用的时间
2010/04/02 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
js电话号码验证方法
2015/09/28 Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
2015/10/08 Javascript
JavaScript与java语言有什么不同
2016/09/22 Javascript
Vuex之理解Getters的用法实例
2017/04/19 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
2017/08/03 Javascript
Angular学习教程之RouterLink花式跳转
2018/05/03 Javascript
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
vue的keep-alive中使用EventBus的方法
2019/04/23 Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
2019/06/06 jQuery
小程序实现上下切换位置
2020/11/16 Javascript
Python实现测试磁盘性能的方法
2015/03/12 Python
Python 中 Meta Classes详解
2016/02/13 Python
Python数据库的连接实现方法与注意事项
2016/02/27 Python
Python中几种导入模块的方式总结
2017/04/27 Python
Python插件virtualenv搭建虚拟环境
2017/11/20 Python
Django获取应用下的所有models的例子
2019/08/30 Python
通过Python编写一个简单登录功能过程解析
2019/09/04 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
2020/01/08 Python
python3正则模块re的使用方法详解
2020/02/11 Python
Django跨域资源共享问题(推荐)
2020/03/09 Python
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
opencv实现图像平移效果
2021/03/24 Python
市场营销专业大学生职业生涯规划文
2014/03/06 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
保证金退回承诺函格式
2015/01/21 职场文书
大学生党员个人总结
2015/02/13 职场文书
卫生院义诊活动总结
2015/05/07 职场文书
放假通知怎么写
2015/08/18 职场文书
小学一年级语文教学反思
2016/03/03 职场文书
Python 图片添加美颜效果
2022/04/28 Python
输入框跟随文字内容适配宽实现示例
2022/08/14 Javascript