大恒水星工业相机开发笔记(一):相机基本介绍、安装GalaxyViwer软件和搭建SDK基础环境

前言

  大恒水星工业相机SDK开发。

大恒水星

介绍

  大恒水星,全称大恒图像 MERCURY 系列,是大恒图像推出的紧凑型面阵 CMOS 工业相机,分为多个子系列,常见有 MER-U3(USB3.0)、MER-GE(千兆网),也包含部分 USB2.0 老款机型。

  它定位中端普惠型工业相机,主打轻量化、低功耗、即插即用,不是那种超高分辨率、超高速的旗舰机型,而是面向绝大多数常规视觉场景的 "主力款"。

  机身非常小巧,金属外壳,体积紧凑,可以轻松安装在狭小工位、机械臂末端、显微镜光路里面,不会占用大量空间。

特点

丰富型号,覆盖绝大多数常规需求

  水星型号矩阵非常齐全,分辨率从几十万像素到千万级都有,帧率梯度丰富:

  • 低像素高帧率:适合运动检测、流水线测速、飞拍;
  • 中高像素:尺寸测量、缺陷检测、OCR、定位;
  • 支持彩色/黑白版本选择;黑白相机信噪比更高、灵敏度更好;彩色适合外观质检、颜色分拣。
      传感器选用成熟的 CMOS,全局快门和卷帘快门版本分开。重点提醒:做运动物体抓拍,一定要选全局快门;静止拍摄、文档扫描、静态外观检测,卷帘快门性价比更高。

接口友好,上手门槛低

  • USB3.0(MER-U3):最受个人、实验室、小项目欢迎,直接插电脑,不需要额外采集卡,布线简单;缺点是长线传输受限,一般建议 5 米以内。
  • 千兆网(MER-GE):适合工厂现场,网线可以拉很长,抗干扰更强,适合自动化产线、多相机同步,搭配交换机组网,是集成项目常客。
    配套的 SDK、驱动、示例程序全部免费开放,支持Windows、Linux,同时提供C/C++、C#、Python、VB等开发例程。同时兼容Halcon、VisionPro、OpenCV、LabVIEW 等几乎主流视觉软件,这也是它出圈的关键。不用自己啃底层,拿到手就能跑图。

性价比突出,国产靠谱选择

  对比同规格进口相机,水星价格友好很多,对于学生课题、初创团队、小批量改造项目非常友好。大恒是国内老牌视觉厂商,售后和技术支持在国内比较方便,样件申请、技术答疑、维修渠道成熟。

配套齐全,生态成熟

  除相机本体,市面上配套的镜头、转接环、光源、支架非常好找。大恒自带的 Galaxy 上位机软件,可以直接预览图像、调节曝光、增益、触发模式、ROI、白平衡,不需要写一行代码就能调试相机,新手调试、现场打样效率很高。

  支持软触发、硬触发,可以接入外部光电传感器、PLC,满足流水线同步采集需求,支持 ROI 感兴趣区域裁剪,裁剪之后还能提升帧率。

典型应用场景(所有工业相机都差不多了...)

  水星不是万能相机,但在下面这些场景里非常合适:

  • 高校与科研:机器视觉课程、图像处理实验、显微成像、光学实验;
  • 自动化检测:零件尺寸测量、毛刺缺陷检测、印刷品缺印、二维码条码识别;
  • 分拣与定位:物料定位、机械手引导、颜色分选;
  • 安防与采集:静态图像采集、文档扫描、模具监控;
  • 教学与打样:视觉工作室、个人爱好者搭建 OpenCV、Halcon 学习平台。

SDK下载

  官网:自行搜索,无法贴了已经(无法过审)

  下载sdk:

  
  
  

安装sdk软件

  解压,双击:

  
  
  
  随便选了,等待安装完成。

  

Galaxy Viwer软件

  

提取SDK搭建Qt基础模板Demo

步骤一:确认带了开发sdk

  下载软件的时候,是否包含了开发sdk需要确认(下载好像会有说明),或者安装好后看,安装好包含sdk如下:

  
  

步骤二:新建Qt工程

  Qt5.15.2,msvc2019x64版本。

  
  

