【问题标题】:How to Stop scanning webcam when QR found and can make it scan again如何在找到 QR 时停止扫描网络摄像头并使其再次扫描
【发布时间】:2020-05-13 05:22:12
【问题描述】:
import cv2
import numpy as np
import pyzbar.pyzbar as pyzbar

cap = cv2.VideoCapture(0)
font = cv2.FONT_HERSHEY_PLAIN

while True:
    _, frame = cap.read()

    decodedObjects = pyzbar.decode(frame)
    for obj in decodedObjects:
        #print("Data", obj.data)
        cv2.putText(frame, str(obj.data), (50, 50), font, 2,
                    (255, 0, 0), 3)

    cv2.imshow("Frame", frame)

    key = cv2.waitKey(1)
    if key == 27:
        break

【问题讨论】:

  • 欢迎来到 SO!您可能会选择Tour,并且应该(重新)阅读帮助主题How to Ask 来设定您的期望。很难理解你想要什么。考虑为您的问题添加描述。不要试图将所有内容都写到标题中。描述你的代码。

标签: python qr-code barcode-scanner cv2


【解决方案1】:

您可以停止显示框架。然后使用另一个键继续。例如:

import cv2
import pyzbar.pyzbar as zbar

cap = cv2.VideoCapture(0)

font = cv2.FONT_HERSHEY_SIMPLEX 

stopped = False
delay = 1

while(True):
    ret = cv2.waitKey(delay) & 0xFF

    if ret == ord('c'): # continue
        stopped = False
        delay = 1

    if ret == ord('q'):
        break

    if stopped or (ret == ord('s')): # stop
        stopped = True
        delay = 30
        continue

    # Capture frame-by-frame
    ret, frame = cap.read()

    decodedObjects = zbar.decode(frame)
    if len(decodedObjects) > 0:
        stopped = True
        y = 50
        for obj in decodedObjects:
            #print("Data", obj.data)
            print(obj.data.decode("utf-8"))
            cv2.putText(frame, obj.data.decode("utf-8"), (50, y), font, 2, (255, 0, 0), 3)
            y += 50

    # Display the resulting frame
    cv2.imshow('frame',frame)


# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 2017-04-22
    • 2016-09-02
    • 2015-06-04
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    相关资源
    最近更新 更多