日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

二维码Data Matrix编码、解码使用举例

發(fā)布時間:2023/11/27 生活经验 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二维码Data Matrix编码、解码使用举例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

二維碼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(&reg);dmtxDecodeDestroy(&dec);dmtxImageDestroy(&img);return 0;
}
其中test_data_matrix_encode函數(shù)用來生成二維碼,如下:

test_data_matrix_decode函數(shù)用來簡析上面生成的二維碼,執(zhí)行結(jié)果如下:

可看出,前后結(jié)果是一致的。


GitHub:https://github.com/fengbingchun/BarCode_Test

總結(jié)

以上是生活随笔為你收集整理的二维码Data Matrix编码、解码使用举例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。