Python使用Opencv打開筆記本電腦攝像頭報(bào)錯(cuò)解問題及解決
使用Opencv打開筆記本電腦攝像頭報(bào)錯(cuò)
近期要做一個(gè)下位機(jī)上發(fā)圖像數(shù)據(jù)給上位機(jī)的任務(wù),調(diào)試時(shí)自己寫了一個(gè)客戶端獲取筆記本電腦的攝像頭視頻數(shù)據(jù)傳輸給服務(wù)器,然后服務(wù)器端顯示攝像頭視頻數(shù)據(jù)。結(jié)果運(yùn)行時(shí)發(fā)現(xiàn)客戶端報(bào)錯(cuò),視頻窗口閃退。
一般獲取攝像頭圖像數(shù)據(jù)的代碼如下:
capture = cv.VideoCapture(0)
但是運(yùn)行會(huì)報(bào)錯(cuò)如下:
[ 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)
網(wǎng)上搜索了一下后發(fā)現(xiàn)只要對(duì)上述代碼稍作修改即可
# 建立圖像讀取對(duì)象 ? ? capture = cv.VideoCapture(0,cv.CAP_DSHOW) ?#更改API設(shè)置
此處0代表筆記本自帶的攝像頭,如果有外接攝像頭則可以選填1、2等。
Opencv打開攝像頭報(bào)錯(cuò)問題
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) };
附查看攝像頭下標(biāo):
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
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
最新PyCharm 2021.3.1永久激活碼(親測(cè)有效)
今天又有朋友反應(yīng)PyCharm2021提示激活碼過期了,下面再為大家分享一個(gè)2022年01月08日更新PyCharm2021最新激活碼,需要的朋友可以參考下2020-11-11Python實(shí)現(xiàn)快速多線程ping的方法
這篇文章主要介紹了Python實(shí)現(xiàn)快速多線程ping的方法,實(shí)例分析了Python多線程及ICMP數(shù)據(jù)包的發(fā)送技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07如何使用Python 抓取和優(yōu)化所有網(wǎng)站圖像
我發(fā)布了一個(gè)通過FTP自動(dòng)優(yōu)化新圖像的教程。這次我們將抓取整個(gè)網(wǎng)站,并在本地優(yōu)化我們遇到的圖像,按URL組織,怎么來操作呢,下面跟隨小編一起學(xué)習(xí)使用Python 抓取和優(yōu)化所有網(wǎng)站圖像的方法,感興趣的朋友一起看看吧2023-02-02Python?return函數(shù)返回值類型和幫助函數(shù)使用教程
這篇文章主要為大家介紹了Python?return函數(shù)返回值類型和幫助函數(shù)使用教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06使用Python快速打開一個(gè)百萬行級(jí)別的超大Excel文件的方法
這篇文章主要介紹了使用Python快速打開一個(gè)百萬行級(jí)別的超大Excel文件的方法,本文通過實(shí)例代碼給大家介紹的非常想詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03Python3讀取Excel數(shù)據(jù)存入MySQL的方法
今天小編就為大家分享一篇Python3讀取Excel數(shù)據(jù)存入MySQL的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05PyCharm中的terminal運(yùn)行從PS修改成cmd方式
這篇文章主要介紹了PyCharm中的terminal運(yùn)行從PS修改成cmd方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06