zoukankan      html  css  js  c++  java
  • 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 (md5, pgp) Source   2009-11-10 15KB
    zbar-0.10.tar.gz (md5, pgp) Source   2009-11-10 18KB
    zbar-0.10.win32-py2.5.exe (md5, pgp) MS Windows installer 2.5 2009-11-10 74KB
    zbar-0.10.win32-py2.6.exe (md5, pgp) MS Windows installer 2.6 2009-11-10 205KB
    zbar-0.10.zip (md5, pgp) 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语言编译器的一点点基础,其次仔细查看错误,仔细查找说明文件。

     
  • 相关阅读:
    GitLab的基础使用-汉化配置
    GitLab的基础使用-数据备份与恢复
    Apache Hadoop集群扩容实战案例
    Hadoop 集群-完全分布式模式(Fully-Distributed Mode)
    HDFS参数调优总结
    网站压力测试 工具webbench
    2013年十大必知的大数据分析公司
    做电子商务网上开店应该读的书
    教你用大功率路由器覆盖3平方公里的WiFi广告
    中央推进城镇化建设 六行业分享25万亿蛋糕
  • 原文地址:https://www.cnblogs.com/zhongtang/p/7148082.html
Copyright © 2011-2022 走看看