You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用OpenCV批量解码文件夹内多张图片的条形码

代码修改方案

核心修改点

  • 引入os模块读取指定文件夹内的所有图片路径,原代码直接遍历路径字符串属于逻辑错误
  • 移除无用的摄像头调用相关注释代码,删除死循环while True避免程序卡住
  • 调整cv2.waitKey参数,设置每张识别结果固定显示时长后自动切换,无需手动按ESC关闭窗口
  • 所有图片处理完成后自动销毁所有OpenCV窗口

修改后完整代码

import cv2
import numpy as np
from pyzbar.pyzbar import decode
import os

# 指定图片文件夹路径
folder_path = r'\QrCodeBarCode\Images'
# 支持的图片格式,可按需添加
img_suffix = ('.png', '.jpg', '.jpeg', '.bmp')

# 遍历文件夹下所有图片
for filename in os.listdir(folder_path):
    if filename.lower().endswith(img_suffix):
        img_path = os.path.join(folder_path, filename)
        img = cv2.imread(img_path)
        # 条码识别逻辑
        for barcode in decode(img):
            myData = barcode.data.decode('utf-8')
            # 打印识别结果和对应文件名,方便对应
            print(f"文件名:{filename},识别结果:{myData}")
            pts = np.array([barcode.polygon],np.int32)
            pts = pts.reshape((-1,1,2))
            cv2.polylines(img,[pts],True,(255,0,255),5)
            pts2 = barcode.rect
            cv2.putText(img,myData,(pts2[0],pts2[1]),cv2.FONT_HERSHEY_SIMPLEX,
                        0.9,(0,255,0),2)
        # 显示识别结果
        cv2.imshow('Result',img)
        # 每张图片显示1000毫秒(1秒)后自动切换,可按需调整时长
        cv2.waitKey(1000)

# 所有图片处理完成后自动关闭所有窗口
cv2.destroyAllWindows()

补充说明

如果不需要显示每张图片的识别结果,只需要输出识别数据,可以直接删掉cv2.imshow、cv2.waitKey、cv2.destroyAllWindows相关代码,运行速度会更快。

内容的提问来源于stack exchange,提问作者levi_ackerman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:24:03