毕业设计,牵扯到关于大雾天气下的车辆识别,我用的是YOLOv5算法,但是到处理数据集这里遇到了问题,不会对一个文件内的图像进行批量的雾化处理,效率很低,在网络上找到了一些雾化图像的代码,但是只能进行单张图像的雾化,想知道这个代码如何修改,能让这个代码可以批量处理文件夹内的图像(大概有两千多张)
import cv2, math
import numpy as np
def demo():
img_path = 'data/images/bus.jpg'
img = cv2.imread(img_path)
img_f = img / 255.0
(row, col, chs) = img.shape
A = 0.5 # 亮度
beta = 0.08 # 雾的浓度
size = math.sqrt(max(row, col)) # 雾化尺寸
center = (row // 2, col // 2) # 雾化中心
for j in range(row):
for l in range(col):
d = -0.04 * math.sqrt((j - center[0]) ** 2 + (l - center[1]) ** 2) + size
td = math.exp(-beta * d)
img_f[j][l][:] = img_f[j][l][:] * td + A * (1 - td)
cv2.imshow("src", img)
cv2.imshow("dst", img_f)
cv2.waitKey()
if name == 'main':
demo()
##网络上搜到的单张图像 去雾代码##作者:https://blog.csdn.net/u014070279/article/details/108130286
加入读文件夹函数,修改demo,有用望采纳
``` file_path 图像文件夹```
def demo(file_path, img_path):
img = cv2.imread(img_path)
img_f = img / 255.0
(row, col, chs) = img.shape
A = 0.5 # 亮度
beta = 0.08 # 雾的浓度
size = math.sqrt(max(row, col)) # 雾化尺寸
center = (row // 2, col // 2) # 雾化中心
for j in range(row):
for l in range(col):
d = -0.04 * math.sqrt((j - center[0]) ** 2 + (l - center[1]) ** 2) + size
td = math.exp(-beta * d)
img_f[j][l][:] = img_f[j][l][:] * td + A * (1 - td)
cv2.imwrite(file_path + img_path.replace('.','_frozen.'), img_f)
def read_images(file_path):
image_list = os.listdir(file_path)
for image in image_list:
demo(file_path, image)
file_path = ''
read_images(file_path)