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 流程控制实例代码
Sep 25 Python
Python Deque 模块使用详解
Jul 04 Python
wxPython的安装与使用教程
Aug 31 Python
Python3自动签到 定时任务 判断节假日的实例
Nov 13 Python
linux环境中没有网络怎么下载python
Jul 07 Python
基于Python2、Python3中reload()的不同用法介绍
Aug 12 Python
python异步Web框架sanic的实现
Apr 27 Python
python爬取代理IP并进行有效的IP测试实现
Oct 09 Python
Pycharm配置lua编译环境过程图解
Nov 28 Python
Python实现对word文档添加密码去除密码的示例代码
Dec 29 Python
python随机打印成绩排名表
Jun 23 Python
利用Python实时获取steam特惠游戏数据
Jun 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
简单PHP上传图片、删除图片实现代码
2010/05/12 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
php中AES加密解密的例子小结
2014/02/18 PHP
PHP基于自定义类随机生成姓名的方法示例
2017/08/05 PHP
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
JS清空多文本框、文本域示例代码
2014/02/24 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
2017/12/29 Javascript
使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置
2018/11/02 Javascript
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
vant IndexBar实现的城市列表的示例代码
2019/11/20 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
2020/11/12 Javascript
详解python中requirements.txt的一切
2017/03/03 Python
Python实现脚本锁功能(同时只能执行一个脚本)
2017/05/10 Python
Python实现的单向循环链表功能示例
2017/11/10 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
Python GUI编程完整示例
2019/04/04 Python
python五子棋游戏的设计与实现
2019/06/18 Python
解决Django Static内容不能加载显示的问题
2019/07/28 Python
python自动化测试之异常及日志操作实例分析
2019/11/09 Python
如何利用Python写个坦克大战
2020/11/18 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
Omio法国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/13 全球购物
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
越南综合购物网站:Lazada越南
2019/06/10 全球购物
西班牙鞋子和箱包在线销售网站:zapatos.es
2020/02/17 全球购物
幼儿园校车司机的岗位职责
2014/01/30 职场文书
旺仔牛奶广告词
2014/03/20 职场文书
老公保证书范文
2014/04/29 职场文书
医院护士工作检讨书
2014/10/26 职场文书
2016七夕情人节感言
2015/12/09 职场文书
WINDOWS下安装mysql 8.x 的方法图文教程
2022/04/19 MySQL