海康工业相机SDK二次开发(VS+QT+海康SDK+C++)

海康工业相机SDK二次开发(VS+QT+海康SDK+C++)

前言

工业相机在现代制造和工业自动化中扮演了至关重要的角色,尤其是在高精度、高速度检测中。海康威视工业相机以其性能稳定、图像质量高、兼容性强而受到广泛青睐。特别是搞机器视觉的小伙伴们跟海康打交道肯定不在少数,笔者在平常项目中跟海康相关人员对接也是比较多。

那么,本文将全面介绍如何基于海康工业相机的 SDK,使用 Visual Studio 和 Qt 构建上位机程序,逐步实现工业相机的图像采集、显示以及参数配置。

以下是巴斯勒相机开发

巴斯勒工业相机SDK二次开发(VS+QT+巴斯勒SDK+C++)-ZEEKLOG博客

一、海康工业相机简介

1. 工业相机的主要功能

  • 图像采集:捕获高速、高清的静态或动态图像。
  • 高速传输:通过 GigE 或 USB 接口将图像传输到上位机。
  • 稳定运行:设计用于工业环境,具有高可靠性。

2. 海康工业相机优势

  • 高分辨率:支持从 0.3MP 到 50MP 的分辨率。
  • 多接口:支持 USB 3.0、GigE、Camera Link 等多种接口。
  • 全面 SDK 支持:提供多平台(Windows、Linux)的 SDK,支持 C++、C#、Python 等多种语言。

3. 常见型号

包含USB以及GigE 系列:

  • MV-CA060-10GC:分辨率 0.6MP,帧率 100fps。
  • MV-CH120-20UC:分辨率 12MP,帧率 20fps。

二、海康工业相机SDK下载 

1.客户端下载

海康工业相机的sdk是跟随其上位机一起打包安装,我们只需要下载客户端安装即可。进入海康机器人官网,下载中心可以看到包括工业相机、读码器系列产品的客户端程序。我们选择下载最新4.40版本的客户端,按照默认步骤安装即可。

2.SDK浅析 

 安装完客户端后,打开安装目录。在Development文件内可以看见这几个文件夹,其中includes以及Libraries就包含了我们二次开发所需要用到的头文件、库文件以及附加依赖项。

简要说明:

Bin:已封装的可执行程序exe,包括win32、win64

Documentations:开发指南说明

DotNet:.NET Framework框架

Includes:头文件

Libraries:库文件

MVFG:采集卡

Samples:例程,包含c#、python、halcon、c++等多种语言

ThirdPartyPlatformAdapter:第三方平台

 三、项目创建与配置

开发环境操作系统:Windows开发工具:Visual Studio 2022图形界面库:Qt 5.14图像处理库:OpenCV 4.10其他:C++编程语言 

1. 新建 Qt 项目

在 Visual Studio 中创建基于 Qt 的 C++ 项目:

  1. 打开 Visual Studio,点击 新建项目
  2. 选择 Qt Widgets Application,设置项目名称和路径。

2. 添加海康 SDK以及OpenCV

(1) 添加头文件路径

在项目属性中:

  • 右键项目,选择 属性 > C/C++ > 常规 > 附加包含目录
  • 添加 SDK 的 Include 目录路径。

(2) 链接库文件

在项目属性中:

  • 进入 链接器 > 常规 > 附加库目录,添加 SDK 的 Lib 目录。
  • 链接器 > 输入 > 附加依赖项 中添加库文件:

 OpenCV的详细下载以及配置过程可以参考我这篇文章:QT+OpenCV+Zbar实现二维码识别_opencv zbar-ZEEKLOG博客文章浏览阅读705次,点赞16次,收藏17次。通过整合Qt、Zbar和OpenCV,我们实现了一个简单的二维码识别系统。OpenCV提供了图像处理和文件读取的支持,Zbar则负责解码二维码内容。这种组合方案为二维码识别提供了高效的实现途径,特别适合桌面应用和需要图像预处理的项目。t=O83A。_opencv zbarhttps://blog.ZEEKLOG.net/weixin_44765053/article/details/143659239?spm=1001.2014.3001.5502

 四、系统实现

1.ui设计

ui界面仿照bin文件夹里面已经打包好的exe程序设计,实现相关功能。

包括:

QLabel:显示相机图像

QComboBox:显示搜索到的设备列表

QPushButton:搜索设备、开关设备、设置参数等功能

QRadioButton:切换图像采集模式

QCheckBox:软触发使能

2.主要功能实现

海康工业相机SDK主动取流流程如下所示:

