博客转载自:https://blog.csdn.net/sunflower_boy/article/details/49095265

1. 下载ZBar v0.10 http://zbar.sourceforge.net/ 外网无法进入的话,在此下载 http://download.csdn.net/detail/sunflower_boy/9175433
  1.1 默认安装 注意勾选上Development Headers and Libraries 

ZBar在Windows上的使用 -- ImageMagick and OpenCV-LMLPHP

Zbar Windowns版本安装

安装完成后可在ZBar安装路径下找到examples文件夹,用vs2008及以上编译器可以打开工程文件,在源文件中可以看见例程还需要ImageMagick组件来读取文件,将文件转换成需要的格式 。
2.下载ImageMagick 我的版本是ImageMagick-6.2.7-Q8
  2.1 默认安装 注意勾选Install development headers and libraries for C and C++ 
ZBar在Windows上的使用 -- ImageMagick and OpenCV-LMLPHP

3. 将Zbar和ImageMagic的头文件和链接库添加到工程中,同时二者相对应的动态运行库添加到系统全局路径。

4. 打开scan_image.cpp ,屏蔽掉11行的 

if(argc < 2) return(1);

将27行的 

Magick::Image magick(argv[1]);

替换为 

Magick::Image magick("barcode.png");

 或者 直接在VS中设置运行参数

1. 选择PROJECT—>Properties—>Configuration Properties—>Debugging—>Command Arguments
2. 在Command Arguments中添加参数 barcode.png

运行结果

decoded EAN-13 symbol "9876543210128"

程序分析 
从例程中可以看出Magick只是用来打开图片,转换格式,转换成灰度,二维矩阵的作用,用OpenCV可以实现相同的作用。只需要将opencv的头文件和库目录添加到VS,修改图像处理部分为

//opencv
cv::Mat img = cv::imread("barcode.png");
cv::Mat imgGray;
imgGray.create(img.size(), CV_8UC1);
cvtColor(img, imgGray, CV_BGR2GRAY);
int width = imgGray.cols;   // extract dimensions
int height = imgGray.rows;

// wrap image data
Image image(width, height, "Y800", imgGray.data, width * height);

 同时添加opencv库

opencv_core2413d.lib
opencv_highgui2413d.lib
opencv_imgproc2413d.lib

编译,运行可以得到相同的解码结果。

03-29 16:50