ZBar交叉编译移植到ARM

第一步:下载Zbar源码:http://zbar.sourceforge.net/download.html

第二步:交叉编译ZBar

     (1)解压缩源码包:tar -jxvf zbar-0.10.tar.bz2

           进入ZBar源码目录内,创建一个output文件夹以用来放置编译出来的文件:

               cd zbar-0.10                                   

               mkdir output

           结果如图所示:

              

     (2)配置编译ZBar库:

./configure --prefix=$PWD/output/ --without-gtk --without-qt --without-imagemagick --without-python --disable-video

              

       (3)make & make install

             就会发现,output里面有了编译的输出文件:

            

         以上就是交叉编译ZBar的全部,下面是一个例子:

      (4)配置pkg-config:

        export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/chris/Desktop/zbar-         0.10/output/lib/pkgconfig

           然后:  pkg-config --libs --cflags zbar   可以看到:

                

             表示配置成功。

第三步:编写一个小例子编译运行:

                例子是利用opencv与Zbar解码一张二维码图片,并且在终端显示其数据与类型:

#include <opencv2/opencv.hpp>
#include <iostream>
#include <stdio.h>
#include "zbar.h"
 
int main(int argc, char** argv){
	
	if(argc < 2){
		
		std::cout << "Usage: ./test_zbar barcode.png" << std::endl;
		return -1;
	}
	
	cv::Mat src = cv::imread(argv[1], 1);
	
	cv::Mat gray;
	if (src.channels() == 1) gray = src;
	else cv::cvtColor(src, gray, CV_RGB2GRAY);
	int width 	= gray.cols;
	int height 	= gray.rows;
	
	// create a reader
	zbar::ImageScanner scanner;
	// configure the reader
	scanner.set_config(zbar::ZBAR_NONE, zbar::ZBAR_CFG_ENABLE, 1);
	unsigned char *pdata = (unsigned char *)gray.data;
	zbar::Image imageZbar(width, height, "Y800", pdata, width * height);
	int n = scanner.scan(imageZbar);
	if (n > 0){
		
		// extract results
		for (zbar::Image::SymbolIterator symbol = imageZbar.symbol_begin();
			symbol != imageZbar.symbol_end();
			++symbol) {
			// do something useful with results
			std::string decodedFmt = symbol->get_type_name();
			std::string symbolData = symbol->get_data();
			
			std::cout << symbolData << std::endl;
		}
	}else{
		
		char error_str[64];
		sprintf(error_str, "Not got a barcode!");
		
		std::cout << "Not got a barcode!" << std::endl;
	}
	
	cv::imwrite("result.png", src);
	
	// clean up
	imageZbar.set_data(NULL, 0);
}

 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值