2
\$\begingroup\$

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 
\$\endgroup\$
1
  • \$\begingroup\$Following this! I am using 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\$
    – dmanexe
    CommentedDec 22, 2021 at 11:02

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.