VC++识别Data-Matrix格式的二维码

本望断在图像识别Data-Matrix格式的二维码

根据此编写出的识别QR-Code和Data-Matrix的二维码(库)

http://download.csdn.net/download/wangduanqiugao/10141924

本秋高使用到的软件工具:VS2010  opencv1.0  libdmtx-0.7.4  (使用以上现有库直接实现功能)

VS2010就不用说了;使用opencv1.0版本以上的也可以,此部分作基础就不进行阐述

libdmtx-0.7.4版本下载网址:
https://sourceforge.net/projects/libdmtx/files/latest/download?source=typ_redirect

libdmtx-0.7.4直接为文件,需要建立静态库编译再添加到VS2010


二、
1. 新建一个VS2010静态库Project(建议选择Win 32 Project),步骤单击Static library;选含Precompiled header

2. 将../libdmtx-0.7.4文件夹下所有的.h、.c文件增加到此project中,修改属性Not Using Precompiled Headers和Compile as C Code(/TC)

3. VS2010工程项目属性中:C/C++\General\Additional Include Directories 添加路径——..\libdmtx-0.7.4

4. 将#include "dmtx.h"和#include "dmtxstatic.h"两个头文件分别添加到静态库工程里面的每一个.c文件里

5. 将float.h、stdio.h、limits.h、assert.h、math.h文件增加到dmtx.h中;注释掉dmtx.c文件里包括的.c文件
 
6. 将项目查找到CHKERR、CHKSCHEME、CHKSIZE、CALLBACK_MATRIX、ISDIGIT、CALLBACK_POINT_PLOT的定义中复制到dmtx.h中

7. 将静态库程序里面的snprintf函数用sprintf_s函数替代

8. 对于错误C2129,处理办法是将声明和实现中的所有该函数“static”都去掉,可按提示查找修改

完成以上编译通过;即可得出LIB静态库了;再复制dmtx.h一起给程序调用
VS2010工程项目属性中:Linker\Input\ Additional Directories 添加文件——LIB静态库

#include "dmtx.h"
using namespace std;
bool wangduanqiugao_Data_Matrix(IplImage *Image, char *Information)
{	
  IplImage *pSrcImage = cvCloneImage(Image);
    
  CvMat matheader;
  CvMat * img = cvGetMat(pSrcImage, &matheader);

  int width = img->cols;  
  int height = img->rows;    
  uchar *raw = img->data.ptr;     

    DmtxImage* imge = dmtxImageCreate(raw, width, height, DmtxPack24bppRGB);  

    if(!imge)
    {
      cvReleaseImage(&pSrcImage);
      return false;
     }

    DmtxDecode* dec = dmtxDecodeCreate(imge, 1);  
 
    if(!dec)
    {
      cvReleaseImage(&pSrcImage);
      return false;
     }

    DmtxRegion* reg = dmtxRegionFindNext(dec, nullptr);  

    if(!reg)
    {
      cvReleaseImage(&pSrcImage);
      return false;
     }
 
    DmtxMessage* msg = dmtxDecodeMatrixRegion(dec, reg, DmtxUndefined);  

    if(!msg)
    {
      cvReleaseImage(&pSrcImage);
      return false;
     }

    string mation(reinterpret_cast<char*>(msg->output));  

    strcpy(Information, mation.c_str());
    cvReleaseImage(&pSrcImage);
    return true;
}


  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
VC(视觉编码)是一种基于图像处理和分析的技术,用于将实时的视觉输入转化为计算机可识别的数据格式。而Data Matrix是一种二维条码,具有较高的数据密度和可靠性,可用于存储大量数据。 要生成Data Matrix,首先需要使用相机等设备采集图像信息。然后,通过预处理和图像分析算法,将图像中的数据转化为二进制格式。接下来,根据Data Matrix的规范,将二进制数据以特定的编码方式进行格式转换,生成Data Matrix图像。 在生成Data Matrix的过程中,VC起到了至关重要的作用。它可以用于图像预处理,例如去噪、图像增强等,以提高图像质量。然后,通过图像分割和特征提取算法,VC可以识别和定位Data Matrix的几何特征,确定二维条码区域。 接着,VC利用图像解码算法将二维条码中的数据进行解码,得到原始的数据信息。解码过程中涉及到环境光照、图像畸变等问题,VC可以通过相应的算法进行处理和校正。 最后,VC通过将解码后的数据再次编码为Data Matrix格式,生成最终的Data Matrix图像。生成的图像可以打印、保存或用于其他需要的应用。 综上所述,VC生成Data Matrix的过程包括图像采集、预处理、特征提取、解码和再编码等步骤。它利用图像处理和分析的技术,将实时的视觉输入转化为计算机可识别Data Matrix格式,以实现数据的存储和传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值