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常用列表数据结构小结
Aug 06 Python
Python过滤函数filter()使用自定义函数过滤序列实例
Aug 26 Python
对Python发送带header的http请求方法详解
Jan 02 Python
python如何获取当前文件夹下所有文件名详解
Jan 25 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
Apr 05 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 Python
使用Python进行体育竞技分析(预测球队成绩)
May 16 Python
简单了解python 邮件模块的使用方法
Jul 24 Python
python如果快速判断数字奇数偶数
Nov 13 Python
Python字典底层实现原理详解
Dec 18 Python
超全Python图像处理讲解(多模块实现)
Apr 13 Python
Django前后端分离csrf token获取方式
Dec 25 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/01 无线电
PHP 得到根目录的 __FILE__ 常量
2008/07/23 PHP
php魔术变量用法实例详解
2014/11/13 PHP
php 实现进制相互转换
2016/04/07 PHP
PHP正则表达式入门教程(推荐)
2016/05/18 PHP
php使用yield对性能提升的测试实例分析
2019/09/19 PHP
javascript 常用关键字列表集合
2007/12/04 Javascript
看了就知道什么是JSON
2007/12/09 Javascript
一个tab标签切换效果代码
2009/03/27 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
node.js中的path.extname方法使用说明
2014/12/09 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
详解javascript中的事件处理
2015/11/06 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
JavaScript浏览器对象之一Window对象详解
2016/06/03 Javascript
浅析script标签中的defer与async属性
2016/11/30 Javascript
js实现自动轮换选项卡
2017/01/13 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
快速解决vue-cli不能初始化webpack模板的问题
2018/03/20 Javascript
vue百度地图 + 定位的详解
2019/05/13 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
[01:02:18]VGJ.S vs infamous Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
Python迭代器与生成器基本用法分析
2018/07/26 Python
python打印直角三角形与等腰三角形实例代码
2019/10/20 Python
俄罗斯Sportmarket体育在线商店:用于旅游和户外活动
2019/11/12 全球购物
C面试题
2015/10/08 面试题
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
关于建议书的格式范文
2014/05/20 职场文书
2014年精神文明工作总结
2014/12/23 职场文书
员工辞职信范文大全
2015/05/12 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android
vue整合百度地图显示指定地点信息
2022/04/06 Vue.js