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网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
Apr 25 Python
使用pdb模块调试Python程序实例
Jun 02 Python
Python实现各种排序算法的代码示例总结
Dec 11 Python
python去掉行尾的换行符方法
Jan 04 Python
Python3实现带附件的定时发送邮件功能
Dec 22 Python
python 获取list特定元素下标的实例讲解
Apr 09 Python
python执行CMD指令,并获取返回的方法
Dec 19 Python
Python pip 安装与使用(安装、更新、删除)
Oct 06 Python
Python实现剪刀石头布小游戏(与电脑对战)
Dec 31 Python
Python实现图像的垂直投影示例
Jan 17 Python
Python request中文乱码问题解决方案
Sep 17 Python
python将下载到本地m3u8视频合成MP4的代码详解
Nov 24 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
PHP4.04简明安装
2006/10/09 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
2016/12/12 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
ext监听事件方法[初级篇]
2008/04/27 Javascript
javascript 对表格的行和列都能加亮显示
2008/12/26 Javascript
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
js动态生成Html元素实现Post操作(createElement)
2015/09/14 Javascript
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
2019/06/18 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
微信内置开发 iOS修改键盘换行为搜索的解决方案
2019/11/06 Javascript
[53:10]Secret vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[28:05]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第一场 10月30日
2020/10/31 DOTA
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
深入解析Python中的线程同步方法
2016/06/14 Python
Python实现PS滤镜碎片特效功能示例
2018/01/24 Python
Django 实现下载文件功能的示例
2018/03/06 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
解决tensorflow/keras时出现数组维度不匹配问题
2020/06/29 Python
CSS类名支持中文命名的示例
2014/04/04 HTML / CSS
DELPHI面试题研发笔试试卷
2015/11/08 面试题
心理健康活动总结
2014/04/30 职场文书
房地产营销活动策划方案
2014/09/15 职场文书
2014年纪委工作总结
2014/12/05 职场文书
2015政治思想表现评语
2015/03/25 职场文书
大学生实习证明
2015/06/16 职场文书
中秋节主题班会
2015/08/14 职场文书
Python如何导出导入所有依赖包详解
2021/06/08 Python
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers
Java实现二分搜索树的示例代码
2022/03/17 Java/Android
python处理json数据文件
2022/04/11 Python
Mongodb 迁移数据块的流程介绍分析
2022/04/18 MongoDB