使用Python并行处理图像的拆分和合并

时间:2019-01-04 14:02:14

标签: python multithreading image-processing multiprocessing

我正在尝试将图像分割成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')

1 个答案:

答案 0 :(得分:0)

您可以尝试使用Shared Memory包中的Managermultiprocessing类在进程之间共享数据。 Documentation here