我正在用Python 2.7进行编码,我需要实现一个过程,在该过程中,我将读取PDF,然后获取文档第一页的图像,然后从包含两个条形码的图像中获取两个值。到目前为止,这是我到目前为止一直在努力的两个功能(在将其移至环境之前,我需要做很多工作):
Python流程,可从教程中的PDF获取图像:
from wand.image import Image as wi
pdf = wi(filename="test.pdf", resolution=300)
pdfImageTest = pdf.convert("png")
i=1
for img in pdfImage.sequence:
page = wi
(image = img)
page.save(filename="test"+str(i)+".png")
i+=1
Python进程从图像中读取条形码:
from pyzbar.pyzbar import decode
from PIL import Image
import cv2
import numpy
decodedObjects = decode(Image.open('test2.png'))
obj = decodedObjects
print(obj)
decodedObjects = decode(cv2.imread('test2.png'))
print(obj)
根据pyzbar中有关解码功能的文档,该功能将扫描图像中包含的所有条形码,但是到目前为止,对于我所使用的两种情况,我只获得图像中的第一个条形码。在完成对第一张图像的处理之后,是否可以强制该功能继续扫描图像或将其指向图像的特定位置?
答案 0 :(得分:2)
您应该使用obj.data
并遍历所有对象。
这是一个示例:
from pyzbar.pyzbar import decode
from PIL import Image
import cv2
import numpy
decodedObjects = decode(Image.open('test2.png'))
obj = decodedObjects
for bar in obj:
print(bar.data)
顺便说一句,print
语句在Python 3中被print()
函数所取代。因此,如果您严格希望使用Python 2.7,则应使用例如print bar.data
。