【问题标题】:using opencv with zbar in python on windows 8.1 to detect qr codes在windows 8.1的python中使用opencv和zbar来检测二维码
【发布时间】:2016-07-30 23:05:27
【问题描述】:

我正在使用带有 zbar(本文最新版本)和 PIL(本文最新版本)的 opencv 3.1.0 版

import zbar
import Image
import cv2

# create a reader
scanner = zbar.ImageScanner()
# configure the reader
scanner.parse_config('enable')
#create video capture feed
cap = cv2.VideoCapture(0)

while(True):
    ret, cv = cap.read()
    cv = cv2.cvtColor(cv, cv2.COLOR_BGR2RGB)
    pil = Image.fromarray(cv)
    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 results
        print 'decoded', symbol.type, 'symbol', '"%s"' % symbol.data

# clean up
print "/n ...Done"

我不明白为什么这不起作用它应该不断检查视频流的当前帧中的二维码,如果它看到一个,它会对其进行解码并打印它里面说的内容我举起打印出来的二维码我的网络摄像头前面,但它不工作它表明我的摄像头已打开,并且正在发生视频流,因此在 while 循环中的某个地方出现了问题

我之前试过,电脑上的二维码没有打印出来,效果很好

我也尝试用cv2.imshow("out",cv) 显示当前帧,但是当我这样做时,程序只显示了一个大的灰色方块,它应该显示视频流,然后它就死机了,所以我不得不杀死 Netbeans。

【问题讨论】:

    标签: python opencv python-imaging-library qr-code zbar


    【解决方案1】:

    zbar 适用于灰度图像。将cv = cv2.cvtColor(cv, cv2.COLOR_BGR2RGB) 更改为cv = cv2.cvtColor(cv, cv2.COLOR_BGR2GRAY)

    我猜你正在使用this example code 来作为你的程序的基础。他们在第 15 行使用convert('L') 进行颜色到灰度的转换。

    【讨论】:

    • 我把 RGB2GRAY 放在 BGR2RGB 之后,效果很好,它解码了我在手机屏幕上显示的图像
    猜你喜欢
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多