首页 > 解决方案 > 使用 Python 并行处理图像的分割和连接

问题描述

我正在尝试将图像拆分为 4,然后对其进行处理,然后将它们并行加入。(我能够连续执行此操作)。

我在这里使用 Image_slicer 库进行切片和连接功能。此外,尝试并行处理这些切片切片,在此期间创建和启动 4 个进程。处理后的瓦片在原始切片路径上被替换。但是,当我尝试加入它们时,它不起作用,因为所有处理都是在外部函数中完成的,并且它们的本地参数不再保留它们。有什么办法我可以做到这一点?

请在下面找到我的代码:

from image_slicer import slice,join
from multiprocessing import Process
import cv2

tiles=slice('test.jpeg',4)

def getting_image(image_path): 
    img_todraw_defects = cv2.imread(image_path)
    blur= cv2.pyrMeanShiftFiltering(img_todraw_defects,21,49)
    gray_image= cv2.cvtColor(blur, cv2.COLOR_BGR2GRAY)

    cv2.imwrite(image_path,gray_image)

if __name__ == '__main__':
    processes = []

    for i in tiles:
        p = Process(target=getting_image, args=(i.filename,))
        processes.append(p)
        p.start()

    for process in processes:
        process.join()

Final=join(tiles)
Final.save('final.png')

标签: pythonmultithreadingimage-processingmultiprocessing

解决方案


您可以尝试使用包中Shared Memory的类或Managermultiprocessing在进程之间共享数据。文档在这里


推荐阅读