要实现点击窗口的关闭按钮也能关闭程序,你可以在主循环中添加一个额外的检查来监听窗口的关闭事件。修改代码如下:

import cv2
from pyzbar import pyzbar

def decode(image):
    # 将图像转换为灰度图像
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    
    # 使用zbar库解码条码和二维码
    barcodes = pyzbar.decode(gray)
    
    # 遍历解码结果
    for barcode in barcodes:
        barcodeData = barcode.data.decode('utf-8')
        barcodeType = barcode.type
        
        # 在图像上绘制解码结果
        cv2.putText(image, barcodeData, (barcode.rect.left, barcode.rect.top),
            cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)
    
    return image

# 打开摄像头
cap = cv2.VideoCapture(0)

while True:
    # 读取摄像头数据
    ret, frame = cap.read()
    
    # 调用解码函数进行识别
    frame = decode(frame)
    
    # 显示结果图像
    cv2.imshow('Barcode Scanner', frame)
    
    # 按下'q'键或窗口关闭按钮退出
    if cv2.waitKey(1) & 0xFF in (ord('q'), 27):
        break

# 释放摄像头和关闭窗口
cap.release()
cv2.destroyAllWindows()

现在,无论是按下键盘上的 'q' 键还是点击窗口的关闭按钮,都能够退出程序。27 是键盘上的 'Esc' 键对应的 ASCII 值。

Python OpenCV 条码扫描器:添加窗口关闭按钮退出功能

原文地址: https://www.cveoy.top/t/topic/OgF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录