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将人民币转换大写的脚本代码
Feb 10 Python
python多线程编程方式分析示例详解
Dec 06 Python
按日期打印Python的Tornado框架中的日志的方法
May 02 Python
Python的dict字典结构操作方法学习笔记
May 07 Python
Python快速从注释生成文档的方法
Dec 26 Python
Python中的并发处理之asyncio包使用的详解
Apr 03 Python
python 字典有序并写入json文件过程解析
Sep 30 Python
Python安装whl文件过程图解
Feb 18 Python
Python如何批量获取文件夹的大小并保存
Mar 31 Python
30行Python代码实现高分辨率图像导航的方法
May 22 Python
python打包生成so文件的实现
Oct 30 Python
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
May 28 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的call_user_func传reference引发的思考
2010/07/23 PHP
php数组函数序列之in_array() 查找数组值是否存在
2011/10/29 PHP
PHP获取当前url的具体方法全面解析
2013/11/26 PHP
php 字符串压缩方法比较示例
2014/01/23 PHP
php递归创建目录的方法
2015/02/02 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
2017/07/13 PHP
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
基于jQuery的固定表格头部的代码(IE6,7,8测试通过)
2010/05/18 Javascript
一个JS的日期格式化算法示例
2013/07/31 Javascript
js关于命名空间的函数实例
2015/02/05 Javascript
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
2016/01/19 Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
2016/03/01 Javascript
三种带箭头提示框总结实例
2016/06/14 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
JS仿京东移动端手指拨动切换轮播图效果
2020/04/10 Javascript
jquery实现折叠菜单效果【推荐】
2017/03/08 Javascript
利用js canvas实现五子棋游戏
2020/10/11 Javascript
python共享引用(多个变量引用)示例代码
2013/12/04 Python
Python中类型关系和继承关系实例详解
2015/05/25 Python
TensorFlow实现checkpoint文件转换为pb文件
2020/02/10 Python
Python RabbitMQ实现简单的进程间通信示例
2020/07/02 Python
python读取excel进行遍历/xlrd模块操作
2020/07/12 Python
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
Agoda.com官方网站:便宜预订全球酒店,高达80%的折扣
2018/04/04 全球购物
试述DBMS的主要功能
2016/11/13 面试题
工商管理专业应届生求职信
2013/11/04 职场文书
职业教育毕业生求职信
2013/11/09 职场文书
《中华少年》教学反思
2014/02/15 职场文书
爽歪歪广告词
2014/03/20 职场文书
医院信息公开实施方案
2014/05/09 职场文书
死亡诗社观后感
2015/06/05 职场文书
求职自荐信该如何书写?
2019/06/24 职场文书
python爬虫selenium模块详解
2021/03/30 Python
nginx简单配置多个server的方法
2021/03/31 Servers
java如何实现socket连接方法封装
2021/09/25 Java/Android