YOLOV8环境下调用海康工业相机实时检测

本文介绍了如何在研究生课题中使用YOLOV8在工业相机MV-CS200-10GC环境下进行实时检测,包括相机安装、MVS软件配置及Python代码实现,详细展示了从训练模型到实际应用的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人初学小白,研究生课题需要,需要用到工业相机进行实时检测,查阅各位大佬的代码后为了实现在YOLOV8环境下配合工业相机进行实时检测,本文通过YOLOv8在自定义数据集下训练出权重文件,在电脑连接工业相机的基础上调用权重文件进行实时检测。

1.工业相机前期准备

本文采用的工业相机为MV-CS200-10GC,需要提前在海康机器人工业相机官网安装MVS软件

网址:海康机器人-让机器更智能,让智能更普惠

2、安装相关插件

如图在安装环境下找到MVDSS2以管理员身份安装

3、相关代码

import cv2
from ultralytics import YOLO

# 加载 训练 模型
model = YOLO("yolov8n.pt")
# 获取摄像头内容,参数 0 表示使用默认的摄像头
cap = cv2.VideoCapture(1)

if False == cap.isOpened():
    print(0)
else:
    print(1)

cap.set(cv2.CAP_PROP_FRAME_WIDTH, 5472)  # 设置图像宽度
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 3648)  # 设置图像高度
cap.set(cv2.CAP_PROP_FPS, 15)  # 设置帧率

# 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

while cap.isOpened():
    success, frame = cap.read()  # 读取摄像头的一帧图像
    frame_1 = cv2.resize(frame, (640, 512))
    if success:
        model.predict(source=frame_1, show=True)  # 对当前帧进行目标检测并显示结果
    # 通过按下 'q' 键退出循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()  # 释放摄像头资源
cv2.destroyAllWindows()  # 关闭OpenCV窗口
内容概要:本文详细介绍了使用海康威视工业相机YOLOv5进行目标检测的完整解决方案。首先,文章阐述了系统的整体架构,包括海康相机SDK用于图像采集,YOLOv5模型通过LibTorch在C++中进行推理,并将整个流程封装成DLL供上位机调用。接着,文中深入探讨了图像采集过程中需要注意的细节,如回调函数处理、触发模式配置以及BGR到RGB的格式转换。对于推理部分,则强调了DLL接口的设计、内存管理和性能优化措施,如双缓冲队列、GPU加速预处理和共享内存的使用。此外,还讨论了不同平台上(如MFC、Qt、LabVIEW)的具体调用方式及其注意事项。最后,针对常见的部署问题提供了具体的解决方案,如电磁干扰导致的相机断连、模型误检和内存泄漏等问题。 适合人群:从事工业视觉系统开发的技术人员,尤其是有一定C++编程基础并熟悉深度学习框架的研究者。 使用场景及目标:适用于需要在工业环境中实施高效、稳定的目标检测任务的企业和个人开发者。通过本方案,可以在保持高精度的同时提高处理速度,降低延迟,确保系统的可靠性和鲁棒性。 其他说明:文中不仅提供了详细的代码示例和技术细节,还分享了许多实践经验,帮助读者更好地理解和应用这套方案。同时,作者也指出了一些潜在的风险点和应对策略,使读者能够更加从容地面对实际项目中的挑战。
### 集成YOLO模型海康威视工业相机 为了实现YOLO模型海康威视工业相机的集成,可以采用C++封装DLL的方式调用YOLOv5进行推理,并利用海康SDK完成图像采集。此方法适用于多种开发环境,如MFC、Qt以及LabVIEW等。 #### 图像采集流程 通过海康SDK初始化并配置相机参数,启动视频流获取功能。对于每一帧捕获到的画面,将其转换为适合YOLO输入的数据格式。具体操作如下: ```cpp // 初始化海康相机 NET_DVR_Init(); LONG lUserID = NET_DVR_Login_V30(&struDeviceInfo); if (lUserID < 0) { printf("Login error\n"); } else { // 开始预览或抓图 } ``` #### 数据预处理 将来自海康相机的原始图像数据调整至YOLO所需的尺寸和通道数。通常情况下,这涉及到缩放和平滑滤波等步骤以确保最佳识别效果[^1]。 #### 加载YOLO模型 创建一个独立模块负责加载预先训练好的YOLO权重文件,并定义前向传播函数用于执行实际预测任务。这里假设使用的是ONNX Runtime作为运行时引擎来加速计算过程。 ```cpp Ort::Session session(env, model_path.c_str(), sess_options); auto input_tensors = CreateInputTensorsFromImage(image_data); auto output_tensors = RunInference(session, input_tensors); ``` #### 结果解析 最后一步是从网络输出张量中提取边界框坐标及其他属性信息,进而绘制标注后的可视化结果返回给用户界面显示出来。 ```python for i in range(num_detections): box = boxes[i] score = scores[i] class_id = classes[i] if score > threshold: draw_bounding_box_and_label(image, box, class_name[class_id], score) ``` 上述代码片段展示了如何从检测结果集中筛选有效项并将它们呈现在原图之上。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值