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系列之浅谈pickle模块封装和拆封数据对象的方法
May 23 Python
Python操作CouchDB数据库简单示例
Mar 10 Python
python使用matplotlib绘图时图例显示问题的解决
Apr 27 Python
python+pandas生成指定日期和重采样的方法
Apr 11 Python
对python使用http、https代理的实例讲解
May 07 Python
python 定义给定初值或长度的list方法
Jun 23 Python
python mac下安装虚拟环境的图文教程
Apr 12 Python
django admin.py 外键,反向查询的实例
Jul 26 Python
Apache部署Django项目图文详解
Jul 30 Python
Django Xadmin多对多字段过滤实例
Apr 07 Python
什么是Python包的循环导入
Sep 08 Python
python 学习GCN图卷积神经网络
May 11 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
绿山咖啡和蓝山咖啡
2021/03/04 新手入门
php array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
有关JSON以及JSON在PHP中的应用
2010/04/09 PHP
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
smarty内置函数foreach用法实例
2015/01/22 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
javascript instanceof 内部机制探析
2010/10/15 Javascript
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
AngularJS学习笔记之基本指令(init、repeat)
2015/06/16 Javascript
JS中innerHTML和pasteHTML的区别实例分析
2016/06/22 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
Angular4.0动画操作实例详解
2019/05/10 Javascript
vue回到顶部监听滚动事件详解
2019/08/02 Javascript
JS相册图片抖动放大展示效果的示例代码
2021/01/29 Javascript
[00:20]DOTA2荣耀之路7:-ah fu-抢盾
2018/05/31 DOTA
Python实现的当前时间多加一天、一小时、一分钟操作示例
2018/05/21 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
Python学习笔记之字符串和字符串方法实例详解
2019/08/22 Python
Python 随机按键模拟2小时
2020/12/30 Python
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
有abstract方法的类一定要用abstract修饰吗
2016/03/14 面试题
安全生产目标管理责任书
2014/07/25 职场文书
企业员工集体活动方案
2014/08/17 职场文书
2014年信息宣传工作总结
2014/12/18 职场文书
就业推荐表自我评价范文
2015/03/02 职场文书
开除员工通知
2015/04/22 职场文书
2016父亲节感恩话语
2015/12/09 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书
golang如何去除多余空白字符(含制表符)
2021/04/25 Golang
vue3中provide && inject的使用
2021/07/01 Vue.js
CSS实现切角+边框+投影+内容背景色渐变效果
2021/11/01 HTML / CSS
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL
Python安装及建立虚拟环境的完整步骤
2022/06/25 Servers