Python学习笔记--使用Zbar解码二维码

2023-11-09 07:48

本文主要是介绍Python学习笔记--使用Zbar解码二维码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  前几天朋友让我用Python写的解码二维码的程序,我在网上东找西找,找到了所关注的bigxupython 使用zbar解码二维码。感觉他的比较靠谱,然后就使用了下。但是他的介绍博客有点不详细,我在此补充下,留作自己的查阅笔记,同时以免以后大家安装测试遇到麻烦,以下红色是我的字。

    首先他的文字介绍:使用python做二位码的解析。非常的方便,需要安装zbar,我使用的是python2.6,Windows Xp,下载的是zbar-0.10.win32-py2.6.exe可以到http://pypi.python.org/pypi/zbar/上面下载,这个安装包比较方便,源码安装比较麻烦,还需要安装Mingw,我在虚拟机下面是python2.7试一下安装没有成功。还需要安装zbar-0.10-setup.exe。安装完如下所示可以直接使用。将zar安装目录下面 的dll文件复制到Python26\Lib\site-packages下,就可以使用python的zbar模块了。注解:zbar-0.10.win32-py2.6.exe 只能在32位系统下使用,你在查攻略如何在64位系统做文件的修改都很不如意,还不如直接在32的XP上使用,直接安装成功。


     

他说到简单图片扫描程序-----他这个程序是在Linux命令行环境下运行的,或者在python的自带的命令行窗口来运行命令(不是Python的IDLE),是Python(command line),在所敲的命令行中具体指定要解码的二维码图片名称。


如果不想在命令行里操作,就要修改程序代码,首先把测试用的barcode.png放到D:zbar目录下(当然也可以自己指定目录和图片),把原文第05行

  1. if len(argv) < 2: exit(1)修改成img_file="barcode.png",把原文第11行 pil = Image.open(argv[1]).convert('L')修改成pil=Image.open(img_file).conver('L')-------------当然这是把要检测的图片写死在程序里,以后如果你想对别的图片进行解析,可在修改程序第五行的图片名。


#!/usr/bin/python
from sys import argv
import zbar
import Image
img_file="barcode.png"
# create a reader
scanner = zbar.ImageScanner()
# configure the reader
scanner.parse_config('enable')
# obtain image data
pil=Image.open(img_file).conver('L')
width, height = pil.size
raw = pil.tostring()
# wrap image data
image = zbar.Image(width, height, 'Y800', raw)
# scan the image for barcodes
scanner.scan(image)
# extract results
for symbol in image:# do something useful with resultsprint 'decoded', symbol.type, 'symbol', '"%s"' % symbol.data# clean up
del(image)

pil把image转换得到大小等数值,并转换成字符串格式。

zbar把pil转换成zbar自身定义的数据格式,然后赋值给image


对于视频检测的代码可以直接运用在XP上,不用做修改。


#!/usr/bin/python
from sys import argv
import zebra# create a Processor
proc = zbar.Processor()# configure the Processor
proc.parse_config('enable')# initialize the Processor
device = '/dev/video0'
if len(argv) > 1:device = argv[1]
proc.init(device)# setup a callback
def my_handler(proc, image, closure):# extract resultsfor symbol in image:if not symbol.count:# do something useful with resultsprint 'decoded', symbol.type, 'symbol', '"%s"' % symbol.dataproc.set_data_handler(my_handler)# enable the preview window
proc.visible = True# initiate scanning
proc.active = True
try:proc.user_wait()
except zbar.WindowClosed:pass

zbar 首先创建一个Processor,然后配置该处理器,然后初始化该处理器。定义一个反馈函数my_handler,然后该处理器调用该函数。之后设置该处理器的预览窗口可见,最后激活该处理器

                                    

这篇关于Python学习笔记--使用Zbar解码二维码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/374827

相关文章

使用animation.css库快速实现CSS3旋转动画效果

《使用animation.css库快速实现CSS3旋转动画效果》随着Web技术的不断发展,动画效果已经成为了网页设计中不可或缺的一部分,本文将深入探讨animation.css的工作原理,如何使用以及... 目录1. css3动画技术简介2. animation.css库介绍2.1 animation.cs

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Python文件操作与IO流的使用方式

《Python文件操作与IO流的使用方式》:本文主要介绍Python文件操作与IO流的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python文件操作基础1. 打开文件2. 关闭文件二、文件读写操作1.www.chinasem.cn 读取文件2. 写

PyQt6中QMainWindow组件的使用详解

《PyQt6中QMainWindow组件的使用详解》QMainWindow是PyQt6中用于构建桌面应用程序的基础组件,本文主要介绍了PyQt6中QMainWindow组件的使用,具有一定的参考价值,... 目录1. QMainWindow 组php件概述2. 使用 QMainWindow3. QMainW

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

python通过curl实现访问deepseek的API

《python通过curl实现访问deepseek的API》这篇文章主要为大家详细介绍了python如何通过curl实现访问deepseek的API,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编... API申请和充值下面是deepeek的API网站https://platform.deepsee

java变量内存中存储的使用方式

《java变量内存中存储的使用方式》:本文主要介绍java变量内存中存储的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍2、变量的定义3、 变量的类型4、 变量的作用域5、 内存中的存储方式总结1、介绍在 Java 中,变量是用于存储程序中数据

关于Mybatis和JDBC的使用及区别

《关于Mybatis和JDBC的使用及区别》:本文主要介绍关于Mybatis和JDBC的使用及区别,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、JDBC1.1、流程1.2、优缺点2、MyBATis2.1、执行流程2.2、使用2.3、实现方式1、XML配置文件

macOS Sequoia 15.5 发布: 改进邮件和屏幕使用时间功能

《macOSSequoia15.5发布:改进邮件和屏幕使用时间功能》经过常规Beta测试后,新的macOSSequoia15.5现已公开发布,但重要的新功能将被保留到WWDC和... MACOS Sequoia 15.5 正式发布!本次更新为 Mac 用户带来了一系列功能强化、错误修复和安全性提升,进一步增

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示