I have an image stack. I am trying to use multiprocessing to do some process on each image in stack to get new image, and then bitwise_or
with the old image.
Since multiprocessing won't keep the original order, I pass image index as args
.
Later I bitwise_or
the new image and old image by a for loop.
Is there a way to avoid for-loop for bitwise_or
to have a better performance? Thanks
import cv2 as cv
import numpy as np
from multiprocessing import Pool
def process_img(idx, img):
new_img = do_something(img)
return idx, new_img
def main()
# ...
output_stack = np.copy(img_stack)
with Pool() as pool:
args = zip(
range(len(img_stack)),
img_stack)
new_imgs_with_idx = pool.starmap(process_img, args)
for i, new_img in new_imgs_with_idx: # Any better ways?
output_stack[i] = cv.bitwise_or(output_stack[i], new_img)
# ...
return output_stack
html2image
for something like this, and I am curious how to fire off multi-processing without re-running the script over every single time. \$\endgroup\$