以下是一个使用OpenCV库进行并行图像调整大小的示例代码:
import cv2
import numpy as np
from multiprocessing import Pool
def resize_image(input_path, output_path, scale_factor):
img = cv2.imread(input_path)
new_width = int(img.shape[1] * scale_factor)
new_height = int(img.shape[0] * scale_factor)
resized_img = cv2.resize(img, (new_width, new_height))
cv2.imwrite(output_path, resized_img)
def parallel_resize(input_paths, output_paths, scale_factor):
# 创建进程池
pool = Pool()
# 使用进程池并行调用resize_image函数
for input_path, output_path in zip(input_paths, output_paths):
pool.apply_async(resize_image, args=(input_path, output_path, scale_factor))
# 等待所有进程完成
pool.close()
pool.join()
if __name__ == '__main__':
# 输入图像路径列表
input_paths = ['image1.jpg', 'image2.jpg', 'image3.jpg']
# 输出图像路径列表
output_paths = ['resized_image1.jpg', 'resized_image2.jpg', 'resized_image3.jpg']
# 缩放因子
scale_factor = 0.5
# 并行调整大小
parallel_resize(input_paths, output_paths, scale_factor)
上述代码使用了multiprocessing
模块中的Pool
类来创建进程池,并使用apply_async
方法并行地调用resize_image
函数来处理每张图片。最后,使用close
和join
方法等待所有进程完成。
请注意,此代码示例仅展示了如何使用进程池进行并行图像调整大小,实际应用中还需要根据具体需求进行适当的优化和错误处理。
上一篇:并行推回一个二维向量
下一篇:并行完成任务的最小化最大时间。