zoukankan      html  css  js  c++  java
  • ZBar 是款桌面电脑用条形码/二维码扫描工具

    ZBar 是款桌面电脑用条形码/二维码扫描工具

    windows平台python 2.7环境编译安装zbar

     

    最近一个项目需要识别二维码,找来找去找到了zbar和zxing,中间越过无数坑,总算基本上弄明白,分享出来给大家。

    一、zbar官方介绍

    ZBar 是款桌面电脑用条形码/二维码扫描工具,支持摄像头及图片扫描,支持多平台,例如 iPhone,Andriod 手机,同时 ZBar封装了二维码扫描的 API 开发包。

    ZBar 目前条码类型有:EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, Interleaved 2 of 5 and QR Code.

    从上可以看出,zbar有挺多优势,封装了API,支持多平台,支持多种条码类型,包括一维、二维码。

    具体主页:http://zbar.sourceforge.net/

    二、zbar的python安装

    进入https://pypi.python.org/pypi/zbar,可以看到最新版本是0.10,提供源码以及python2.5、python2.6下的exe版本。

    FileTypePy VersionUploaded onSize
    zbar-0.10.tar.bz2 (md5pgp) Source   2009-11-10 15KB
    zbar-0.10.tar.gz (md5pgp) Source   2009-11-10 18KB
    zbar-0.10.win32-py2.5.exe (md5pgp) MS Windows installer 2.5 2009-11-10 74KB
    zbar-0.10.win32-py2.6.exe (md5pgp) MS Windows installer 2.6 2009-11-10 205KB
    zbar-0.10.zip (md5pgp) Source   2009-11-10 31K
     

    结论:没有whl,没有python2.7的exe安装,更不奢望64位版本之类。

    1、pypi网址,找whl或者exe安装包

    百度找到非官方发布的python2.7下zbar安装文件,https://github.com/jacobvalenta/zbar-py27-msi/blob/master/zbar-0.10.win32-py2.7_2.msi。

    实测可用,这里为了说明pypi的编译过程,不使用该方案。


    2、pypi源码安装

    2.1、配置mingw编译环境

    windows系统安装并配置mingw编译器,是另一个大坑,爬坑的过程不细说,简要描述如下:

    1、下载mingw 5.1.6 ,地址如下:http://d1.rsdown.cn/soft1/mingw5.1.6.zip
    2、解压后,双击其中的mingw.exe进行安装,选择常用的安装包,例如gcc等。
    3、配置mingw安装路径,参看:http://blog.csdn.net/wangrouyi/article/details/7454687(注意,这个说明中的mingw是按照在d:mingw下,如果你是安装在c盘,则要改成c:mingw。)

    复制代码
    右击我的电脑,点属性->高级->环境变量。然后:
    1)、在PATH里加入D:MinGWin,记得,如果里面还有其他的变量,记得要加个分号啊,分号得在英文输入模式下输入的。
    2)、新建LIBRARY_PATH变量,如果有的话,在值中加入D:MinGWlib,这是标准库的位置。
    3)、新建C_INCLUDEDE_PATH变量,值设为DMinGWinclude。
    4)、新建CPLUS_INCLUDE_PATH变量,值为DMinGWincludec++3.4.5;D:MinGWincludec++3.4.5;D:MinGWincludec++3.4.5ackward;D:MinGWinclude。
    复制代码

    4、python中配置mingw编译器。

    在C:Python27Libdistutils下新建或者修改distutils.cfg文件,内容如下:

    [build]
    compiler=mingw32

    2.2、pip安装(pip install zbar),下面开始逐项排雷。

    1、pip install zbar,出现c语言编译错误,没有找到zbar.h头文件(下图中红色字体部分)

    复制代码
    C:Userszou>pip install zbar
    Collecting zbar
      Downloading http://mirrors.aliyun.com/pypi/packages/33/54/cc5819efc9ee7e34b60b41e1d2d4753b6dd0c26a41c9a552611f66aa106e/zbar-0.10.tar.bz2
    Installing collected packages: zbar
      Running setup.py install for zbar ... error
        Complete output from command c:python27python.exe -u -c "import setuptools, tokenize;__file__='c:\users\joshua~1\appdata\local\temp\pip-build-pnikpa\zbar\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('
    ', '
    ');f.close();exec(compile(code, __file__, 'exec'))" install --record c:usersjoshua~1appdatalocal	emppip-2chu03-recordinstall-record.txt --single-version-externally-managed --compile:
        running install
        running build
        running build_ext
        building 'zbar' extension
        creating build
        creating build	emp.win32-2.7
        creating build	emp.win32-2.7Release
        c:mingwingcc.exe -mno-cygwin -mdll -O -Wall -Ic:python27include -Ic:python27PC -c zbarmodule.c -o build	emp.win32-2.7Releasezbarmodule.o
        In file included from zbarmodule.c:24:
        zbarmodule.h:26:18: zbar.h: No such file or directory
        In file included from zbarmodule.c:24:
        zbarmodule.h:37: error: `ZBAR_ERR_NUM' undeclared here (not in a function)
        zbarmodule.h:67: error: syntax error before "zbar_image_t"
        zbarmodule.h:67: warning: no semicolon at end of struct or union
        zbarmodule.h:69: error: syntax error before '}' token
        zbarmodule.h:69: warning: type defaults to `int' in declaration of `zbarImage'
        zbarmodule.h:69: warning: data definition has no type or storage class
    复制代码

    2、进入https://github.com/ZBar/ZBar/tree/master/python 目录,查看python下的说明,发现如下文字:

    复制代码
    To install this module type the following::
    
       python setup.py install
    
    Dependencies
    ------------
    
    This module requires the ZBar Bar Code Reader, which may be obtained
    from:
    
    * http://zbar.sourceforge.net/
    
    Windows users please note: the module *will NOT load* unless the ZBar
    library DLL (currently libzbar-0.dll) is available in your Windows system
    PATH!
    复制代码

    简单翻译一下:

    a、python zbar安装方法:python setup.py install

    b、python zbar需要zbar reader,zbar reader可以从http://zbar.sourceforge.net/网址下载到。

    c、windows平台,需要zbar dll,最新版本名字为libzbar-0.dll 。

    3、进入http://zbar.sourceforge.net/download.html,下载windows下的zbar reader执行程序。

    复制代码
    Windows Installer
    
    Note that the Windows port is in an unstable, testing phase. If you do try it out, please let us know how well it's working for you and open a support request if you encounter any problems.
    
    The Windows Installation Guide has detailed instructions for installing and getting started with ZBar on Windows.

    ZBar 0.10 Windows installer The Windows installer now includes pre-built binaries of the dependencies (ImageMagick et al). Copyright, license, and source code details for these libraries may be found in the README included with the distribution. Windows binaries for the Python module are available from PyPI
    复制代码

     具体网址:https://jaist.dl.sourceforge.net/project/zbar/zbar/0.10/zbar-0.10-setup.exe ,下载后安装zbar  reader执行程序
     

    4、安装zbar reader,默认路径 C:Program Files (x86)Bar 。

    在C:Program Files (x86)Barlib 目录下,果然找到libzbar-0.lib库文件。

    在C:Program Files (x86)Barinclude 目录下,果然找到zbar.h头文件。

    5、从https://pypi.python.org/pypi/zbar下载zbar.0.1.0.zip源码文件,解压到d:src目录,修改其中的setup.py文件,指向include、lib目录。

    复制代码
        ext_modules = [
            Extension('zbar', [
                    'zbarmodule.c',
                    'enum.c',
                    'exception.c',
                    'symbol.c',
                    'symbolset.c',
                    'symboliter.c',
                    'image.c',
                    'processor.c',
                    'imagescanner.c',
                    'decoder.c',
                    'scanner.c',
                    ],
             library_dirs = ['C:Program Files (x86)Barlib' ] ,
                libraries= ['libzbar-0'],
                include_dirs = ['C:Program Files (x86)Barinclude'], ),
    复制代码

    6、手工执行执行安装。

    复制代码
    d:src>python setup.py install
    running install
    running build
    running build_ext
    building 'zbar' extension
    c:mingwingcc.exe -mno-cygwin -mdll -O -Wall "-IC:Program Files (x86)Barinclude" -Ic:python27include -Ic:python27PC -c zbarmodule.c -o build emp.win32-2.7Releasezbarmodule.o
    c:mingwingcc.exe -mno-cygwin -mdll -O -Wall "-IC:Program Files (x86)Barinclude" -Ic:python27include -Ic:python27PC -c enum.c -o build emp.win32-2.7Releaseenum.o
    c:mingwingcc.exe -mno-cygwin -mdll -O -Wall "-IC:Program Files (x86)Barinclude" -Ic:python27include -Ic:python27PC -c exception.c -o build emp.win32-2.7Releaseexception.o
    c:mingwingcc.exe -mno-cygwin -mdll -O -Wall "-IC:Program Files (x86)Barinclude" -Ic:python27include -Ic:python27PC -c symbol.c -o build emp.win32-2.7Releasesymbol.o
    c:mingwingcc.exe -mno-cygwin -mdll -O -Wall "-IC:Program Files (x86)Barinclude" -Ic:python27include -Ic:python27PC -c symbolset.c -o build emp.win32-2.7Releasesymbolset.o
    c:mingwingcc.exe -mno-cygwin -mdll -O -Wall "-IC:Program Files (x86)Barinclude" -Ic:python27include -Ic:python27PC -c symboliter.c -o build emp.win32-2.7Releasesymboliter.o
    c:mingwingcc.exe -mno-cygwin -mdll -O -Wall "-IC:Program Files (x86)Barinclude" -Ic:python27include -Ic:python27PC -c image.c -o build emp.win32-2.7Releaseimage.o
    c:mingwingcc.exe -mno-cygwin -mdll -O -Wall "-IC:Program Files (x86)Barinclude" -Ic:python27include -Ic:python27PC -c processor.c -o build emp.win32-2.7Releaseprocessor.o
    c:mingwingcc.exe -mno-cygwin -mdll -O -Wall "-IC:Program Files (x86)Barinclude" -Ic:python27include -Ic:python27PC -c imagescanner.c -o build emp.win32-2.7Releaseimagescanner.o
    c:mingwingcc.exe -mno-cygwin -mdll -O -Wall "-IC:Program Files (x86)Barinclude" -Ic:python27include -Ic:python27PC -c decoder.c -o build emp.win32-2.7Releasedecoder.o
    c:mingwingcc.exe -mno-cygwin -mdll -O -Wall "-IC:Program Files (x86)Barinclude" -Ic:python27include -Ic:python27PC -c scanner.c -o build emp.win32-2.7Releasescanner.o
    writing build emp.win32-2.7Releasezbar.def
    c:mingwingcc.exe -mno-cygwin -shared -s build emp.win32-2.7Releasezbarmodule.o build emp.win32-2.7Releaseenum.o build emp.win32-2.7Releaseexception.o build emp.win32-2.7Releasesymbol.o
    build emp.win32-2.7Releasesymbolset.o build emp.win32-2.7Releasesymboliter.o build emp.win32-2.7Releaseimage.o build emp.win32-2.7Releaseprocessor.o build emp.win32-2.7Releaseimagescanner.o
    build emp.win32-2.7Releasedecoder.o build emp.win32-2.7Releasescanner.o build emp.win32-2.7Releasezbar.def
    "-LC:Program Files (x86)Barlib" -Lc:python27libs -Lc:python27PCbuild -Lc:python27PCVS9.0 -llibzbar-0 -lpython27 -lmsvcr90 -o buildlib.win32-2.7zbar.pyd
    running install_lib
    copying buildlib.win32-2.7zbar.pyd -> c:python27Libsite-packages
    running install_egg_info
    Writing c:python27Libsite-packageszbar-0.10-py2.7.egg-info
    复制代码
    至此,编译并安装成功。

    注意,上文中红色字体部分,Include目录增加了C:Program Files (x86)Barinclude,Lib目录增加了C:Program Files (x86)Barlib目录 。

    至于  libzbar-0 是因为lib目录中是已经有lib文件。


    三、总结

    总结上述排雷的过程,无非是对c语言编译器的一点点基础,其次仔细查看错误,仔细查找说明文件。
  • 相关阅读:
    判断当前时间
    判断页面有没有点击
    js前台与后台数据交互-后台调前台(后台调用、注册客户端脚本)
    js前台与后台数据交互-前台调后台
    关于Cookie
    关于Session
    asp.net中的<%%>的几种形式的用法
    解析客户端脚本、服务器端脚本
    Asp.net--Ajax前后台数据交互
    Asp.Net 前后台交互小结
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/7158667.html
Copyright © 2011-2022 走看看