软件下载:

        首先下载并安装VS2017和cmake-gui,链接如下:

        VS2017:

        1、官网:下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux

        2、网盘:链接:https://pan.baidu.com/s/1UNDEgL17D9bsN_-RPAAWcA 提取码:70nl

        cmake-gui:

        1、官网:Download | CMake

        2、网盘:链接:https://pan.baidu.com/s/1upDXsU5_T8Wno5hVC6AATQ 提取码:4v2w

安装方法:

        VS2017:双击安装包->修改路径->点击“安装”->安装完成。

 

        安装完之后就是下面这张截图一样了,我们可以点击“启动”来打开。

         打开如下图,点击“以后再说“--->”启动VS“

          

         这样就OK了。

        因为我的笔记本只有C盘,所以就直接安装在了C盘下面,不过我还是建议安装在C盘下,似乎速度会快一些,VS2017的安装比较慢,需要等好一会。

        cmake-gui:双击安装包->一路next(中间有几个地方需要注意)->install->finish->打开cmd,输入cmake /V 可以查看cmake版本。

        刚双击打开时安装程序需要先初始化一会,等待就行了。

 

 

        此处最好是像我这样设置,选中间那个可以直接配置好环境变量,勾上左下角那个可以在桌面创建图标,更方便。

 

 

 

 

        最后,在cmd中输入 cmake /V

 

 源代码下载及编译

         代码下载

        opencv开源代码下载:

        1、官网:Releases - OpenCV、Release 3.4.1 · opencv/opencv_contrib · GitHub

        2、网盘(未编译):

                链接:https://pan.baidu.com/s/1d17p0EEwPmYP3gu_ZbYTJg 提取码:4h7q

        (已编译):

                链接:https://pan.baidu.com/s/1EAiCLkw3pCbgZilVNvhsQA 提取码:9xzw

        ZXing开源代码下载:

        1、官网:GitHub - yuriiz/zxing-cpp: ZXing C++ Library with Python bindings

        2、网盘(未编译):

                链接:链接:https://pan.baidu.com/s/1We9BYvKdz6XmCTMTEpZA8A 提取码:j9pi

        (已编译):

                链接:链接:https://pan.baidu.com/s/16XXKt7VqgowRxTnVnWV8sQ 提取码:c780

        编译

        opencv编译:

        1、首先,解压开下载好的opencv源码,里面是长这样子的

 

        2、在其他地方创建一个新的文件夹用于接收opencv编译后的项目文件,如图 

         上面那个是解压出来的文件夹,下面那个是新创建的文件夹。

        3.1、编译生成opencv的vs项目有两种方式,第一种是打开cmake-gui,并按照顺序依次设置,最后点击finish

         等待构建完成,完成之后会有一堆红色的,不用管他,我们要改的东西只有BUILD开头的东西以及WITH开头的东西,这块我也不是很懂,建议参考[c++ opencv][基础篇-1]-windows下编译opencv库_亡命天涯ba的博客-CSDN博客以及opencv各个库说明_岁月蹉跎的一杯酒的博客-CSDN博客_opencv库

        也可以直接啥都不改,再次点击“configure”和“generate”。

         接着再次点击“Configure”,完成后点击“Generate”就行了。

        3.2、第二种是使用cmd来编译生成opencv的vs项目

        首先在解压出来的opencv-34.1里面新建一个build文件。然后打开cmd并进入build文件目录下,最后输入cmake -G "Visual Studio 15 2017 Win64" .. 并回车

        一键生成,很方便

4、查看生成的文件

         5、双击“OpenCV.sln”。进入VS2017,默认是debug模式,也可以修改为release模式,右键“解决方案OpenCV”并点击“属性”就能修改,不改好像也可以。然后就单击“生成解决方案”,等待生成,这个要挺久的,慢慢等吧

        生成完成后如下图所示。

           6、在任意地方创建一个文件夹(名字任意),里面创建一个“include”文件夹和一个“lib”文件夹,如下图所示

         然后把在之前生成的文件中的lib文件复制到上面的lib文件夹中。

          在之前解压出来的opencv源码中找到include,把里面的opencv和opencv2文件夹复制到上面创建的buildLib文件夹的include中。

         再把modules中用到的一些opencv模块的opencv2文件夹也复制到buildLib的include中,直接复制进去就行。这里为了方便可以直接在modules文件夹搜索opencv2,然后全选并复制过去。

         最后,在生成的文件夹第一层中找到bin文件夹,将里面的所有dll文件复制到buildLib的bin文件夹中。

         这样,外面的准备工作就完成了。

        7、接下来新创建一个vs工程,点击“项目”--->“属性”

         然后如下修改

 

         接着修改

 

         点击“确定”,然后可以试验下面这个代码,如果成功显示图片就成功了。

#include

#include

using namespace std;

using namespace cv;

int main()

{

Mat a;

// 图片路径自己改

a = imread("C:\\Users\\86135\\Desktop\\lena.png", 1);

imshow("a", a);

waitKey(0);

destroyAllWindows();

}

        zxing编译

        zxing是基于opencv的二维码解码库,所以使用前必须先把opencv配置好。配置的方法与opencv基本一致,也是

        1、先创建一个新的文件夹用于存放cmake生成的vs项目,然后用cmake来生成这个 vs项目,此处我使用cmd来生成,其实就是使用命令  cmake -G "Visual Studio 15 2017 Win64" ..  来生成。

        在解压出来的文件夹中新建一个build文件夹

        打开cmd进入build所在的文件夹,输入命令   cmake -G "Visual Studio 15 2017 Win64" ..并回车执行。       

         报错了,说找不到opencv的配置项,这里我们需要在zxing的cmakelists里面添加一行