步骤三:部署sdk

  
  有冗余,调整下内部文件夹:

  
  模块引入sdk:

  

步骤四:Demo代码

  没有直接的参考流程,提供的手册是详细按环节一个一个说明,需要自行学习查看,这里提供一个简单枚举设备的代码Demo:

cpp 复制代码
void GalaxyICamManager::testEnv()
{
    // 初始化设备库
    IGXFactory::GetInstance().Init();
    // 枚举相机设备
    GxIAPICPP::gxdeviceinfo_vector vectorDeviceInfo;
    IGXFactory::GetInstance().UpdateDeviceList(1000, vectorDeviceInfo);
    if(vectorDeviceInfo.size() <= 0)
    {
        LOG << "if(vectorDeviceInfo.size() <= 0)";
        return;
    }

    for(int index = 0; index < vectorDeviceInfo.size(); index++)
    {
        IGXDeviceInfo *pIGXDeviceInfo = &vectorDeviceInfo[index];
#if 1
        LOG << "***********************************************";
        LOG << "<Vendor Name:   " << pIGXDeviceInfo->GetVendorName() << ">";
        LOG << "<Model Name:    " << pIGXDeviceInfo->GetModelName() << ">";
        LOG << "<Serial Number: " << pIGXDeviceInfo->GetSN() << ">";
        if(pIGXDeviceInfo->GetDeviceClass() == GX_DEVICE_CLASS_GEV)
        {
            LOG << "<Interface: GigE Vision >";
            LOG << "IP Address: " << pIGXDeviceInfo->GetIP() << ">";
            LOG << "MAC Address: " << pIGXDeviceInfo->GetMAC() << ">";
        }else if(pIGXDeviceInfo->GetDeviceClass() == GX_DEVICE_CLASS_USB2)
        {
            LOG << "<Interface: USB2.0 >";
        }else if(pIGXDeviceInfo->GetDeviceClass() == GX_DEVICE_CLASS_U3V)
        {
            LOG << "<Interface: USB3 Vision(U3V) >";
        }
#else
        // 通过SN打开相机设备
        GXSmartPtr<IGXDevice> pDevice = IGXFactory::GetInstance().OpenDeviceBySN(vectorDeviceInfo[0].GetSN(), GX_ACCESS_EXCLUSIVE);
        // 获取相机属性控制对象
        GXSmartPtr<IGXFeatureControl> pRemoteControl = pDevice->GetRemoteFeatureControl();

        //选择默认参数组
        pRemoteControl->GetEnumFeature("UserSetSelector")->SetValue("Default");
        //加载参数组
        pRemoteControl->GetCommandFeature("UserSetLoad")->Execute();

        LOG << "***********************************************";
        LOG << "<Vendor Name:   " << pDevice->GetDeviceInfo().GetVendorName() << ">";
        LOG << "<Model Name:    " << pDevice->GetDeviceInfo().GetModelName() << ">";
        LOG << "<Serial Number: " << pDevice->GetDeviceInfo().GetSN() << ">";
        //关闭相机设备
        pDevice->Close();
#endif
    }
    //关闭设备库
    IGXFactory::GetInstance().Uninit();
}

步骤五:运行结果

  暂时没有到货,然后该品牌相机 也不像海康一样有虚拟机相机的软件功能,暂时无法测试,待后续有了回头补上。

  

模块化

  

galaxyICamManager.pri

pri 复制代码
INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD

HEADERS += \
    $$PWD/galaxyICamCommon.h \
    $$PWD/GalaxyICamManager.h

SOURCES += \
    $$PWD/GalaxyICamManager.cpp

# 大恒水星sdk
GALAXY_SDK_DIR = $$PWD/galaxy_3.2.2604.8131_sdk_2.6.2608.9131_development
INCLUDEPATH += $$GALAXY_SDK_DIR/inc

LIBS += -L$$GALAXY_SDK_DIR/lib/x64/
LIBS += -lGxIAPICPPEx


QMAKE_CFLAGS += /utf-8
QMAKE_CXXFLAGS += /utf-8

工程模板v1.0.0