opencv python3 слияние ведет себя странно - PullRequest
0 голосов
/ 04 декабря 2018

Я часами пытался найти ответ на это странное поведение cv2.merge ().

Короче говоря, я объединяю 3 изображения 1-канального uint8 размером 960x1280, получаюобъединенное изображение размером 960x1280x3, но каждый канал имеет размер 1280x3 вместо 960x1280.

В результате я не могу построить его.

Я загружаю каждое изображение, используя:

        img = cv2.imread(file).astype(np.uint8)
        if len(img.shape) > 2:  img = img[:,:,1]

Вот код для слияния (с дополнительной информацией):

alg = (img1,img2,img3)
print('type: ',type(alg[0]),type(alg[1]),type(alg[2]))
print('dtype: ',alg[0].dtype, alg[1].dtype, alg[2].dtype)
print('shape: ',alg[0].shape, alg[1].shape, alg[2].shape)

PseudoRGB = cv2.merge(alg)
print('\nmerged type: ',type(PseudoRGB))
print('merged dtype: ',PseudoRGB.dtype)
print('merged shape: ',PseudoRGB.shape)
print('merged shape, each channel: ',PseudoRGB[0].shape, PseudoRGB[1].shape, PseudoRGB[2].shape)

Это дает мне:

type:  <class 'numpy.ndarray'> <class 'numpy.ndarray'> <class 'numpy.ndarray'>
dtype:  uint8 uint8 uint8
shape:  (960, 1280) (960, 1280) (960, 1280)

merged type:  <class 'numpy.ndarray'>
merged dtype:  uint8
merged shape:  (960, 1280, 3)
merged shape, each channel:  (1280, 3) (1280, 3) (1280, 3)

Любая помощь очень ценится.

...