MVS同时读取多个二维码

二维码使用已经非常普遍,名片上有,手机支付也可以拍照二维码支付。有些商品

包装甚至出现多个二维码, 一次拍照,同时读取多个二维码也非常常见。笔者这次

讲述如何使用机器视觉大师一次读取多个二维码的过程。

 

感兴趣的读者可以尝试使用机器视觉大师自己操作,可以实现仓库产品入库或出库

的信息登记,免除手工操作的麻烦和不便。

 

下图是一个包装上的二维码实图。

 

 

 二维码是一个规范的图,算法描述可以找到公开的标准文档,笔者将直接切入主题,不

啰嗦其它无关的事情。

 

添加二维码识别算子

抓取含条码图的视场图,切换到实时检测模式,添加二维码识别算子。下面是详细的操作过程。

一、点击菜单控件” ->“插入”->条码”->”读取二维条码添加到视场,将算子拖动到条码位置。

二、双击该算子,进行参数设置和模板学习。显示参数设置窗口。

 

设置查找力度为1, 最小宽度为244,最小高度为244。(注意:条码最小宽度和高度应该

根据实际的图像进行设置)。

  

编写脚本

 

点击菜单模式”->”编辑脚本”, 弹出编辑脚本对话框。 输入脚本。

 

上面的语句解释如下:

如果二维条码算子读取到1个以上条码,那么输出第一个条码的内容到输出框。

 

检测运行

点击菜单相机”->”测量运行”,进入检测状态。放置条码条码位置相差不要太大, 4-5毫米

偏差是没有问题的, 角度旋转在45度内没有问题),然后点击下一个按钮完成一次

自动多条码读取

 

 

条码通过输出窗口输出如下:

 

 

实际应用建议

 由于有多个二维码,笔者测试使用了500万像素的相机,保证满足图像的清晰度要求。感兴趣的读者
自行检测的时候,如果碰到读取失败的情况,可以先查看相机的分辨率是否足够,图像光照是否良好,然

后才调整读取力度参数(范围:0.1-1.0)。



本文测试使用的机器视觉大师版本为4.1.161101


最新版多多摄像头大师(机器视觉大师)下载地址:http://www.hdy.net.cn/softshare/ddcam.htm

技术交流QQ群: 295860595  该群文件空间即时更新多多摄像头大师最新版本,下载速度更快


### 海康威视 MVS 虚拟相机 SDK 图片读取方法 要实现通过海康威视 MVS 虚拟相机读取图片,可以按照以下方式进行开发和配置: #### 1. **虚拟相机初始化** 在启动虚拟相机之前,需确保已安装并运行 `MVS` 客户端工具。通过桌面快捷方式打开 `VirtualCamTool` 后,在操作界面上选择所需的相机型号,并点击“添加虚拟相机”。如果遇到提示 `sdk` 被占用的情况,请关闭其他可能正在使用的 `MVS` 实例后再尝试[^1]。 #### 2. **预览模式设置** 对于新创建的虚拟相机,默认情况下其预览画面会基于固定路径下的图片文件进行循环显示。开发者可以通过修改该路径中的图片来控制虚拟相机所展示的内容。具体而言: - 默认路径通常位于系统指定目录下(如文档或临时文件夹),可查阅官方文档确认确切位置。 - 将符合需求的图像放入此路径中,以便虚拟相机能够自动加载这些资源用于循环播放。 #### 3. **SDK 开发环境搭建** 为了进一步定制化处理逻辑或者集成到更大的项目框架内,建议采用支持 C++ 的 IDE 平台配合海康威视提供的 SDK 进行二次开发。以下是典型步骤概述: - 下载对应版本号的海康威视工业相机 SDK (`MVS_SDK`) 及配套库文件[^2]。 - 使用 Qt 或 Visual Studio 创建工程,并引入必要的头文件与动态链接库 (.dll) 文件。 示例如下展示了如何利用 OpenCV 和 Hikvision 提供的功能接口访问摄像头数据流: ```cpp #include <iostream> #include "HCNetSDK.h" #include <opencv2/opencv.hpp> using namespace std; using namespace cv; int main() { // 初始化海康SDK NET_DVR_Init(); // 登录设备 (此处假设为本地虚拟摄像机) int nPort = NET_DVR_Login_V30("192.168.x.x", 8000, "admin", "password"); if(nPort < 0){ cout << "Login failed!" << endl; return -1; } // 获取实时视频帧 LONG lRealHandle = NET_DVR_RealPlay_V40(nPort, NULL); if(lRealHandle >=0 ){ while(true){ IplImage* pFrame = NET_DVR_GetSnapshot(nPort); Mat frame(pFrame->height,pFrame->width,CV_8UC3,(void*)pFrame->imageData); imshow("Camera Feed",frame); waitKey(1); } NET_DVR_StopRealPlay(lRealHandle); }else{ cout<<"Failed to start real play."<<endl; } NET_DVR_Cleanup(); return 0; } ``` 上述代码片段实现了基本的登录、抓拍以及释放资源流程。注意替换 IP 地址及相关认证参数以适配实际部署场景。 #### 4. **注意事项** 当选用第三方图形算法库(比如 Halcon)时,尽管它们具备一定的通用性,但在某些特定领域仍推荐优先考虑厂商原生解决方案。这是因为后者往往针对自家硬件特性做了高度优化,从而提供更加可靠的服务体验[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值