set(OpenCV_DIR C:/Users/86135/Desktop/every/Opencv/buildLib/lib)

        就像这样

         保存退出,进入到刚刚的cmd再来一次刚刚的命令。

        慢着,还得把opencv的cmake文件添加到相应位置。还记得我们刚刚生成的opencv项目吗,把里面的下面这三个文件复制到buildLib的lib文件夹中,如下图所示

 

 

         好了,现在应该可以成功生成zxing的vs项目了,我们再来一遍cmd的命令。结果如下:

         很好,没有报错,我们查看下build里面的文件。

        2、然后用vs2017打开这个项目,设置debug或release,生成解决方案

        老样子,双击“zxing.sln”打开vs项目。先设置release,然后生成解决方案。

        3、新建一个文件夹来放置include文件和lib文件,然后在新创建的vs项目中添加包含目录和库目录之类的

         将生成的lib文件放入上面的lib文件夹中

         将下图两个文件夹里面的zxing文件夹复制到上面的include文件夹中

 

         好了,现在zxing外面的配置已经完成了。

        4、创建一个vs项目用于跑data matrix解码代码

        首先,设置项目的属性,如下所示

 

 

         填入下面的代码:

//zxing

#include "zxing/LuminanceSource.h"

#include "zxing/Reader.h"

#include "zxing/common/GlobalHistogramBinarizer.h"

#include "zxing/DecodeHints.h"

#include "zxing/datamatrix/DataMatrixReader.h"

#include "zxing/MatSource.h"

#include "zxing/result.h"

#include "zxing/BinaryBitmap.h"

#include "zxing/Binarizer.h"

#include "zxing/Exception.h"

//opencv

#include "opencv2/opencv.hpp"

#include "opencv2/highgui/highgui.hpp"

#include "opencv2/imgproc/imgproc.hpp"

#include "opencv2/core/core.hpp"

/******************************************************************************************

Function: DataMatrixDecoder

Description: data matrix二维码解析

Input: image_path:二维码图片路径

Return: 解析结果

*******************************************************************************************/

std::string DataMatrixDecoder(std::string image_path) {

//初始化解析结果

std::string content = "";

//读取图片

cv::Mat matSrc = cv::imread(image_path, 1);

//读取失败则返回

if (!matSrc.data) {

fprintf(stderr, "read image error: %s", image_path.c_str());

return content;

}

try

{

//转化为灰度图

cv::Mat matGray;

cv::cvtColor(matSrc, matGray, CV_BGR2GRAY);

zxing::Ref source = MatSource::create(matGray);

/*int width = source->getWidth();

int height = source->getHeight();*/

/*fprintf(stderr, "image width: %d, height: %d\n", width, height);*/

zxing::Ref reader;

reader.reset(new zxing::datamatrix::DataMatrixReader);

zxing::Ref binarizer(new zxing::GlobalHistogramBinarizer(source));

zxing::Ref bitmap(new zxing::BinaryBitmap(binarizer));

//开始解码

zxing::Ref result(reader->decode(bitmap, zxing::DecodeHints(zxing::DecodeHints::DATA_MATRIX_HINT)));

//获取解析结果

content = result->getText()->getText();

}

catch (zxing::Exception e)

{

}

return content;

}

int main() {

std::string result = DataMatrixDecoder("images/zc2.png");

std::cout << result << std::endl;

}

        其中图片的路径需要自己修改。

        原图:

         结果:

        如上图所示,输出字符串“Data Matrix”就成功了!

        好了,这次的分享就到此为止了,希望各位大佬指出有错的地方,谢谢!

        附录

1、(21条消息) Data Matrix二维码编码原理及其识别技术_刘明进的博客-CSDN博客_datamatrix二维码

2、(21条消息) Windows下安装libiconv库教程(转换字符编码库)_ZXInfinite的博客-CSDN博客_libiconv

3、(22条消息) 配置(三)—— win10 x64环境下利用vs2015编译zxing-cpp及利用zxing C++进行解码_smiler96的博客-CSDN博客

4、C++利用zxing识别二维码 - 灰信网(软件开发博客聚合)

5、【编程视界】C++静态库与动态库深入研究——静态库篇! - 哔哩哔哩

6、[opencv]zxing c++ 库的编译,安装,以及api的介绍 - Xu_Lin - 博客园

7、(22条消息) opencv各个库说明_岁月蹉跎的一杯酒的博客-CSDN博客_opencv库

8、(22条消息) [c++ opencv][基础篇-1]-windows下编译opencv库_亡命天涯ba的博客-CSDN博客

9、(22条消息) CMake来编译OpenCV,细致教程_丢掉幻想,准备斗争的博客-CSDN博客_cmake编译opencv

10、C++ Zxing opencv识别Data Matrix 二维码_Sharon Liu的博客-CSDN博客

11、(21条消息) Opencv安装及常见问题(看这一篇就够了!)_TONYGFX的博客-CSDN博客_opencv安装后找不到在哪

查看原文