在学习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()函数获取所有的文件路径,循环读取每个图片并进行处理。
该方法一次只能读取一张图片,根据你的需求,应该是先读取指定文件夹下的图片,然后每读取到一张图,进行一次处理。