当前位置: 首页 > news >正文

使用OpenCV-Python外接摄像头打不开问题

使用OpenCV-Python外接摄像头打不开

情况描述

使用OpenCV-Python打开摄像头常用的代码是这样的:

import cv2 as cv
cap = cv.VideoCapture(0)
flag = cap.isOpened()
while (flag):
    ret, frame = cap.read()

笔者采用这种方法来打开电脑自带的摄像头是没有问题的,但是近期购入的一个新的摄像头,发现采用这种方式打开会提示:

 WARN:0] global C:\projects\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (1113) SourceReaderCB::OnReadSample videoio(MSMF): OnReadSample() is called with error status: -1072875772
[ WARN:0] global C:\projects\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (1125) SourceReaderCB::OnReadSample videoio(MSMF): async ReadSample() call is failed with error status: -1072875772
[ WARN:1] global C:\projects\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (1159) CvCapture_MSMF::grabFrame videoio(MSMF): can't grab frame. Error: -1072875772
[ WARN:1] global C:\projects\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (674) SourceReaderCB::~SourceReaderCB terminating async callback

经查阅资料
在这里插入图片描述
找到了问题所在,采用默认的API控制出错。

解决方法

在VideoCapture后加上cv.CAP_DSHOW
修正后代码如下:

import cv2 as cv


cap = cv.VideoCapture(1,cv.CAP_DSHOW)  #更改API设置
flag = cap.isOpened()

index = 1
while (flag):
    ret, frame = cap.read()
    frame = cv.flip(frame, 1)  # 水平翻转
    cv.imshow("Capture_Paizhao", frame)
    k = cv.waitKey(1) & 0xFF
    if k == ord('s'):  # 按下s键,进入下面的保存图片操作
        cv.imwrite(r"F:\PyCharm\Camera calibration\Aruco_Identify\0" + str(index) + ".jpg", frame)
        print(cap.get(3))
        print(cap.get(4))
        print("save" + str(index) + ".jpg successfuly!")
        print("-------------------------")
        index += 1
    elif k == ord('q'):  # 按下q键,程序退出
        break
cap.release()
cv.destroyAllWindows()

相关文章:

  • 访问站点提示:Service Unavailable,应用程序池的状况提示为:未指定错误
  • Python-OpenCV调用摄像头并保存视频
  • 通过Robots.txt禁止搜索引擎收录的方法
  • Python-OpenCV棋盘检测
  • 表格处理:换行还是不换行?
  • Ubuntu20.04安装指南及初步环境配置(超级详细)包含[ROS Noetic、Terminator、Pycahrm等常用工具安装]
  • 升级了
  • 《动手学深度学习》(PyTorch版) - 专栏说明
  • 流程分析师——不错的选择
  • 《动手学深度学习》(PyTorch版)避坑总结 - 1【d2lzh_pytorch模块导入方法详解及提示错误的解决方法】
  • 《动手学深度学习》(PyTorch版)避坑总结 - 2 【3.2.1代码未能画出散点图,并且也未报错】
  • Netbeans一个巨奇怪的问题
  • 《动手学深度学习》(PyTorch版)避坑总结 - 3 【运行3.5.1节代码后不显示图像】
  • Windows Live Search For Mobile vs. Google Maps Mobile
  • 《动手学深度学习》(PyTorch版)避坑总结 - 4 【对3.7.2节没必要代码的清除】
  • 收藏网友的 源程序下载网
  • (三)从jvm层面了解线程的启动和停止
  • [数据结构]链表的实现在PHP中
  • Angular Elements 及其运作原理
  • CAP 一致性协议及应用解析
  • java概述
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Puppeteer:浏览器控制器
  • Vue.js-Day01
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 对象管理器(defineProperty)学习笔记
  • 聚类分析——Kmeans
  • 前端相关框架总和
  • 使用权重正则化较少模型过拟合
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 微信小程序实战练习(仿五洲到家微信版)
  • 一、python与pycharm的安装
  • 责任链模式的两种实现
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (三)c52学习之旅-点亮LED灯
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)Neo4j下载安装以及初次使用
  • (转)c++ std::pair 与 std::make
  • (转)linux下的时间函数使用
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • *p++,*(p++),*++p,(*p)++区别?
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .NET Framework 4.6.2改进了WPF和安全性
  • .Net Web窗口页属性
  • .NET 使用配置文件
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NetCore 如何动态路由