环境

Ubuntu 18.04 aarch64
Python 3.7.15
opencv-python 4.6.0

问题现象

插入USB摄像头后,/dev/video0会正常出现,使用fswebcam也能正常拍摄照片。但运行opencv-python的视频拍摄例程时出错,例程如下:

import numpy as np
import cv2 as cv
cap = cv.VideoCapture(0)
if not cap.isOpened():print("Cannot open camera")exit()
while True:# Capture frame-by-frameret, frame = cap.read()# if frame is read correctly ret is Trueif not ret:print("Can't receive frame (stream end?). Exiting ...")break# Our operations on the frame come heregray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)# Display the resulting framecv.imshow('frame', gray)if cv.waitKey(1) == ord('q'):break
# When everything done, release the capture
cap.release()
cv.destroyAllWindows()

报错信息如下

[ WARN:0@10.618] global /io/opencv/modules/videoio/src/cap_v4l.cpp (1013) tryIoctl VIDEOIO(V4L2:/dev/video0): select() timeout.
Can't receive frame (stream end?). Exiting ...

问题分析

单步调试后,发现出错语句在于

ret, frame = cap.read()

执行该语句后,终端会出现警告信息[ WARN:0@10.618] global /io/opencv/modules/videoio/src/cap_v4l.cpp (1013) tryIoctl VIDEOIO(V4L2:/dev/video0): select() timeout.;并且语句的返回值retFalse,代表执行失败。

解决问题

见招拆招,接下来谷歌这个警告,有如下收获

https://forum.opencv.org/t/videoio-v4l2-dev-video0-select-timeout/8822/5

Hey, I got simmilar issue and solve it with setting format as MJPG int the 4-character code of codec.

from cv2 import cv2camera = cv2.VideoCapture(0)
camera.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'))
status, image = camera.read()
camera.release()

我们在初始化cap对象后,给它额外设置属性”MJPG int 编解码器的 4 字符代码”,即可解决该问题。原理尚不清楚,先记录下过程。

修改后的例程如下

import numpy as np
import cv2 as cv
cap = cv.VideoCapture(0)
cap.set(cv.CAP_PROP_FOURCC, cv.VideoWriter_fourcc('M', 'J', 'P', 'G'))if not cap.isOpened():print("Cannot open camera")exit()
while True:# Capture frame-by-frameret, frame = cap.read()# if frame is read correctly ret is Trueif not ret:print("Can't receive frame (stream end?). Exiting ...")break# Our operations on the frame come heregray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)# Display the resulting framecv.imshow('frame', gray)if cv.waitKey(1) == ord('q'):break
# When everything done, release the capture
cap.release()
cv.destroyAllWindows()

屏幕窗口中将显示灰度处理后的摄像头实时视频。

opencv-python调用摄像头失败 global /io/opencv/modules/videoio/src/cap_v4l.cpp (1000) tryIoctl VIDEOIO(V4L2相关推荐

  1. opencv python 调用摄像头_python+opencv实现摄像头调用的方法

    最近入了一块树莓派,想让其实现摄像头的调用,因此写下此博客备忘 一.树莓派网络的配置 首先,对树莓派进行网络配置,否则就无法进行软件的安装 我们知道,ifconfig命令可以修改ip地址.子网掩码等信 ...

  2. python调用摄像头录制视频_Python OpenCV使用摄像头捕获视频

    我们知道,OpenCV是一款强大的跨平台的计算机视觉库,使用它能完成我们对于图像和视频处理的很多功能,今天,我们使用OpenCV来捕获计算机摄像头的视频. 使用OpenCV捕获摄像头视频 我们知道,视 ...

  3. python调用海康工业相机并用opencv显示(整体实现)

    python语言调用海康机器人(hikrobotics)工业相机 系列文章目录 第一章 python调用海康工业相机并用opencv显示(整体实现) 第二章 python 调用海康工业相机图像获取方式 ...

  4. 调用摄像头使用face_recognition 或 opencv中haar人脸特征实时检测识别人脸、给人脸打马赛克/给人脸贴图

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) OpenCV:python调用摄像头同时使用OpenCV中自带 ...

  5. opencv python 从摄像头获取视频、帧率、分辨率等属性设置和使用

    opencv python 从摄像头获取视频.帧率.分辨率等属性设置和使用 文章目录: 1,为了获取视频,你应该创建一个 VideoCapture 对象.他的参数可以是设备的索引号,或者是一个视频文件 ...

  6. opencv之调用摄像头动态识别二维码

    结合前几篇做的工作,实现一下动态识别二维码 opencv之调用摄像头动态识别二维码

  7. 成功解决cv2.error: OpenCV(4.1.2) /io/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion fa

    成功解决cv2.error: OpenCV(4.1.2) /io/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion fa ...

  8. python调用摄像头转向_教你如何利用python调用摄像头

    这篇文章主要介绍了python调用摄像头的示例代码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 一.打开摄像头 import cv2 import numpy as np def v ...

  9. [ERROR:0] global /build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp (2791) open VIDEOIO/FFMPEG: F

    用模型处理视频时,遇到如下报错,不支持x264编码: [ERROR:0] global /build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp (2 ...

最新文章

  1. c++语言static作用,详解c++中的 static 关键字及作用
  2. 面了一个47的程序员,我很慌...
  3. mysql学_MySQL学习(一)
  4. 程序员成长的三个方法
  5. C++学习笔记-----operator=函数处理自赋值
  6. Python自动化开发学习22-Django下(Form)
  7. qt中数据库操作总结
  8. Hello,Behavior
  9. Web系统开发构架再思考-前后端的完全分离 MVVM
  10. ios人脸照片_iOS10照片人脸识别功能是什么?iOS10照片人脸识别功能使用教程
  11. 因子分析后如何进行聚类分析?
  12. [安卓逆向]安卓逆向-一次简单的静态分析
  13. 每周分享第二期:人工智能对未来工作的影响
  14. SDUST 第四次实验
  15. 【QCA】SDK11.2添加Marvell AQR114c的支持(uboot+linux)
  16. 陶瓷天线是什么,它的工作原理是怎样的?
  17. 国内云计算市场发展行情
  18. 61、Window11+Clion+MinGW32编译MNN使用
  19. 安卓学习日记——APP共享内容
  20. NLP入门+实战必读:一文教会你最常见的10种自然语言处理技术

热门文章

  1. java游戏斗地主_Java斗地主小游戏有序版
  2. 【报告分享】2020中国共享两轮车市场专题分析-易观智库(附下载)
  3. 基于微信小程序的答题系统设计与实现
  4. Pennylane混合经典量子分类器-Mnist分类
  5. 紫光存储面临巨大调整,紫光集团的SSD业务以后靠谁了呢?
  6. 解决Anonymity内部类的迷惑
  7. NVIDIA TensorRT安装包下载分享—— 云盘分享 【TensorRT安装】
  8. 汉中2021年高考成绩查询,汉中市各高中2020年高考喜报成绩一览
  9. asp.net 调用html页面,ASP.NET中HTML页面的访问验证设置方法
  10. 什么是智慧酒店?完整的解决方案教你如何做好智慧酒店