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中实现对list做减法操作介绍
Jan 09 Python
Python中计算三角函数之cos()方法的使用简介
May 15 Python
Python中每次处理一个字符的5种方法
May 21 Python
举例讲解Python设计模式编程中的访问者与观察者模式
Jan 26 Python
Python实现获取照片拍摄日期并重命名的方法
Sep 30 Python
Python中的defaultdict与__missing__()使用介绍
Feb 03 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
Apr 22 Python
Python实现带参数的用户验证功能装饰器示例
Dec 14 Python
Python中最好用的命令行参数解析工具(argparse)
Aug 23 Python
Python列表list操作相关知识小结
Jan 29 Python
Python对称的二叉树多种思路实现方法
Feb 28 Python
Django通过json格式收集主机信息
May 29 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中intval()等int转换时的意外异常情况
2013/06/21 PHP
javascript数组与php数组的地址传递及值传递用法实例
2015/01/22 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
动手学习无线电
2021/03/10 无线电
document.documentElement &amp;&amp; document.documentElement.scrollTop
2007/12/01 Javascript
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
2013/05/13 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
javascript实现二叉树遍历的代码
2017/06/08 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
百度小程序之间的页面通信过程详解
2019/07/18 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
jquery.pager.js实现分页效果
2019/07/29 jQuery
vue的注意规范之v-if 与 v-for 一起使用教程
2019/08/04 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
JavaScript 异步时序问题
2020/11/20 Javascript
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
Pandas中把dataframe转成array的方法
2018/04/13 Python
对Python实现累加函数的方法详解
2019/01/23 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
2019/11/20 Python
Python greenlet和gevent使用代码示例解析
2020/04/01 Python
python 安装移动复制第三方库操作
2020/07/13 Python
CSS3制作酷炫的三维相册效果
2016/07/01 HTML / CSS
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
几道数据库的概念性面试题
2014/05/30 面试题
申报优秀教师材料
2014/12/16 职场文书
安全教育主题班会教案
2015/08/12 职场文书
2015年小学师德师风建设工作总结
2015/10/23 职场文书
Flask搭建一个API服务器的步骤
2021/05/28 Python
Django使用redis配置缓存的方法
2021/06/01 Redis
MySQL 数据类型详情
2021/11/11 MySQL