详细步骤:

  1. 调用 MV_CC_Initialize() 初始化该SDK的运行环境,以便于提前申请和分配所必须的系统资源。
  2. (可选)调用 MV_CC_EnumDevices() 枚举子网内指定传输协议对应的所有设备。 可通过nTLayerType在结构 MV_CC_DEVICE_INFO() 中获取设备信息。
  3. (可选)打开指定设备前,调用 MV_CC_IsDeviceAccessible() 检查指定设备是否可访问。
  4. 调用 MV_CC_CreateHandle() 创建设备句柄。
  5. 调用 MV_CC_OpenDevice() 打开设备。
  6. (可选)执行以下一个或多个操作以获取/设置相机不同类型的参数。
    • 获取/设置Int类型节点值:调用 MV_CC_GetIntValue() / MV_CC_SetIntValue()
    • 获取/设置Float类型节点值:调用 MV_CC_GetFloatValue() / MV_CC_SetFloatValue()
    • 获取/设置Enum类型节点值:调用 MV_CC_GetEnumValue() / MV_CC_SetEnumValue()
    • 获取/设置Bool类型节点值:调用 MV_CC_GetBoolValue() / MV_CC_SetBoolValue()
    • 获取/设置String类型节点值:调用 MV_CC_GetStringValue() / MV_CC_SetStringValue()
    • 设置Command类型节点值:调用 MV_CC_SetCommandValue()
  7. 图像采集:
    • (可选)调用 MV_CC_SetImageNodeNum() 设置图像缓存节点个数。当获取的图像数超过这个设定值,最早的图像数据会被自动丢弃。
    • 调用 MV_CC_StartGrabbing() 开始取流。
    • 对于原始图像数据,可调用 MV_CC_ConvertPixelTypeEx() 转换图像的像素格式,也可调用 MV_CC_SaveImageEx3() 转换成JPEG或BMP格式的图片,并保存成图片文件。
    • 在应用程序层中重复调用 MV_CC_GetOneFrameTimeout() 来获取图片数据。
  8. 调用 MV_CC_StopGrabbing() 停止采集。
  9. 调用 MV_CC_CloseDevice() 关闭设备。
  10. 调用 MV_CC_DestroyHandle() 销毁句柄并释放资源。
  11. 调用 MV_CC_Finalize() 释放SDK资源。

①初始化SDK

 nRet = MV_CC_Initialize(); if (MV_OK != nRet) { printf("Initialize SDK fail! nRet [0x%x]\n", nRet); break; } 

②枚举设备

 // ch:枚举设备 | en:Enum device MV_CC_DEVICE_INFO_LIST stDeviceList; memset(&stDeviceList, 0, sizeof(MV_CC_DEVICE_INFO_LIST)); nRet = MV_CC_EnumDevices(MV_GIGE_DEVICE | MV_USB_DEVICE | MV_GENTL_CAMERALINK_DEVICE | MV_GENTL_CXP_DEVICE | MV_GENTL_XOF_DEVICE, &stDeviceList); if (MV_OK != nRet) { printf("Enum Devices fail! nRet [0x%x]\n", nRet); break; } if (stDeviceList.nDeviceNum > 0) { for (unsigned int i = 0; i < stDeviceList.nDeviceNum; i++) { printf("[device %d]:\n", i); MV_CC_DEVICE_INFO* pDeviceInfo = stDeviceList.pDeviceInfo[i]; if (NULL == pDeviceInfo) { break; } PrintDeviceInfo(pDeviceInfo); } } else { printf("Find No Devices!\n"); break; } 

③创建设备句柄

 // ch:选择设备并创建句柄 | en:Select device and create handle nRet = MV_CC_CreateHandle(&handle, stDeviceList.pDeviceInfo[nIndex]); if (MV_OK != nRet) { printf("Create Handle fail! nRet [0x%x]\n", nRet); break; } 

④打开设备

 // ch:打开设备 | en:Open device nRet = MV_CC_OpenDevice(handle); if (MV_OK != nRet) { printf("Open Device fail! nRet [0x%x]\n", nRet); break; } 

⑤图像取流

// ch:开始取流 | en:Start grab image nRet = MV_CC_StartGrabbing(handle); if (MV_OK != nRet) { printf("Start Grabbing fail! nRet [0x%x]\n", nRet); break; } 

五、系统效果

1.搜索设备显示在QComboBox并点击打开。

查找打开设备

2.连续、触发模式实现图像采集 

连续、触发采集

3.修改曝光、增益等出图参数

参数修改

 4.保存图片为jpg、bmp等格式

图片保存

顺带说一嘴,这个蜂蜜雀氏不错,冬天泡水喝暖暖的很贴心哈哈哈哈哈。 决非广告,但是背景太假哥给我打钱也不是不阔以!!!

六、总结 

通过本文,完成了从环境配置到功能实现的完整开发流程。在此基础上,可以扩展更多功能,如多相机支持、图像处理、结合halcon、opencv检测等。

如有问题,欢迎评论区讨论!如果本文对您有帮助,请点赞支持!

可以关注我一下子,敬请期待后续功能实现~

