二维码Data Matrix编码、解码使用举例
二维码Data Matrix的介绍见: http://blog.csdn.net/fengbingchun/article/details/44279967 ,这里简单写了个生成二维码和对二维码进行识别的测试例子,如下:
int test_data_matrix_encode()
{
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;
std::string image_name = "E:/GitCode/BarCode_Test/test_images/data_matrix_encode.jpg";
cv::imwrite(image_name, mat);
dmtxEncodeDestroy(&enc);
return 0;
}
int test_data_matrix_decode()
{
std::string image_name = "E:/GitCode/BarCode_Test/test_images/data_matrix_encode.jpg";
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(®);
dmtxDecodeDestroy(&dec);
dmtxImageDestroy(&img);
return 0;
}
其中test_data_matrix_encode函数用来生成二维码,如下:
test_data_matrix_decode函数用来简析上面生成的二维码,执行结果如下:
可看出,前后结果是一致的。
GitHub:https://github.com/fengbingchun/BarCode_Test
二维码Data Matrix编码、解码使用举例的更多相关文章
- 二维码Data Matrix的解码实现(zxing-cpp)
二维码Data Matrix的介绍可以参考http://blog.csdn.net/fengbingchun/article/details/44279967 ,以下是通过zxing-cpp开源库实现 ...
- (zxing.net)二维码Data Matrix的简介、实现与解码
一.简介 Data Matrix 二维条码原名Datacode,由美国国际资料公司(International Data Matrix, 简称ID Matrix)于1989年发明.Data-Matri ...
- 二维码Data Matrix简单介绍及在VS2010中的编译
Data Matrix 二维条码原名Datacode,由美国国际资料公司(International Data Matrix, 简称ID Matrix)于1989年发明.Data-Matrix二维条码 ...
- Java实现二维码QRCode的编码和解码
涉及到的一些主要类库,方便大家下载: 编码lib:Qrcode_swetake.jar (官网介绍-- http://www.swetake.com/qr/index-e.html) 解码lib: ...
- zxing二维码的生成与解码(C#)
ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码.目标是能够对QR编码.Data Matrix.UPC的1D条形码进行解码. 其提供了多种平台下的客户端包括:J2ME.J2SE和An ...
- 二维码Aztec简介及其解码实现(zxing-cpp)
Aztec Code是1995年,由Hand HeldProducts公司的Dr. Andrew Longacre设计.它是一种高容量的二维条形码格式.它可以对ASCII和扩展ASCII码进行编码.当 ...
- 二维码PDF417简介及其解码实现(zxing-cpp)
二维码PDF417是一种堆叠式二维条码.PDF417条码是由美国SYMBOL公司发明的,PDF(Portable Data File)意思是"便携数据文件".组成条码的每一个条码字 ...
- java 二维码原理以及用java实现的二维码的生成、解码(转)
http://blog.csdn.net/songylwq/article/details/8643948 http://sjsky.iteye.com/blog/1136934 http://bbs ...
- C#实现二维码生成与解码
前几天公司内部分享了一个关于二维码的例子,觉得挺好玩的,但没有提供完整的源码.有时候看到一个好玩的东西,总想自己Demo一个,于是抽空就自己研究了一下. 一.二维码的原理 工欲善其事,必先利其器.要生 ...
随机推荐
- .net 下使用Quartz.Net
Quartz.net是作业调度框架 1. 项目中添加quartz.net的引用(这里使用nuget管理) 新建一个类TimingJob,该类主要用于实现任务逻辑 using Quartz; using ...
- Oracle诊断工具 - ORA-1578 Troubleshooting Tool
Oracle support网站提供ORA-1578错误诊断工具:ORA-1578 Troubleshooting Tool. ORA-1578 Troubleshooting Tool根据分析上传的 ...
- Mysql压缩解决方案
提到mysql压缩相关的内容,我们能想到的可能是如下几种和压缩相关的场景: 1.客户端和服务器之间传输的数据量太大,需要进行压缩,节约带宽 2.mysql某个列的数据量大,只针对某个列的数据压缩 3. ...
- PHP_CodeSniffer 使用攻略
安装 PHP_CodeSniffer 安装 phpcs phpcs 是 PHP 代码规范的检测工具. # 下载 $ curl -OL https://squizlabs.github.io/PHP_C ...
- VMware 11 安装苹果系统
没事研究了一下虚拟机安装苹果系统 1.下载需要的软件- F, c1 X: e- o1 }& V/ o9 J 1.1 VMware 11 下载和安装* P( R; O6 v1 N! ...
- memcache知识梳理
定义: memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的.需要频繁访问数据库的网 ...
- 第一次项目冲刺(Alpha版本)2017/11/14
一.站立式会议 在宿舍进行了第一次会议 会议内容: 1.做了简单的分工 2.提出个人对任务是否有困难 3.规定完成时间在第三天之前 4.商量初步的代码规范 二.分工 三.任务分解图 四.燃尽图 五.数 ...
- Hibernate事务、缓存和连接池
一.事务 1.数据库事务的概念 数据库事务是指由一个或多个SQL语句组成的工作单元,这个工作单元中的SQL语句相互依赖,如果有一个SQL语句执行失败,就必须撤销整个工作单元.在并发环境中,多个事务同时 ...
- css3实现 依次出现三个点(一般用于提示加载中。。。 提交中。。。)
<a href="javascript:" class="login">登录中<span class="dotting"& ...
- 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 H题 Rock Paper Scissors Lizard Spock.(FFT字符串匹配)
2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ...