目录
[1.1 DirectShow插件安装](#1.1 DirectShow插件安装)
[1.2 查找摄像头编号](#1.2 查找摄像头编号)
[1.3 摄像头调用测试](#1.3 摄像头调用测试)
[2.1 detect.py修改](#2.1 detect.py修改)
[2.2 datasets.py修改](#2.2 datasets.py修改)
一、调用海康工业摄像头
现在可直接利用cv2.VideoCapture()接口调用海康机器人工业相机,首先在官网下载机器视觉工业相机客户端MVS【免费】机器视觉工业相机客户端MVS4.3.2版本资源-CSDN文库,进行安装。
1.1 DirectShow插件安装
我安装在D盘里的,但是D盘路径下没有,我在C盘这个路径下找到的,我建议就在C盘运行,因为我复制到D盘运行并不起效,这也导致我尝试了很久,最终在C盘运行后完成。
右键InstallDSSvc_x64.bat,以管理员身份运行,运行后显示终端,然后会自动关闭。至此DirectShow安装完成
1.2 查找摄像头编号
根据路径查找graphedt.exe,然后双击运行graphedt.exe文件。
进入页面后根据顺序点击,所展示的就是你摄像头编号顺序,从0开始计数。(但是我感觉这个顺序不是很准确,我的"0"是USB那个摄像头,"1"才是海康工业相机,仅供参考,大家可以多尝试一下。)
1.3 摄像头调用测试
完成上述工作后,可使用如下代码进行测试,看是否能正确调用工业相机。
python
import cv2
cap = cv2.VideoCapture(1) # 调用摄像头'0'一般是打开电脑自带摄像头,'1'是打开外部摄像头(只有一个摄像头的情况)
if False == cap.isOpened():
print(0)
else:
print(1)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280) # 设置图像宽度
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1024) # 设置图像高度
cap.set(cv2.CAP_PROP_FPS, 20) # 设置帧率
# 显示图像
while True:
ret, frame = cap.read()
# print(ret) #
########图像不处理的情况
frame_1 = cv2.resize(frame, (640, 512))
cv2.imshow("frame", frame_1)
input = cv2.waitKey(1)
if input == ord('q'):
break
cap.release() # 释放摄像头
cv2.destroyAllWindows() # 销毁窗口
运行上面的代码千万要注意修改你图像大小,图像大小可在MVS终端进行查看,在运行测试代码时应断开MVS终端连接,避免冲突。
如果测试代码成功运行,那么基本工作就完成了!!!
二、修改YOLOv5相关参数
2.1 detect.py修改
将parse_opt中的source修改为相机编号,我这里设置为1。
2.2 datasets.py修改
对utils/datasets.py文件进行修改,定位到LoadStreams类,设置图像大小,注意图像大小一定要是32的倍数,同样和MVS终端上要对应。
至此YOLOv5调用海康工业摄像头就完成了!大家有什么问题,欢迎在评论区交流!!