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 相关文章推荐
利用PyInstaller将python程序.py转为.exe的方法详解
May 03 Python
python生成excel的实例代码
Nov 08 Python
Python中sort和sorted函数代码解析
Jan 25 Python
Python自定义线程池实现方法分析
Feb 07 Python
python3学生名片管理v2.0版
Nov 29 Python
Appium+python自动化怎么查看程序所占端口号和IP
Jun 14 Python
python如何统计代码运行的时长
Jul 24 Python
Python求平面内点到直线距离的实现
Jan 19 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
Jun 15 Python
python获取百度热榜链接的实例方法
Aug 25 Python
python操作toml文件的示例代码
Nov 27 Python
使用Python获取字典键对应值的方法
Apr 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中使用CURL伪造来路抓取页面或文件
2011/05/04 PHP
php中的比较运算符详解
2013/10/28 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
PHP新特性之字节码缓存和内置服务器
2017/08/11 PHP
javascript中的对象创建 实例附注释
2011/02/08 Javascript
js确定对象类型方法
2012/03/30 Javascript
js加密解密字符串可自定义密码因子
2014/05/13 Javascript
js控制元素显示在屏幕固定位置及监听屏幕高度变化的方法
2015/08/11 Javascript
浅析BootStrap中Modal(模态框)使用心得
2016/12/24 Javascript
Js apply方法详解
2017/02/16 Javascript
JavaScript实现快速排序的方法分析
2018/01/10 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
2019/08/15 Javascript
微信小程序实现上传图片裁剪图片过程解析
2019/08/22 Javascript
Python中__name__的使用实例
2015/04/14 Python
浅谈flask中的before_request与after_request
2018/01/20 Python
Python 实现12306登录功能实例代码
2018/02/09 Python
在windows下Python打印彩色字体的方法
2018/05/15 Python
Python对象属性自动更新操作示例
2018/06/15 Python
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
python使用numpy读取、保存txt数据的实例
2018/10/14 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
使用Python调取任意数字资产钱包余额功能
2019/08/15 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
Python jieba结巴分词原理及用法解析
2020/11/05 Python
python Pexpect模块的使用
2020/12/25 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
人力管理专业毕业生求职信
2014/02/27 职场文书
新教师培训方案
2014/06/08 职场文书
小学秋季运动会报道稿
2014/09/30 职场文书
2014年英语教师工作总结
2014/12/03 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书
Python中for后接else的语法使用
2021/05/18 Python
用Python将GIF动图分解成多张静态图片
2021/06/11 Python
使用Ajax实现无刷新上传文件
2022/04/12 Javascript
APP界面设计技巧和注意事项
2022/04/29 杂记