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 相关文章推荐
一个检测OpenSSL心脏出血漏洞的Python脚本分享
Apr 10 Python
Python类属性与实例属性用法分析
May 09 Python
详解Python迭代和迭代器
Mar 28 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
Oct 12 Python
python 类详解及简单实例
Mar 24 Python
python requests爬取高德地图数据的实例
Nov 10 Python
Python使用dict.fromkeys()快速生成一个字典示例
Apr 24 Python
pandas dataframe的合并实现(append, merge, concat)
Jun 24 Python
Python实现将蓝底照片转化为白底照片功能完整实例
Dec 13 Python
Django Path转换器自定义及正则代码实例
May 29 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
Jun 30 Python
python logging模块的使用
Sep 07 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的ob_start();控制您的浏览器cache!
2007/02/14 PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
2010/05/04 PHP
使用图灵api创建微信聊天机器人
2015/07/23 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
详解 PHP加密解密字符串函数附源码下载
2015/12/18 PHP
php原生数据库分页的代码实例
2019/02/18 PHP
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
基于jquery的可多选的下拉列表框
2012/07/20 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
innerText 使用示例
2014/01/23 Javascript
jquery动态分页效果堪比时光网
2014/09/25 Javascript
jQuery模拟新浪微博首页滚动效果的方法
2015/03/11 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
原生js实现addClass,removeClass,hasClass方法
2016/04/27 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
JavaScript中的连续赋值问题实例分析
2019/07/12 Javascript
Vue发布项目实例讲解
2019/07/17 Javascript
JS实现点餐自动选择框(案例分析)
2019/12/10 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
2020/08/04 Javascript
使用JavaScript实现贪吃蛇游戏
2020/09/29 Javascript
详解Python中的Cookie模块使用
2015/07/06 Python
Python程序中设置HTTP代理
2016/11/06 Python
pytorch 数据集图片显示方法
2018/07/26 Python
python 实现分组求和与分组累加求和代码
2020/05/18 Python
python 爬虫网页登陆的简单实现
2020/11/30 Python
意大利简约的休闲品牌:Aspesi
2018/02/08 全球购物
不用游标的SQL语句有哪些
2012/09/07 面试题
夜大毕业生自我评价分享
2013/11/10 职场文书
大学英语演讲稿(中英文对照)
2014/01/14 职场文书
三年级学生评语
2014/04/23 职场文书
作文评语大全
2014/04/23 职场文书
大学班长竞选稿
2015/11/20 职场文书
机械生产实习心得体会
2016/01/22 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
如何给HttpServletRequest增加消息头
2021/06/30 Java/Android