Как загружать и обрабатывать 2 изображения одновременно - PullRequest
0 голосов
/ 12 марта 2020

У меня есть 20 изображений в папке.

Я хочу загрузить первые два изображения и обработать, затем загрузить следующие два изображения и обработать и так далее.

Я хочу знать, как этого добиться в python openCV

Последовательность для подражания; Загрузите изображение 1, 2> процесс (я сделаю этот бит), затем загрузите изображение 2, 3> процесс, 3, 4> процесс, 4,5> процесс ... и так далее

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Я действительно не знаю, хотите ли вы обрабатывать их 2 на 2 или 2 одновременно, так что вот и то, и другое!

Процесс 2 на 2 последовательно:

import os
import cv2

files = os.listdir('<image_folder>')

for i in range(0, len(files), 2):
    image1 = cv2.imread(files[i])
    image2 = cv2.imread(files[i+1])

    process(image1)
    process(image2)

Одновременный процесс 2:

Полезным инструментом является функция map в многопроцессорной библиотеке python. На самом деле его очень просто использовать, например:

from multiprocessing import Pool


p = Pool(2)

for i in range(0, len(files), 2):
    p.map(process, [cv2.imread(files[i]),
                    cv2.imread(files[i+1])])

В списке содержатся ваши элементы, и вы пытаетесь применить функцию process к каждому из этих элементов параллельно. p.map сделает это для вас без проблем!

Удачи!

0 голосов
/ 12 марта 2020
import glob2
import cv2

images = glob2.glob('imageFolder/*.jpg')

images = list(zip(images, images[1:] + images[:1]))

for item in images:
    img1 = cv2.imread(item[0])
    img2 = cv2.imread(item[1])

    #process here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...