精华内容
下载资源
问答
  • vc++datamatrix二维码识别

    千次阅读 多人点赞 2021-01-25 15:16:14
    zbar zxing都不能识别datamatrix二维码 ,这咱二维码需要专门的库来识别 #include <iostream> #include "funset.hpp" int main(int argc, char* argv[]) { // Note: windows10 vs2013 will ...

       VC++开发常用功能一系列文章 (欢迎订阅,持续更新...)

    源代码demo已上传到百度网盘:永久生效 ,文章尾部附 百度链接

    zbar zxing都不能识别datamatrix二维码 ,这咱二维码需要专门的库来识别

     

     

    //编码与识别代码

    #include <iostream>
    #include "funset.hpp"
    
    int main(int argc, char* argv[])
    {
    	// Note: windows10 vs2013 will crash, windows7 vs2013 is normal
    	//int ret = test_data_matrix_encode();
    
    	int ret = test_data_matrix_decode();
    
    	if (ret == 0) fprintf(stderr, "test success\n");
    	else fprintf(stderr, "test fail: %d\n", ret);
    
    	return 0;
    }
    #include "funset.hpp"
    #include <assert.h>
    #include <iostream>
    #include <string>
    #include "dmtx.h"
    #include <opencv2/opencv.hpp>
    
    int test_data_matrix_base()
    {
    	// Blog: http://blog.csdn.net/fengbingchun/article/details/44279967
    	std::string str = "中国_abc_DEF_123_@#$!";
    
    	/* 1) ENCODE a new Data Matrix barcode image (in memory only) */
    	DmtxEncode* enc = dmtxEncodeCreate();
    	assert(enc != NULL);
    	int ret = dmtxEncodeDataMatrix(enc, strlen(str.c_str()), (unsigned char*)str.c_str());
    	assert(ret == 1);
    
    	/* 2) COPY the new image data before releasing encoding memory */
    	int width = dmtxImageGetProp(enc->image, DmtxPropWidth);
    	int height = dmtxImageGetProp(enc->image, DmtxPropHeight);
    	int bytesPerPixel = dmtxImageGetProp(enc->image, DmtxPropBytesPerPixel);
    
    	unsigned char* pxl = (unsigned char *)malloc(width * height * bytesPerPixel);
    	assert(pxl != NULL);
    	memcpy(pxl, enc->image->pxl, width * height * bytesPerPixel);
    
    	dmtxEncodeDestroy(&enc);
    
    	/* 3) DECODE the Data Matrix barcode from the copied image */
    	DmtxImage* img = dmtxImageCreate(pxl, width, height, DmtxPack24bppRGB);
    	assert(img != NULL);
    
    	DmtxDecode* dec = dmtxDecodeCreate(img, 1);
    	assert(dec != NULL);
    
    	std::string dst;
    	DmtxRegion* reg = dmtxRegionFindNext(dec, NULL);
    	if (reg != NULL) {
    		DmtxMessage* msg = dmtxDecodeMatrixRegion(dec, reg, DmtxUndefined);
    		if (msg != NULL) {
    			/*fputs("output: \"", stdout);
    			fwrite(msg->output, sizeof(unsigned char), msg->outputIdx, stdout);
    			fputs("\"\n", stdout);*/
    			dst = std::string(reinterpret_cast<const char*>(msg->output));
    			dmtxMessageDestroy(&msg);
    		}
    		dmtxRegionDestroy(&reg);
    	}
    
    	std::cout << "source string : " << str << std::endl;
    	std::cout << "dst    string : " << dst << std::endl;
    
    	dmtxDecodeDestroy(&dec);
    	dmtxImageDestroy(&img);
    	free(pxl);
    
    	return 0;
    }
    
    int test_data_matrix_encode()
    {
    	// Blog: https://blog.csdn.net/fengbingchun/article/details/53889293
    
    	std::string str = "中国_abc_DEF_123_@#$!HTTP://WWW.LIBDMTX.ORG";
    
    	DmtxEncode* enc = dmtxEncodeCreate();
    	assert(enc != NULL);
    	int ret = dmtxEncodeDataMatrix(enc, strlen(str.c_str()), (unsigned char*)str.c_str());
    	assert(ret == 1);
    
    	int width = dmtxImageGetProp(enc->image, DmtxPropWidth);
    	int height = dmtxImageGetProp(enc->image, DmtxPropHeight);
    	int bytesPerPixel = dmtxImageGetProp(enc->image, DmtxPropBytesPerPixel);
    	fprintf(stderr, "image width: %d, image height: %d, channels: %d\n", width, height, bytesPerPixel);
    	assert(bytesPerPixel == 1 || bytesPerPixel == 3 || bytesPerPixel == 4);
    
    	cv::Mat mat;
    	if (bytesPerPixel == 1)
    		mat = cv::Mat(height, width, CV_8UC1);
    	else if (bytesPerPixel == 3)
    		mat = cv::Mat(height, width, CV_8UC3);
    	else
    		mat = cv::Mat(height, width, CV_8UC4);
    
    	mat.data = enc->image->pxl;
    
    #ifdef _MSC_VER
    	std::string image_name = "E:/GitCode/BarCode_Test/test_images/data_matrix_encode.jpg";
    #else
    	std::string image_name = "test_images/data_matrix_encode.jpg";
    #endif
    	cv::imwrite(image_name, mat);
    
    	dmtxEncodeDestroy(&enc);
    
    	return 0;
    }
    
    int test_data_matrix_decode()
    {
    #ifdef _MSC_VER
    	std::string image_name = "D:/Image_test/20210125145104.png"; 
    #else
    	std::string image_name = "test_images/data_matrix_encode.jpg";
    #endif
    	cv::Mat mat = cv::imread(image_name, 1);
    	if (!mat.data) {
    		fprintf(stderr, "read image error\n");
    		return -1;
    	}
    
    	int width = mat.cols;
    	int height = mat.rows;
    	int channels = mat.channels();
    
    	DmtxImage* img = dmtxImageCreate(mat.data, width, height, DmtxPack24bppRGB);
    	if (!img) {
    		fprintf(stderr, "dmtx image create fail\n");
    		return -1;
    	}
    
    	DmtxDecode* dec = dmtxDecodeCreate(img, 1);
    	if (!dec) {
    		fprintf(stderr, "dmtx decode create fail\n");
    		return -1;
    	}
    
    	DmtxRegion* reg = dmtxRegionFindNext(dec, nullptr);
    	if (!reg) {
    		fprintf(stderr, "dmtx region fail\n");
    		return -1;
    	}
    
    	DmtxMessage* msg = dmtxDecodeMatrixRegion(dec, reg, DmtxUndefined);
    	if (!msg) {
    		fprintf(stderr, "dmtx decode matrix region fail\n");
    		return -1;
    	}
    
    	std::string str(reinterpret_cast<char*>(msg->output));
    	fprintf(stderr, "decode result: %s\n", str.c_str());
    
    	dmtxMessageDestroy(&msg);
    	dmtxRegionDestroy(&reg);
    	dmtxDecodeDestroy(&dec);
    	dmtxImageDestroy(&img);
    
    	return 0;
    }
    

     

    链接:https://pan.baidu.com/s/1iEOEW8e7IoP5e1yj___chg
    提取码:p8oz
    复制这段内容后打开百度网盘手机App,操作更方便哦

    展开全文
  • 基于机器视觉的Data Matrix二维码识别

    千次阅读 2018-11-29 10:40:24
    基于机器视觉的Data Matrix二维码识别 二维码识别,这个在视觉应用中占有很重要的比例,各种各样的二维码都有可能需要识别。常见的QR码、Data Matrix码。本方案是识别Data Matrix码。 工业光源 对于这种产品...

    基于机器视觉的Data Matrix二维码识别

    二维码识别,这个在视觉应用中占有很重要的比例,各种各样的二维码都有可能需要识别。常见的QR码、Data Matrix码。本方案是识别Data Matrix码。

    工业光源

    对于这种产品,如果是丝印喷码,那么常见的白底黑码、或白码黑底,使用条形光源、环形光等,都可以得到比较好的效果。而如果是在一些玻璃上激光打码,则建议使用同轴光高角度的环形光源

    可以考虑使用常规的模拟调光器APS-2424-1CH或者是迷你调光器MAPS-2424-1CH。如果是在高速拍照需要很短的曝光时间,则考虑使用频闪调光器,如SPS-2430-4CH。而如果需要程序控制不同的光源亮度以适用不同的产品,则可以考虑数字调光器,如DPS-24125-4CH

    工业相机

    对于这种读码的应用,分辨率不需要太高。太高的分辨率,反而不一定能读取到码了。所以考虑使用30~130的工业相机即可。

    工业镜头

    可以使用常规的CCTV镜头,基本上可以满足视觉应用需要。

    视觉算法

    对于NI软件,可以使用Read 2D Barcode函数,其中选择的Data Matrix函数。对于本方案,可以参考VBAI演示脚本。

    项目难度

    ★★★★★★★

    对于这类项目,除非码非常标准清晰,不然不建议使用NI视觉落实,NI视觉在读码方面能力一般,图像差异大的项目,很难做稳定。或者是码有一定的变形、照明不均匀、部分位置反光等情况,都会引起读不到码的情况。可以考虑使用HalconVisionPro等软件来处理该类项目。

    【转载】http://shixinhua.com/project/2017/03/1953.html

    展开全文
  • ubuntu环境下的datamatrix二维码识别 一、源码安装libdmtx包 1.使用git进行libdmtx的源码下载 git clone https://git.code.sf.net/p/libdmtx/libdmtx libdmtx-libdmtx cd libdmtx--libdmtx 2.安装autogen.sh需要的...

    ubuntu环境下的datamatrix二维码识别


    一、源码安装libdmtx包

    1.使用git进行libdmtx的源码下载

    git clone https://git.code.sf.net/p/libdmtx/libdmtx libdmtx-libdmtx
    
    cd libdmtx--libdmtx
    

    2.安装autogen.sh需要的包autoreconf

    sudo apt-get install -y autoconf automake libtool pkg-config
    

    3.生成configure

    ./autogen.sh
    

    4.生成makefile

    ./configure
    

    5.编译

    make
    

    6.编译安装

    make install
    

    二、源码安装dmtx-wrappers

    1.使用git进行dmtx-wrappers源码下载

    git clone https://git.code.sf.net/p/libdmtx/dmtx-wrappers libdmtx-dmtx-wrappers
    
    cd libdmtx-dmtx-wrappers/python
    

    2.安装

    python setup.py install
    

    3.测试

    python test.py
    

    4.故障排除

    ImportError: libdmtx.so.0: cannot open shared object file

    /sbin/ldconfig /usr/local/lib
    export LD_LIBRARY_PATH=/usr/local/lib
    

    运行就遇到 NotImplementedError: tostring() has been removed. Please call tobytes() instead这个问题,这应该是PIL这个库更新后,tostring被舍弃了,叫做tobytes了

    cd /usr/local/lib/python2.7/dist-packages/
    
    sudo chmod -R 777 PIL
    

    alt

    alt

    sudo chmod -R 555 PIL
    
    展开全文
  • Malcon支持多种二维码类型,QR Code,DataMatrix ,PDF 417,RSS等等; 下边讲解一下步骤: 1、读取图片ReadImage 2、创建相对应的条码类型的句柄CreateDataCode2dModel 3、设置条码参数SetDataCode2dParam 4、查找条码...

    Malcon支持多种二维码类型,QR Code,DataMatrix ,PDF 417,RSS等等;

    下边讲解一下步骤:

    1、读取图片ReadImage

    2、创建相对应的条码类型的句柄CreateDataCode2dModel

    3、设置条码参数SetDataCode2dParam

    4、查找条码:输出条码信息FindDataCode2d

    5、设置显示字体SetDisplayFont

    6、显示条码信息DispMessage

    7、清除条码句柄ClearDataCode2dModel

    ReadImage(srcImage,‘DATA_MATRIX_HINT0.bmp’)
    CreateDataCode2dModel(‘Data Matrix ECC 200’,’ ‘,’ ‘,CodeHandle)
    SetDataCode2dParam(CodeHandle,‘polarity’,‘light_on_dark’)
    FindDataCode2d(srcImage,symbolXld,CodeHandle,’ ‘,’ ‘,ResultHandle,DateString)
    SetDisplayFont(3600,26,’ ‘,‘true’,‘false’)
    DispMessage(3600,DateString,’ ',0,0,‘red’,‘true’)
    ClearDataCode2dModel(CodeHandle)

    在这里插入图片描述

    展开全文
  • Data Matrix二维码由美国国际资料公司(International Data Matrix)于1989年发明,是一种由黑色、白色的色块以正方形或长方形组成的二维码,其发展构想是希望在较小的标签上存储更多的信息量。DM码适合于小零件的的...
  • 摘要:以Meteor II Standard图像采集卡为基础,以识别金属零件上的Data Matrix二维码为目的,对摄像头采集的图像进行处理。实现了该方法在工业流水线睥实时识别应用。 关键词:二维码 Data Matrix 图像处理 实时识别...
  • C++ Zxing opencv识别Data Matrix 二维码

    千次阅读 2018-07-01 09:47:33
    /****************************************************************************************** Function: DataMatrixDecoder Description: data matrix二维码解析 Input: image_path:二维码图片路径 Ret...
  • Halcon 识别DataMatrix二维码

    千次阅读 2017-04-20 11:35:58
    create_data_code_2d_model ('Data Matrix ECC 200', 'default_parameters', 'enhanced_recognition', DataCodeHandleLow) ***对比容差 set_data_code_2d_param (DataCodeHandleLow, 'contrast_t
  • libdmtx结合OpenCV识别DataMatrix二维码

    千次阅读 2019-10-13 17:56:11
    Datamatrix原名Datacode,由美国国际资料公司(International Data Matrix, 简称ID Matrix)于1989年发明。 Datamatrix是一种矩阵式二维条码,其发展的构想是希望在较小的条码标签上存入更多的资料量。Datamatrix的...
  • Data Matrix 二维码图像处理与应用 上海同济大学信息与通信工程系(200092) 唐 莉 刘富强 上海第二医科大学临床医学专业(200025) 钱黎俊 二维码是在平面二维方向上都记录信息的符号。它充分利用了平面上的二维...
  • 用halcon实现对datamatrix工业二维码的检测,同时导录成c++代码(包含测试图像+halcon代码+c++代码)
  • 使用C++编写的开源二维码datamatrix识别程序
  • 资源包含有DLL、LIB、H文件可根据需求程序调用函数接口来使用动态库其功能点有两个: ...识别Data-Matrix格式的二维码 —— Data_Matrix(IplImage *Image, char *Information); 版权望断所有,下载请私用!
  • VC++识别Data-Matrix格式的二维码

    千次阅读 2017-12-02 16:02:44
    图像识别Data-Matrix格式的二维码编写步骤详述
  • 二维码识别

    千次阅读 2017-09-23 21:35:05
    0 前言1 什么是二维码二维码 (2-dimensional bar code),是用...在许多种类的二维条码中,常用的码制有:Data Matrix, Maxi Code, Aztec, QR Code, Vericode, PDF417, Ultracode, Code 49, Code 16K等。二维条码/二维
  • 二维码识别

    2019-08-10 00:24:34
    二维码识别库 简介 Zxing库可以识别的条形码和二维码种类 UPC_A,UPC_E,EAN_13,EAN_8,RSS_14,RSS_EXPANDED,CODE_39,CODE_128,ITF,CODABAR,AZTEC,DATA_MATRIX,MAXICODE,PDF_417,QR_CODE ...
  • 二维码识别 QR DataMatrix pdf417 一维码 识别 使用方法,对准要识别的二维码和一维码,手机自动识别,识别成功后, 如需再次识别,请点击屏幕空白处。
  • Android开发技巧——五分钟实现二维码识别

    万次阅读 热门讨论 2016-06-07 23:02:42
    二维码扫描解析现在已经成为一个综合型APP所不可或缺的一个功能了,有很多入门的开发者或许会苦恼二维码识别肯定是得会图像分析技术呀,难道还得学opencv吗?NO,Google早已想到这一点,因此也开源了二维码扫描、...
  •  c、可识别多种二维码类型:PDF417、microPDF417、MaxiCode、DataMatrix (ECC 2000)、Composite Codes、QR Code;  d、可通过显示图像监视检测过程,也可通过显示界面设置参数,查看记录;  e、对错误的D
  • * 二维码识别 二维码类型:Data Matrix ECC 200 * 使用中值滤波处理图片后,识别二维码成功。 dev_update_off () dev_close_window () * 1.读取图片 read_image (Image, './img/ecc200_to_preprocess_004.png') dev_...
  • 支持二维码识别跟生成,该插件是一个高效的代码扫描器和生成器工具,它跨平台运行,支持扫描QRCode、Code_128、Code_93、Code_39、EAN_13、EAN_8、Aztec-Code、UPC-A、UPCE、Data Matrix、PDF-417、RSS_14等,支持...

空空如也

空空如也

1 2 3 4 5
收藏数 88
精华内容 35
关键字:

datamatrix二维码识别