Изменение порядка значений RGB в GRB, GBR, BRG, BGR и RBG по всему каталогу - PullRequest
0 голосов
/ 30 мая 2019

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

import cv2
import numpy

img = cv2.imread("IMG_4540.jpg")
g,b,r = cv2.split(img)
cv2.imwrite('green_channel.jpg', g)

Я хотел бы иметь 6 отдельных изображений с разными комбинациями полос из одного единственного изображения, если это возможно.

1 Ответ

0 голосов
/ 31 мая 2019

Вы можете просто сформировать все переупорядочения с помощью возможностей индексирования numpy.

import numpy as np 
from itertools import permutations
# first generate all sets of rearrangements you'd like to make.. 
orderings = [p for p in permutations(np.arange(3)) if p!=(0,1,2)]
# [(0, 2, 1), (1, 0, 2), (1, 2, 0), (2, 0, 1), (2, 1, 0)]
# rbg, brg, and so on. 

# then reorder along axis=-1 using these. (0,1,2) --> (0,2,1) and so on. 
for order in orderings:
    reordered = im[...,order]
    # then save each an appropriate filename 
    cv2.imsave('filename.jpg', reordered)
del reordered, order
...