python 调试USB摄像头记录

本文详细记录了使用Python和OpenCV调试USB摄像头的过程,包括在不同环境中打包exe文件遇到的问题,如Opencv依赖、Win7兼容性、摄像头ID查询和解决CvCapture_MSMF报错等。
部署运行你感兴趣的模型镜像

公司一款有一款模拟摄像头,一直以来以手持CVBS显示器查看图像,非常不便,于是网上找来CVBS转USB模组,连接起来实现在电脑端查看图像。因摄像头是定焦镜头,检测人员需对调整的焦距进行确认,人眼判别误差较大,既然数据可以通过USB在电脑端显示于是有了使用PYTHON+OPENCV实现图像质量简单的判别。

调试环境使用spyder3.10,在IDE内下载opencv库,调用摄像头,对每帧图像进行灰度处理及计算方差,把方差值显示在图像上。

import cv2

#设置摄像头的ID
data = int(input("please enter the number 0 or 1 or 2: "))
capture=cv2.VideoCapture(data)

while true:
    ret, frame = capture.read()

    img2gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)      #转化为灰度图
    imageVar = cv2.Laplacian(img2gray, cv2.CV_64F).var()   #计算出方差,并最后返回。
    cv2.putText(frame, 'IQA: %.2f' %imageVar, (20, 50), cv2.FONT_HERSHEY_SIMPLEX, 1,     (55,255,155), 2)        #在图像上设置文本格式;
    print('IQA: %.2f' %imageVar)    #显示方差值

    #设置显示分辨率  此分辨率是显示窗口的分辨率,不是摄像头输出的分辨率  
    frame = cv2.resize(frame, (1024, 768))     
    cv2.imshow("video",frame)
    if cv2.waitKey(100) == 27: #按ESC退出
        break 

video_demo()
cv2.destroyAllWindows()

以上为主要代码,测试后可行,需要在其他同事电脑上使用,需封装为exe 文件。

使用pyintaller

pip install pyinstaller

使用cmd 打开到编写的python程序文件夹,因需要在控制台输入参数,代码如下: 

pyinstaller -F temp.py #带控制台

打包成功,在python程序所在文件夹内生成2个文件夹和一个.spec文件,其中把dist内是生成的exe文件,复制到python程序同一目录下,运行闪退,网上查找方法,

使用cmd 运行exe文件,提示CV2引用错误,原来是电脑端没有安装OPENCV,以为spyder安装就行。

电脑下载安装opencv,安装,重新打包,运行exe ,功能正常。

把文件打包发给测试组同事测试,反馈缺少相关dll文件,同事电脑是win7,网上查找原因,python3.10不支持win7,只有python3.7及以前版本可以。

重新下载python3.7安装,设置环境变量

把..\python37及..\python37\scripts添加进用户变量 path,同时上移至最上(因系统已有python310)

 在系统变量同样操作;

在spyder 工具,偏好 ,python解释器设置为python3.7 

运行程序,可行,重新打包,发给同事,可以运行,因同事电脑是台式电脑,无摄像头,输入摄像头编号0,不行,1,不行,2~9都不行。。

查询资料,也没有搞懂摄像头ID是如何生成的,在设备管理器内查询的摄像头VID与PID和摄像头ID也对不上。

网上继续找资料,在本站 python获取所有可用摄像头(id + 名称)可用于opencv_python获取摄像头列表_babybin的博客-优快云博客 一文中,博主封装了一个库,可以用来查询摄像头ID,在PyCameraList · PyPI 查询,pip 安装,无法安装,下载   PyCameraList-1.0.0-cp36-cp36m-win_amd64.whl   放入到..\python37\scripts文件夹内,

在cmd 打开到..\python37\scripts文件夹,运行以下代码

pip install PyCameraList-1.0.0-cp36-cp36m-win_amd64.whl 

又出错了,python3.7安装不了,总不能再安装个3.6环境吧。。。

注:2023年6.15日在以上连接下载,当时只有3.6版本,6.16日编写此博文,再访问时,已经有了3.6-3.10的所有本版本,上传日期正是2023.6.15日。。。

在网上继续找资料,在本站博主 提供的文章找到解决办法。python获取所有可用摄像头的库--pycameralist安装教程,解决 *** is not a supported wheel on this platform_python 查看摄像头列表_younger14的博客-优快云博客

首先在本环境下安装cython:pip install cython
2.然后去下载pycameralist的源码,这里给出 pycameralist源码-gitee
3.找到下载下来的zip源码,名称应该是【py-camera-list-project-master.zip】
4.pip install D:\PyLib\py-camera-list-project-master.zip
5.等待安装完成

根据方法在第4步又有问题了,网上查找,原来是缺少VSC++相关文件,下载vs_BuildTools,安装时选择C++,完成后,再次运行安装上述库,终于成功。

运行代码测试,自己电脑可行,在同事电脑测试,又有问题

继续网上查资料, 在本站博主的博文中,找到解决方式

opencv打开摄像头报错:CvCapture_MSMF::initStream Failed to set mediaType (stream 0, (640x480 @ 30) 解决办法及相关内容_cvcapture_msmf::initstream failed to select stream_计算机刘老师的博客-优快云博客d

在cv2.VideoCapture 函数加入cv2.CAP_DSHOW参数:

capture=cv2.VideoCapture(data,cv2.CAP_DSHOW)  

然后重新打包,在同事电脑测试,终于可以看到图像。

 

 

 CVBS信号转USB摄像头模块,因摄像头是12V供电,JLC打样了一个5V转12V的小电路板背上去;

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值