在学习python时遇到问题

在学习python时出现了问题。

if __name__ == "__main__":
    img = cv2.imread("test_imgs/4.jpg")
    ocr_recognition = OCRRecognition()
    dbnet_det = DbNetInfer()
    certs = BusinessCerts(img, dbnet_det, ocr_recognition)
    for index, i in enumerate(certs.box_result):
        print(index, i)
    certs.ocr_pipline()

我现在想要批量读取图片而不是用一张,那么cv2.imread要修改成什么呢。(读取之后的数据类型不可以改变因为要交给模型处理)

我的目的是从指定的文件夹批量读取图片,并且读取出来的数据类型和cv2.imread要一致

os.listdir列出test_imgs目录下的图片,依次遍历用cv2.imgread读取处理什么的

import os

if __name__ == "__main__":
    images=os.listdir('test_imgs')
    for img in images:
        img = cv2.imread("test_imgs/"+img)
        ocr_recognition = OCRRecognition()
        dbnet_det = DbNetInfer()
        certs = BusinessCerts(img, dbnet_det, ocr_recognition)
        for index, i in enumerate(certs.box_result):
            print(index, i)
        certs.ocr_pipline()

该回答引用GPTᴼᴾᴱᴺᴬᴵ
你可以使用Python的os模块来遍历指定文件夹中的所有图片文件,然后逐个读取处理。以下是一份示例代码:

import os
import cv2

if __name__ == "__main__":
    # 指定图片文件夹路径
    img_folder = "test_imgs"
    
    # 遍历文件夹中所有图片文件
    for filename in os.listdir(img_folder):
        if filename.endswith(".jpg") or filename.endswith(".png"):
            # 读取图片并进行处理
            img_path = os.path.join(img_folder, filename)
            img = cv2.imread(img_path)
            ocr_recognition = OCRRecognition()
            dbnet_det = DbNetInfer()
            certs = BusinessCerts(img, dbnet_det, ocr_recognition)
            for index, i in enumerate(certs.box_result):
                print(index, i)
            certs.ocr_pipline()


在这份示例代码中,使用了os.listdir方法来遍历指定文件夹中的所有文件,然后使用endswith方法来筛选出所有以".jpg"或".png"为后缀的文件。读取图片的方式和你的示例代码一样,只是将读取的代码放在了循环中,这样就可以批量处理多张图片了。

参考GPT和自己的思路,如果你想要批量读取图片,可以使用Python的glob模块来获取指定文件夹下的所有图片文件,然后循环读取每个文件并进行处理。下面是一个示例代码:

import cv2
import glob

if __name__ == "__main__":
    img_folder = "test_imgs/*.jpg"
    ocr_recognition = OCRRecognition()
    dbnet_det = DbNetInfer()

    for img_path in glob.glob(img_folder):
        img = cv2.imread(img_path)
        certs = BusinessCerts(img, dbnet_det, ocr_recognition)
        for index, i in enumerate(certs.box_result):
            print(index, i)
        certs.ocr_pipline()

在这个示例中,img_folder变量包含了文件夹路径和通配符*来匹配所有的jpg格式的图片文件。然后使用glob.glob()函数获取所有的文件路径,循环读取每个图片并进行处理。

该方法一次只能读取一张图片,根据你的需求,应该是先读取指定文件夹下的图片,然后每读取到一张图,进行一次处理。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632