ZBar在Windows上的使用(2)-OpenCV
2015-10-20 11:49
253 查看
安装完ZBar和ImageMagick++后,发现ImageMagick只是用来打开图片,转换成统一的灰度矩阵数据。所以这次我尝试用OpenCV来实现ImageMagick的功能。
http://www.cnblogs.com/freedomshe/archive/2012/04/25/2470540.html
1.删除工程属性中ImageMagick的相关设置,增加OpenCV的设置。
我的OpenCV版本是2.4.9。OpenCV安装请参考http://www.cnblogs.com/freedomshe/archive/2012/04/25/2470540.html
1.VC++目录->可执行文件目录
C:\Program Files\opencv\build\x86\vc10\bin;
2.C/C++->常规->附加包含目录
C:\Program Files\opencv\build\include;
3.链接器->常规->附加库目录
C:\Program Files\opencv\build\x86\vc10\lib
4.链接器->输入->附加依赖性
opencv_calib3d249d.lib opencv_contrib249d.lib opencv_core249d.lib opencv_features2d249d.lib opencv_flann249d.lib opencv_gpu249d.lib opencv_highgui249d.lib opencv_imgproc249d.lib opencv_legacy249d.lib opencv_ml249d.lib opencv_objdetect249d.lib opencv_ts249d.lib opencv_video249d.lib
2.修改源码如下
#include <iostream> //#include <Magick++.h> #include <zbar.h> #define STR(s) #s #include <opencv2/opencv.hpp> using namespace std; using namespace zbar; using namespace cv; 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(); 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", raw, width * height); Image image(width, height, "Y800", imgGray.data, 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); }
3.修改完成后运行出现fopen.c中if(*file==_T(‘\0’))的报错
修改属性C/C++->预处理器->预处理器定义将NDEBUG改成_DEBUG4.完成!
用更多图片试验后证明OpenCV完全可以取代ImageMagick++。下一步测试Qt和ZBar。相关文章推荐
- Linux线程同步(条件变量和信号量)
- Nexus私服启动失败
- CentOS 6.6下NFS安装配置
- 单链表的PushBack,PopBack,Insert...函数
- 复制Tomcat注意事项
- 利用ApachePOI输出Excel文件
- Linux流量监控的几个方法
- 运维人员应该掌握哪些常用技术
- 六款优秀的 Linux 基准测试工具
- Linux远程管理器xshell和xftp使用教程
- Centos 6.4 python 2.6 升级到 2.7
- CentOS 安装 Chrome
- [异常] Java文件上传异常org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of mul
- Linux常用命令大全
- CentOS6.5安装VNC
- Linux安装JDK详细步骤(rpm方式)
- 关于网站备案的44个问题
- linux 修改IP, DNS 命令
- linux 修改IP, DNS 命令
- 电商网站高并发下的数据安全