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使用CMD模块更优雅的运行脚本
May 11 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
Jun 21 Python
Golang与python线程详解及简单实例
Apr 27 Python
Python实现运行其他程序的四种方式实例分析
Aug 17 Python
python机器学习之神经网络(二)
Dec 20 Python
Python可变参数*args和**kwargs用法实例小结
Apr 27 Python
OpenCV+python手势识别框架和实例讲解
Aug 03 Python
Python装饰器模式定义与用法分析
Aug 06 Python
Python BS4库的安装与使用详解
Aug 08 Python
python 移动图片到另外一个文件夹的实例
Jan 10 Python
python实现车牌识别的示例代码
Aug 05 Python
python中用ctypes模拟点击的实例讲解
Nov 26 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 include任意文件或URL介绍
2014/04/29 PHP
php实现获取文章内容第一张图片的方法
2014/11/04 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
2014/11/19 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
thinkphp5框架实现的自定义扩展类操作示例
2019/05/16 PHP
JS 自定义函数缺省值的设置方法
2010/05/05 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
jQuery事件用法详解
2016/10/06 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
vue better scroll 无法滚动的解决方法
2018/06/07 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
Vue.extend 编程式插入组件的实现
2019/11/18 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
python通过文件头判断文件类型
2015/10/30 Python
浅谈python字典多键值及重复键值的使用
2016/11/04 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
2017/02/13 Python
python实现多线程行情抓取工具的方法
2018/02/28 Python
python3+requests接口自动化session操作方法
2018/10/13 Python
对pytorch的函数中的group参数的作用介绍
2020/02/18 Python
Python用来做Web开发的优势有哪些
2020/08/05 Python
Html5游戏开发之乒乓Ping Pong游戏示例(二)
2013/01/21 HTML / CSS
常用的HTML5列表标签
2017/06/20 HTML / CSS
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
人事主管的岗位职责
2013/11/16 职场文书
工作失误检讨书范文大全
2014/01/13 职场文书
中式面点餐厅创业计划书
2014/01/29 职场文书
甜品蛋糕店创业计划书范文
2014/02/06 职场文书
应届毕业生自荐信例文
2014/02/26 职场文书
八一建军节感言
2014/02/28 职场文书
中国梦演讲稿教师篇
2014/04/23 职场文书
诉讼授权委托书
2014/10/15 职场文书
初中生物教学反思
2016/02/20 职场文书
MYSQL主从数据库同步备份配置的方法
2021/05/26 MySQL