win32 zbar
一、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版本。
| File | Type | Py Version | Uploaded on | Size | |
|---|---|---|---|---|---|
| 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:\MinGW\bin,记得,如果里面还有其他的变量,记得要加个分号啊,分号得在英文输入模式下输入的。
2)、新建LIBRARY_PATH变量,如果有的话,在值中加入D:\MinGW\lib,这是标准库的位置。
3)、新建C_INCLUDEDE_PATH变量,值设为D\MinGW\include。
4)、新建CPLUS_INCLUDE_PATH变量,值为D\MinGW\include\c++\3.4.5;D:\MinGW\include\c++\3.4.5;D:\MinGW\include\c++\3.4.5\backward;D:\MinGW\include。
4、python中配置mingw编译器。
在C:\Python27\Lib\distutils下新建或者修改distutils.cfg文件,内容如下:
[build]
compiler=mingw32
2.2、pip安装(pip install zbar),下面开始逐项排雷。
1、pip install zbar,果然出现c语言编译错误,没有找到zbar.h头文件(下图中蓝色字体部分)
C:\Users\zou>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:\python27\python.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(‘\r\n‘, ‘\n‘);f.close();exec(compile(code, __file__, ‘exec‘))" install --record c:\users\joshua~1\appdata\local\temp\pip-2chu03-record\install-record.txt --single-version-externally-managed --compile:
running install
running build
running build_ext
building ‘zbar‘ extension
creating build
creating build\temp.win32-2.7
creating build\temp.win32-2.7\Release
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Ic:\python27\include -Ic:\python27\PC -c zbarmodule.c -o build\temp.win32-2.7\Release\zbarmodule.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
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‘,
],
libraries = [ ‘zbar‘ ],
include_dirs = [ ‘..\include‘ ],(自己的路径)
),
4、再次执行安装。
D:\src\python>python setup.py install
running install
running build
running build_ext
building ‘zbar‘ extension
creating build
creating build\temp.win32-2.7
creating build\temp.win32-2.7\Release
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c zbarmodule.c -o build\temp.win32-2.7\Release\zbarmodule.o
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c enum.c -o build\temp.win32-2.7\Release\enum.o
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c exception.c -o build\temp.win32-2.7\Release\exception.o
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c symbol.c -o build\temp.win32-2.7\Release\symbol.o
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c symbolset.c -o build\temp.win32-2.7\Release\symbolset.o
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c symboliter.c -o build\temp.win32-2.7\Release\symboliter.o
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c image.c -o build\temp.win32-2.7\Release\image.o
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c processor.c -o build\temp.win32-2.7\Release\processor.o
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c imagescanner.c -o build\temp.win32-2.7\Release\imagescanner.o
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c decoder.c -o build\temp.win32-2.7\Release\decoder.o
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -Ic:\python27\include -Ic:\python27\PC -c scanner.c -o build\temp.win32-2.7\Release\scanner.o
writing build\temp.win32-2.7\Release\zbar.def
creating build\lib.win32-2.7
c:\mingw\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.7\Release\zbarmodule.o build\temp.win32-2.7\Release\enum.o build\temp.win32-2.7\Release\exception.o build\temp.win32-2.7\Release\symbol.o build\temp.win32-2.7\Release\symbolset.o build\temp.win32-2.7\Release\symboliter.o build\temp.win32-2.7\Release\image.o build\temp.win32-2.7\Release\processor.o build\temp.win32-2.7\Release\imagescanner.o build\temp.win32-2.7\Release\decoder.o build\temp.win32-2.7\Release\scanner.o build\temp.win32-2.7\Release\zbar.def -Lc:\python27\libs -Lc:\python27\PCbuild -Lc:\python27\PC\VS9.0 -lzbar -lpython27 -lmsvcr90 -o build\lib.win32-2.7\zbar.pyd
c:\mingw\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot find -lzbar
collect2: ld returned 1 exit status
error: command ‘c:\\mingw\\bin\\gcc.exe‘ failed with exit status 1
继续报错,不能zbar的lib库。
5、进入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 。
6、进入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执行程序
7、安装zbar reader,默认路径 C:\Program Files (x86)\ZBar ,在bin目录下,果然找到libzbar-0.dll动态链接库文件。
8、拷贝libzbar-9.dll 到c:\python27\LIBS目录下
9、修改setup.py文件,指向zbar-0
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‘,
],
libraries = [ ‘zbar-0‘ ],
include_dirs = [ ‘..\include‘ ],
),
10、再次执行 python setup.py install
C:\src\python>python setup.py install
running install
running build
running build_ext
building ‘zbar‘ extension
creating build
creating build\temp.win32-2.7
creating build\temp.win32-2.7\Release
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c zbarmodule.c -o build\temp.win32-2.7\Release\zbarmodule.o
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c enum.c -o build\temp.win32-2.7\Release\enum.o
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c exception.c -o build\temp.win32-2.7\Release\exception.o
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c symbol.c -o build\temp.win32-2.7\Release\symbol.o
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c symbolset.c -o build\temp.win32-2.7\Release\symbolset.o
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c symboliter.c -o build\temp.win32-2.7\Release\symboliter.o
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c image.c -o build\temp.win32-2.7\Release\image.o
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c processor.c -o build\temp.win32-2.7\Release\processor.o
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c imagescanner.c -o build\temp.win32-2.7\Release\imagescanner.o
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c decoder.c -o build\temp.win32-2.7\Release\decoder.o
C:\mingw/bin\gcc.exe -mno-cygwin -mdll -O -Wall -I..\include -IC:\Python27\include -IC:\Python27\PC -c scanner.c -o build\temp.win32-2.7\Release\scanner.o
writing build\temp.win32-2.7\Release\zbar.def
creating build\lib.win32-2.7
C:\mingw/bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.7\Release\zbarmodule.o build\temp.win32-2.7\Release\enum.o build\temp.win32-2.7\Release\exception.o
build\temp.win32-2.7\Release\symbol.o build\temp.win32-2.7\Release\symbolset.o build\temp.win32-2.7\Release\symboliter.o build\temp.win32-2.7\Release\image.o
build\temp.win32-2.7\Release\processor.o build\temp.win32-2.7\Release\imagescanner.o build\temp.win32-2.7\Release\decoder.o build\temp.win32-2.7\Release\scanner.o
build\temp.win32-2.7\Release\zbar.def -LC:\Python27\libs -LC:\Python27\PCbuild -LC:\Python27\PC\VS9.0 -lzbar-0 -lpython27 -lmsvcr90 -o build\lib.win32-2.7\zbar.pyd
running install_lib
copying build\lib.win32-2.7\zbar.pyd -> C:\Python27\Lib\site-packages
running install_egg_info
Writing C:\Python27\Lib\site-packages\zbar-0.10-py2.7.egg-info
至此,编译并安装成功。
注意,上文中蓝色字体部分,Lib目录默认找了python27\libs目录,所以前文第8步拷贝到libs的奥秘正在于此。
win32 zbar的更多相关文章
- VS2010+OpenCV3.4.1+zbar 64位
1. OpenCV3.4.1和zbar文件夹放到指定的路径下,我把它们放在了"D:\二维码\环境"中. zbar:链接:https://pan.baidu.com/s/11eCDV ...
- 配置zbar识别二维码(转载)
原文地址:http://blog.csdn.net/dcrmg/article/details/52108258 二维码解码器Zbar+VS2012开发环境配置 Zbar条码解码器是一个开源的二维码 ...
- 二维码解码器Zbar+VS2012开发环境配置
Zbar条码解码器是一个开源的二维码(包括条形码)解码器,可以识别来至于视频流,图像文件.手持扫码器和视频设备(如摄像头)等二维码识别,支持EAN-13/UPC-A, UPC-E, EAN-8, Co ...
- C#[Win32&WinCE&WM]应用程序只能运行一个实例:MutexHelper
前言 在开发应用程序时,通常只让程序运行一个实例.所以,就要判断程序是否已经运行. 下面是我自己在项目中使用到,封装好的帮助类.有 普通的 C# 应用程序 和 Windows CE 和 Windows ...
- java.lang.UnsatisfiedLinkError: %1 不是有效的 Win32 应用程序。
JNA 调用 dll 库时,保错: ///////////////// 通过 JNA 引入 DLL 库 //////////// /** * ID_FprCap.dll 负责指纹的采集, 指纹仪的初始 ...
- C#使用zxing,zbar,thoughtworkQRcode解析二维码,附源代码
最近做项目需要解析二维码图片,找了一大圈,发现没有人去整理下开源的几个库案例,花了点时间 做了zxing,zbar和thoughtworkqrcode解析二维码案例,希望大家有帮助. zxing是谷歌 ...
- 初次认识 C# win32 api
第一次接触win32api,刚开始的时候有点迷迷糊糊的. Windows API 就是windows应用程序接口. win api向上就是windows应用程序,向下就是windows操作系统核心. ...
- [老文章搬家] [翻译] 深入解析win32 crt 调试堆
09 年翻译的东西. 原文见: http://www.nobugs.org/developer/win32/debug_crt_heap.html 在DeviceStudio的Debug编译模式下, ...
- Virus.Win32.Virlock.b分析
0x00 样本说明 分析样本是被0b500d25f645c0b25532c1e3c9741667的样本感染得到.感染前的文件是Tcpview.exe,一款windows网络连接查看工具. 感染前后文件 ...
随机推荐
- java软件设计模式——单例设计模式中的【饿汉式】与 【懒汉式】示例
以下为单例设计模式中的两种经典模式的代码示意: 单例设计模式(spring框架IOC,默认创建的对象都是单例的): 饿汉式: public class SingleClass { private Si ...
- 枚举生成1~n的排序
/*枚举生成1~n的排列*/ #include <iostream> #include<algorithm> #include<queue> #include< ...
- SSMS安装英文版后无法修改为中文
SSMS的UI语言和所安装的Visual Studio的语言是相关的,你这种情况应该是第一次安装的时候安装了英文版的visual studio isolated shell,在卸载的时候你没有卸载这个 ...
- MySQL5.5安装与多实例
MySQL5.5编译安装 #1.2 cmake软件 cd /home/oldboy/tools/ tar xf cmake-2.8.8.tar.gz cd cmake-2.8.8 ./configur ...
- Spring官方文档
官网里还真不好找,编译的时候pdf版还没编译成功,这里记录下 http://docs.spring.io/spring/
- git账户的存储
在使用git时,使用git pull,或git push,每次都要我输入用户名和密码,比较麻烦.git有个参数可以解决这个问题. 修改./git/config文件,增加 [credential] he ...
- 小米手机Root 刷机
需要备份的资料: miui系统资料:电话.短信.便签,有小米云账号wifi下自己会备份好的. 应用数据:微信.qq 聊天记录: UC浏览器收藏夹. root后, rootexplorer,选择某个文件 ...
- Linux git 关联 github仓库
背景: 由于最近学习Spring cloud docker 一键部署, 需要把github仓库项目, 放在Linux上面启动, (以下位置在/root/目录中执行)步骤, 1:安装 git >y ...
- Redis持久化RDB和AOF原理
前言: redis持久化方式分为两种:RDB快照和AOF方式(默认为RDB模式),当Redis服务器重启的时候,会自动恢复数据,优先从AOF中恢复,其次才从RDB中恢复 一.RDB快照模式 RDB ...
- jq 遍历 each方法
1.选择器+遍历 $('div').each(function (i){ i就是索引值 this 表示获取遍历每一个dom对象 }); 2.选择器+遍历 $('div').each(function ...