ZBar在Windows上的使用(1)-ImageMagick
2015-10-13 10:40
393 查看
ZBar在Windows上的使用
下载ZBar v0.10 http://zbar.sourceforge.net/外网无法进入的话,在此下载http://download.csdn.net/detail/sunflower_boy/9175433
1.1 默认安装
注意勾选上Development Headers and Libraries
安装完成后可在ZBar安装路径下找到examples文件夹,用vs2008及以上编译器可以打开工程文件(由于权限问题,部分机器可能要将examples文件夹拷贝至其他目录下运行)
在工程属性中可以看见例程还需要ImageMagick组件来读取文件,将文件转换成需要的格式
下载ImageMagick
http://www.imagemagick.org/download/binaries/ImageMagick-6.9.2-4-Q8-x86-dll.exe
注意:我的版本是6.9.1-7-Q8-x86。和上面下载链接上的不一样,如果使用上面的程序安装,下面说明中的路径都要改成对应的版本路径。
2.1 默认安装
注意勾选Install development headers and libraries for C and C++
2.2 修改工程属性以匹配自己下载安装的版本
project->property->C/C++->General->Additional Include Directories
C:\Program Files (x86)\ImageMagick-6.9.1-Q8\include
2.3 project-property-C/C++-General-Additional Include Directories
C:\Program Files (x86)\ImageMagick-6.9.1-Q8\lib\CORE_RL_Magick++_.lib
2.4 如果出现error C2220: 警告被视为错误:打开属性project-property-C/C++-General->Treat Warnings As Errors改为No(/WX-)。
打开scan_image.cpp
屏蔽掉11行的
if(argc < 2) return(1);
将27行的
Magick::Image magick(argv[1]);
替换为
Magick::Image magick("barcode.png");
程序最后置断点,运行,OK!
分析
从例程中可以看出Magick只是用来打开图片,转换格式,转换成灰度,二维矩阵的作用。用OpenCV应该也可以。
附录1:
scan_image.cpp
#include <iostream> #include <Magick++.h> #include <zbar.h> #define STR(s) #s using namespace std; using namespace zbar; int main (int argc, char **argv) { //if(argc < 2) return(1); #ifdef MAGICK_HOME // http://www.imagemagick.org/Magick++/ // under Windows it is necessary to initialize the ImageMagick // library prior to using the Magick++ library Magick::InitializeMagick(MAGICK_HOME); #endif // create a reader ImageScanner scanner; // configure the reader scanner.set_config(ZBAR_NONE, ZBAR_CFG_ENABLE, 1); // obtain image data Magick::Image magick("barcode.png"); // read an image file int width = magick.columns(); // extract dimensions int height = magick.rows(); Magick::Blob blob; // extract the raw data magick.modifyImage(); magick.write(&blob, "GRAY", 8); const void *raw = blob.data(); // wrap image data Image image(width, height, "Y800", raw, width * height); // scan the image for barcodes int n = scanner.scan(image); // extract results for(Image::SymbolIterator symbol = image.symbol_begin(); symbol != image.symbol_end(); ++symbol) { // do something useful with results cout << "decoded " << symbol->get_type_name() << " symbol \"" << symbol->get_data() << '"' << endl; } // clean up image.set_data(NULL, 0); return(0); }
想要进一步了解Magick的可参考
http://www.imagemagick.org/Magick++/tutorial/Magick++_tutorial.pdf
相关文章推荐
- 批处理制作二维码生成器
- php使用Image Magick将PDF文件转换为JPG文件的方法
- jquery插件qrcode在线生成二维码
- php制作中间带自己定义图片二维码的方法
- php实现在线生成条形码示例分享(条形码生成器)
- zbar解码二维码和条形码示例
- php使用qr生成二维码的示例分享
- php实现扫描二维码根据浏览器类型访问不同下载地址
- PHP微信开发之二维码生成类
- PHP生成条形码大揭秘
- Jquery 类网页微信二维码图块滚动效果具体实现
- 使用PHP生成二维码的方法汇总
- Perl生成纯HTML代码二维码实例
- 基于JavaScript实现生成名片、链接等二维码
- Android开发实现模仿360二维码扫描功能实例详解
- php生成二维码的几种方式整理及使用实例
- PHP基于phpqrcode生成带LOGO图像的二维码实例
- PHP下通过QRCode类库创建中间带网站LOGO的二维码
- 移动端“畅销课秒杀”全新上线