引用:
二维码解析(编译zxing-cpp)
二维码解析使用的类库是zxing(官网 https://github.com/zxing/zxing)。
这个类库是谷歌的,原来有c++版本,后来的更新去掉了,zxing介绍了目前基于zxing的其他类库。
glassechidna/zxing-cpp(https://github.com/glassechidna/zxing-cpp)已经好久不更新了,官网介绍也是使用的比较老的版本
nu-book/zxing-cpp(https://github.com/nu-book/zxing-cpp)这个是最新的
ZBar/ZBar(https://github.com/ZBar/ZBar)是c语言版本,也好久没更新了。
本章我们使用:https://github.com/15903016222/zxing-cpp.git
1、克隆原代码
eric@eric-PC:~/Documents/work/linux-c$ git clone https://github.com/15903016222/zxing-cpp.git
正克隆到 'zxing-cpp'...
remote: Enumerating objects: 622, done.
remote: Total 622 (delta 0), reused 0 (delta 0), pack-reused 622
接收对象中: 100% (622/622), 471.69 KiB | 62.00 KiB/s, 完成.
处理 delta 中: 100% (318/318), 完成.
eric@eric-PC:~/Documents/work/linux-c$ cmake -v
CMake Error: The source directory "/home/eric/Documents/work/linux-c/-v" does not exist.
Specify --help for usage, or press the help button on the CMake GUI.
eric@eric-PC:~/Documents/work/linux-c$ cmake --version
cmake version 3.11.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
eric@eric-PC:~/Documents/work/linux-c$ cd zxing-cpp/
eric@eric-PC:~/Documents/work/linux-c/zxing-cpp$ ls
AUTHORS cli cmake CMakeLists.txt COPYING core NOTICE opencv opencv-cli README.md source_files.cmake
2、创建编译目录
eric@eric-PC:~/Documents/work/linux-c/zxing-cpp$ mkdir build
eric@eric-PC:~/Documents/work/linux-c/zxing-cpp$ ls
AUTHORS build cli cmake CMakeLists.txt COPYING core NOTICE opencv opencv-cli README.md source_files.cmake
3、配置
eric@eric-PC:~/Documents/work/linux-c/zxing-cpp$ cd build/
eric@eric-PC:~/Documents/work/linux-c/zxing-cpp/build$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -G "Unix Makefiles" ..
-- The C compiler identification is GNU 5.5.0
-- The CXX compiler identification is GNU 4.8.5
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Warning at CMakeLists.txt:46 (find_package):
By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "OpenCV", but
CMake did not find one.
Could not find a package configuration file provided by "OpenCV" with any
of the following names:
OpenCVConfig.cmake
opencv-config.cmake
Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
"OpenCV_DIR" to a directory containing one of the above files. If "OpenCV"
provides a separate development package or SDK, be sure it has been
installed.
-- Looking for iconv
-- Looking for iconv - found
-- Configuring done
-- Generating done
-- Build files have been written to: /home/eric/Documents/work/linux-c/zxing-cpp/build
eric@eric-PC:~/Documents/work/linux-c/zxing-cpp/build$ ls
CMakeCache.txt CMakeFiles cmake_install.cmake Makefile zxing-config.cmake
4、编译
eric@eric-PC:~/Documents/work/linux-c/zxing-cpp/build$ make
Scanning dependencies of target libzxing
[ 0%] Building CXX object CMakeFiles/libzxing.dir/core/src/bigint/BigInteger.cc.o
[ 1%] Building CXX object CMakeFiles/libzxing.dir/core/src/bigint/BigIntegerAlgorithms.cc.o
[ 2%] Building CXX object CMakeFiles/libzxing.dir/core/src/bigint/BigIntegerUtils.cc.o
[ 3%] Building CXX object CMakeFiles/libzxing.dir/core/src/bigint/BigUnsigned.cc.o
...
[ 93%] Building CXX object CMakeFiles/libzxing.dir/core/src/zxing/ResultPoint.cpp.o
[ 94%] Building CXX object CMakeFiles/libzxing.dir/core/src/zxing/ResultPointCallback.cpp.o
[ 95%] Linking CXX static library libzxing.a
[ 95%] Built target libzxing
Scanning dependencies of target zxing
[ 96%] Building CXX object CMakeFiles/zxing.dir/cli/src/ImageReaderSource.cpp.o
[ 97%] Building CXX object CMakeFiles/zxing.dir/cli/src/jpgd.cpp.o
[ 98%] Building CXX object CMakeFiles/zxing.dir/cli/src/lodepng.cpp.o
[ 99%] Building CXX object CMakeFiles/zxing.dir/cli/src/main.cpp.o
[100%] Linking CXX executable zxing
[100%] Built target zxing
eric@eric-PC:~/Documents/work/linux-c/zxing-cpp/build$eric@eric-PC:~/Documents/work/linux-c/zxing-cpp/build$ ls
CMakeCache.txt CMakeFiles cmake_install.cmake libzxing.a Makefile zxing zxing-config.cmake
此时已经生成了zxing程序
5、测试解码
草料二维码生成一个二维码图片QRcode.png(内容:www.baidu.com),放到build目录下
eric@eric-PC:~/Documents/work/linux-c/zxing-cpp/build$ ls
CMakeCache.txt CMakeFiles cmake_install.cmake install_manifest.txt libzxing.a Makefile QRcode.png zxing zxing-config.cmake
测试:
eric@eric-PC:~/Documents/work/linux-c/zxing-cpp/build$ ./zxing QRcode.png
www.baidu.com
解析完成!