二维码Data Matrix编码、解码使用举例
来源:互联网 发布:淘宝手机店怎么开 编辑:程序博客网 时间:2024/06/06 13:05
二维码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);elsemat = 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
0 0
- 二维码Data Matrix编码、解码使用举例
- 二维码Data Matrix的解码实现(zxing-cpp)
- 编码解码 data compression
- 使用zxing对条形码、二维码的编码和解码
- 二维码的编码和解码
- 条形码和二维码编码解码
- 条形码和二维码编码解码
- Data Matrix二维码图像处理与应用
- VC++识别Data-Matrix格式的二维码
- 二维码的编码与解码辅助类
- 二维码的编码与解码辅助类
- QR二维码编码解码原理算法介绍
- python 使用zbar解码二维码
- 使用BASE64编码解码
- 二维码扫描库qrcode的使用举例
- linux python实现data matrix 二维码显示和处理
- 二维码Data Matrix简介及在VS2010中的编译
- Python学习笔记--使用Zbar解码二维码
- 数据结构与算法(C语言版)__链式队列
- 为什么 .NET 的反射这么慢?
- 建立自己的私有云储存服务【ownCloud】
- 智能指针使用-share_ptr实例
- 博客测试
- 二维码Data Matrix编码、解码使用举例
- [POJ3415]Common Substrings(后缀数组+单调栈)
- 使用GitHub部署网站
- 欢迎使用CSDN-markdown编辑器
- linux延时函数
- text控件限制长度
- iOS - Swift CocoaPods导入OC第三方库
- Maximum Subarray
- C++编程错误 : undefined reference to `vtable for Student'