linux下zbar源码编译和使用教程

zbar源码编译

wget http://downloads.sourceforge.net/project/zbar/zbar/0.10/zbar-0.10.tar.gz

tar -zvxf zbar-0.10.tar.gz

cd zbar-0.10

export CFLAGS="" && ./configure --prefix=$(pwd)/output0808 --enable-shared --without-imagemagick --without-jpeg --without-python --without-gtk --without-qt --disable-video

make&&make intsall

成功后在output0808文件夹下得到如下结果

OpenCV+Zbar实现二维码识别demo

#include <iostream>
#include <algorithm>
#include <vector>
#include <zbar.h>

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

using namespace std;
using namespace cv;
using namespace zbar;

typedef struct
{
  string type;
  string data;
  vector <Point> location;
}decodedObject;

// Find and decode barcodes and QR codes
void decode(Mat &im, vector<decodedObject>&decodedObjects)
{

  // Create zbar scanner
  ImageScanner scanner;

  // Configure scanner
  scanner.set_config(ZBAR_QRCODE, ZBAR_CFG_ENABLE, 1);

  // Convert image to grayscale
  Mat imGray;
  cvtColor(im, imGray,CV_BGR2GRAY);
  // Wrap image data in a zbar image
  Image image(im.cols, im.rows, "Y800", (uchar *)imGray.data, im.cols * im.rows);

  // Scan the image for barcodes and QRCodes
  int n = scanner.scan(image);

  // Print results
  for(Image::SymbolIterator symbol = image.symbol_begin(); symbol != image.symbol_end(); ++symbol)
  {
    decodedObject obj;

    obj.type = symbol->get_type_name();
    obj.data = symbol->get_data();

    // Print type and data
    cout << "Type : " << obj.type << endl;
    cout << "Data : " << obj.data << endl << endl;
    decodedObjects.push_back(obj);
  }
}

int main(int argc, char *argv[])
{

  // Read image
  string imagepath = argv[1];
  Mat im = imread(imagepath);

   // Variable for decoded objects
   vector<decodedObject> decodedObjects;

   // Find and decode barcodes and QR codes
   decode(im, decodedObjects);
   return 0;
 }

我们采用CMake进行编译构建

CMakeLists.txt

project(qrtest)
find_package(OpenCV 2.4.9 REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
include_directories("${PROJECT_SOURCE_DIR}/include")
add_executable(qrtest test.cpp)
target_link_libraries(qrtest ${OpenCV_LIBS})
target_link_libraries(qrtest "${PROJECT_SOURCE_DIR}/lib/libzbar.so.0.2.0")
target_link_libraries(qrtest pthread)

然后执行命令

mkdir build

cd build

cmake ..

make

output0808下的文件如下

测试

在output0808/build文件夹下执行命令

./qrtest qr_1.png

得到结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在C语言中编译ZBar,您需要按照以下步骤进行操作: 1. 下载ZBar源代码:您可以从ZBar的官方网站上下载源代码压缩包,解压后得到源代码文件。 2. 安装编译工具:确保您的系统上已经安装了C编译器。对于Linux系统,可以使用gcc编译器。对于Windows系统,可以使用MinGW或者Cygwin等工具。 3. 打开终端(Linux)或者命令提示符(Windows):进入到源代码所在的目录。 4. 配置编译选项:执行"./configure"命令,该命令将会根据您的系统环境自动配置编译选项。如果没有出现错误提示,则表示配置成功。 5. 编译源代码:执行"make"命令进行编译,该命令将会编译源代码并生成可执行文件。这个过程可能需要一些时间,请耐心等待。 6. 安装ZBar库:执行"sudo make install"命令,该命令将会安装编译好的ZBar库到系统中。如果是Windows系统,则可以将生成的库文件手动拷贝到指定目录。 7. 添加头文件和库文件路径:在您的C代码中,需要添加ZBar的头文件路径和库文件路径。例如,可以使用#include <zbar.h>来引入ZBar的头文件,并使用"-lzbar"选项链接ZBar库。 8. 编译您的C代码:使用C编译编译您的C代码,同时添加上一步中设置好的头文件路径和库文件路径。请确保编译成功并生成可执行文件。 以上是使用C语言编译ZBar的基本步骤。根据不同的操作系统和编译环境,可能会有一些细微的差异,请按照具体情况进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值