Python使用Opencv打开笔记本电脑摄像头报错解问题及解决

作者:skye_fly 时间:2022-12-02 10:32:01 

使用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

来源:https://blog.csdn.net/skye_fly/article/details/108974819

标签:Python,Opencv,笔记本,摄像头
0
投稿

猜你喜欢

  • 解决csv.writer写入文件有多余的空行问题

    2022-12-05 06:54:28
  • 详解python中的生成器、迭代器、闭包、装饰器

    2023-06-25 19:39:57
  • 基于python的mysql复制工具详解

    2023-06-24 01:08:28
  • 如何基于python生成list的所有的子集

    2021-09-24 07:31:31
  • python绘制评估优化算法性能的测试函数

    2022-10-18 20:13:20
  • mysql查询优化之100万条数据的一张表优化方案

    2024-01-13 20:10:04
  • python 获得任意路径下的文件及其根目录的方法

    2022-02-02 17:32:15
  • Python3中常见配置文件写法汇总

    2022-01-21 11:14:07
  • Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取

    2022-07-09 19:47:48
  • 对Python 中矩阵或者数组相减的法则详解

    2024-01-02 01:29:17
  • Django Admin实现上传图片校验功能

    2021-12-12 02:27:03
  • 用python 绘制茎叶图和复合饼图

    2023-08-04 10:34:54
  • python中mechanize库的简单使用示例

    2021-05-22 14:32:12
  • python跨文件使用全局变量的实现

    2022-03-31 17:24:36
  • 基于numpy中的expand_dims函数用法

    2023-02-25 23:24:20
  • python中watchdog文件监控与检测上传功能

    2022-03-17 13:46:58
  • Python反爬实战掌握酷狗音乐排行榜加密规则

    2021-05-29 08:05:57
  • 如何将计数器的值赋给一个变量?

    2009-12-03 20:02:00
  • 基于SQL Server OS的任务调度机制详解

    2024-01-14 22:17:59
  • 返回页面顶部top按钮通过锚点实现(自写)

    2024-04-10 10:47:23
  • asp之家 网络编程 m.aspxhome.com