1. 项目概述:工业视觉系统的Qt+Halcon多相机采集方案
在工业自动化检测领域,多相机协同采集与实时图像处理一直是核心需求。最近完成的一个项目,需要同时控制多台海康威视MV-CE系列工业相机,通过千兆网口采集图像后,在Qt框架中实时转换为Halcon变量进行处理和显示。这个方案最终实现了:
- 支持最多8台相机并行工作(实测帧率稳定在25fps/台)
- 自动识别黑白/彩色相机并适配不同采集模式
- 将海康SDK的原始数据流无缝转换为Halcon的HObject格式
- 封装为独立DLL模块,可快速集成到现有Halcon项目中
关键难点在于处理不同相机型号的像素格式差异,以及保证图像从采集到显示的线程安全。实测发现MV-CA013-20GC型号相机在YUV422格式下,直接转换Halcon变量会有色偏问题。
2. 硬件选型与环境搭建
2.1 海康工业相机选型要点
根据项目需求,我们对比了以下型号特性:
| 型号 | 分辨率 | 帧率 | 接口 | 黑白/彩色 | 适用场景 |
|---|---|---|---|---|---|
| MV-CA013-20GC | 1280x1024 | 20fps | GigE | 彩色 | 一般检测 |
| MV-CE060-10GM | 3072x2048 | 10fps | GigE | 黑白 | 高精度测量 |
| MV-CE200-10GM | 5472x3648 | 8fps | GigE | 彩色 | 大视野检测 |
最终选择MV-CA013-20GC作为主力机型,因其在价格、性能、兼容性方面表现均衡。特别注意:
- 黑白相机需要关闭SDK的自动增益功能
- 千兆网络交换机需支持IGMP Snooping协议
- 每台相机建议独立IP段(如192.168.1.10~192.168.1.17)
2.2 开发环境配置
bash复制# Qt 5.15.2安装(Windows)
./qt-opensource-windows-x86-5.15.2.exe --script qt_install_script.qs
# Halcon 20.11环境变量设置
export HALCONROOT=/opt/halcon-20.11
export PATH=$PATH:$HALCONROOT/bin/x64-linux
关键组件版本要求:
- 海康SDK:MVS-2.1.0_x64
- Qt:≥5.12(需包含Multimedia模块)
- Halcon:≥18.11(需有图像采集接口)
3. 核心架构设计与实现
3.1 多线程采集模型
采用生产者-消费者模式设计:
cpp复制class CameraThread : publi
