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 布尔操作实现代码
Mar 23 Python
Python中使用动态变量名的方法
May 06 Python
python实现的守护进程(Daemon)用法实例
Jun 02 Python
python通过加号运算符操作列表的方法
Jul 28 Python
详解Python函数可变参数定义及其参数传递方式
Aug 02 Python
Python基于PyGraphics包实现图片截取功能的方法
Dec 21 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 Python
Python实现的读写json文件功能示例
Jun 05 Python
python自定义函数实现最大值的输出方法
Jul 09 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
Sep 16 Python
Python3实现配置文件差异对比脚本
Nov 18 Python
python-jwt用户认证食用教学的实现方法
Jan 19 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 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
php 文件上传代码(限制jpg文件)
2010/01/05 PHP
php使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
php实现汉字验证码和算式验证码的方法
2015/03/07 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
多广告投放代码 推荐
2006/11/13 Javascript
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
js 判断js函数、变量是否存在的简单示例代码
2014/03/04 Javascript
NodeJS制作爬虫全过程
2014/12/22 NodeJs
jQuery实现冻结表头的方法
2015/03/09 Javascript
浅谈JavaScript 的执行顺序
2015/08/07 Javascript
浅谈node.js中async异步编程
2015/10/22 Javascript
JavaScript遍历Json串浏览器输出的结果不统一问题
2016/11/03 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
2017/11/30 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
es6新特性之 class 基本用法解析
2018/05/05 Javascript
JavaScript中关于base64的一些事
2019/05/06 Javascript
Vue实现Layui的集成方法步骤
2020/04/10 Javascript
在Python中用split()方法分割字符串的使用介绍
2015/05/20 Python
Centos下实现安装Python3.6和Python2共存
2018/08/15 Python
python中的json总结
2018/10/11 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
python如果快速判断数字奇数偶数
2019/11/13 Python
Python使用os.listdir和os.walk获取文件路径
2020/05/21 Python
Django视图、传参和forms验证操作
2020/07/15 Python
Python爬虫新手入门之初学lxml库
2020/12/20 Python
高清屏下canvas重置尺寸引发的问题的解决
2019/10/14 HTML / CSS
Html5定位终极解决方案
2020/02/05 HTML / CSS
广告设计应届生求职信
2014/03/01 职场文书
2015年新农合工作总结
2015/03/30 职场文书
大队委员竞选稿
2015/11/20 职场文书
2016年秋季运动会通讯稿
2015/11/25 职场文书
win11怎么用快捷键锁屏? windows11锁屏的几种方法
2021/11/21 数码科技
pt-archiver 主键自增
2022/04/26 MySQL