Read more

文科生封神!Python+AI 零门槛变现:3 天造 App,指令即收入(附脉脉 AI 沙龙干货)

文科生封神!Python+AI 零门槛变现:3 天造 App,指令即收入(附脉脉 AI 沙龙干货)

🎁个人主页:User_芊芊君子 🎉欢迎大家点赞👍评论📝收藏⭐文章 🔍系列专栏:AI 文章目录: * 一、前言:打破“AI是理科生专属”的迷思 * 二、行业新趋势:为什么文科生学Python+AI更有优势? * 2.1 文科生 vs 理科生:AI时代的核心竞争力对比 * 2.2 核心变现逻辑:靠Python+AI,“指令即收入” * 三、Python+AI零基础学习路径(文科生专属版) * 3.1 学习路径流程图 * 3.2 分阶段学习核心内容(新颖且落地) * 阶段1:Python核心基础(7天)—— 只学“AI开发必备” * 阶段2:AI大模型交互(10天)

By Ne0inhk
移动端也能玩转!OpenClaw iOS/Android 端部署教程,语音唤醒 + 全场景随身 AI 助手

移动端也能玩转!OpenClaw iOS/Android 端部署教程,语音唤醒 + 全场景随身 AI 助手

一、背景与价值:随身AI助手的刚需场景 随着大语言模型技术的普及,全场景AI助手的需求日益增长——无论是通勤途中的语音笔记、户外场景的实时翻译,还是离线环境下的知识查询,移动端随身AI都能解决传统桌面AI的场景局限。OpenClaw作为一款轻量级、可离线运行的开源AI框架,支持语音唤醒、多模态交互等核心功能,完美适配iOS/Android双平台部署,为用户打造真正的随身AI助手。 二、核心原理:OpenClaw移动端部署的技术逻辑 OpenClaw的移动端部署核心是将轻量化大语言模型(如Qwen-2-0.5B-Instruct)、语音唤醒模型(如PicoVoice Porcupine)与移动端推理引擎(如MLKit、TensorFlow Lite)进行整合,实现三大核心流程: 1. 低功耗语音唤醒:通过本地运行的轻量唤醒模型监听关键词,避免持续调用麦克风导致的高功耗; 2. 本地推理加速:利用移动端硬件加速(NNAPI、Core ML)运行量化后的大语言模型,实现离线交互; 3. 跨平台适配:通过Flutter或React Native统一代码底座,同时适配iOS的沙箱

By Ne0inhk
手把手教你 Openclaw 在 Mac 上本地化部署,保姆级教程!接入飞书打造私人 AI 助手

手把手教你 Openclaw 在 Mac 上本地化部署,保姆级教程!接入飞书打造私人 AI 助手

AppOS:始于 Mac,却远不止于 Mac。跟随 AppOS一起探索更广阔的 AI 数字生活。 OpenClaw 是 Moltbot/Clawdbot 的最新正式名称。经过版本迭代与改名后,2026年统一以「OpenClaw」作为官方名称,核心定位是通过自然语言指令,替代人工完成流程化、重复性工作,无需用户掌握编程技能,适配多场景自动化需求。 该项目经历了多次更名,Clawdbot → Moltbot → OpenClaw(当前名称) # OpenClaw 是什么? OpenClaw 是一个开源的个人 AI 助手平台。 简单来说,它是一个可以将你自己的 AI 助手接入你已经在用的即时通讯工具(Telegram、WhatsApp、飞书等)的系统。你可以自己挑选 AI 模型进行连接,添加各种工具和技能(如飞书等),构建专属工作流。说白了如果应用的够好,它就是一个能帮你干活的“

By Ne0inhk
人工智能:自然语言处理在法律领域的应用与实战

人工智能:自然语言处理在法律领域的应用与实战

人工智能:自然语言处理在法律领域的应用与实战 学习目标 💡 理解自然语言处理(NLP)在法律领域的应用场景和重要性 💡 掌握法律领域NLP应用的核心技术(如合同分析、法律文本分类、案例检索) 💡 学会使用前沿模型(如BERT、GPT-3)进行法律文本分析 💡 理解法律领域的特殊挑战(如法律术语、多语言处理、数据隐私) 💡 通过实战项目,开发一个合同分析应用 重点内容 * 法律领域NLP应用的主要场景 * 核心技术(合同分析、法律文本分类、案例检索) * 前沿模型(BERT、GPT-3)在法律领域的使用 * 法律领域的特殊挑战 * 实战项目:合同分析应用开发 一、法律领域NLP应用的主要场景 1.1 合同分析 1.1.1 合同分析的基本概念 合同分析是对合同文本进行分析和处理的过程。在法律领域,合同分析的主要应用场景包括: * 合同审查:自动审查合同(如“条款分析”、“风险评估”

By Ne0inhk