
Qt联合海康威视工业相机采集,在线转Halcon变量并显示(独立封装多相机支持,黑
白与彩色相机通用)
工业视觉项目里经常遇到这样的需求:多个相机同时采集,实时转成Halcon变量做处理,还得保证
界面不卡。最近用Qt+海康SDK搞了套方案,支持4台GigE相机同时跑,彩色黑白自适应,实测1080P下帧率能
到25fps不丢帧。
先说相机管理模块。海康的MV-CA系列相机通过MVS SDK控制,这里咱们封装了个相机管家类:
```cpp
class HikCameraManager : public QObject
{
Q_OBJECT
public:
explicit HikCameraManager(QObject *parent = nullptr);
// 枚举可用相机
QVector<CameraInfo> enumerateCameras();
// 启动指定索引的相机
bool startCamera(int index, ImageFormat format = MONO8);
signals:
void frameReceived(const HalconCpp::HObject &image, uint64_t timestamp);
private:
// 相机实例容器
QMap<int, HikCameraWrapper*> m_cameras;
// 图像格式自动识别
ImageFormat detectFormat(const unsigned char* data);
};
```
重点在图像格式自适应这块。海康SDK取到的图像数据头里藏着关键信息,咱们得解析出位深和通
道数:
```cpp
ImageFormat HikCameraManager::detectFormat(const unsigned char* data)