2017-03-21 7 views
0

나는 두 이미지를 결합하는이 링크를 대해 참조하고, 두 이미지가 RGB는 형식의되고있는 경우는 작동opencv에서 RGB 이미지와 회색 이미지를 결합하는 방법은 무엇입니까?

Combining Two Images with OpenCV

문제는 RGB 이미지는 세 가지입니다 때문에, 회색 이미지와 RGB 이미지를 결합하는 방법입니다 회색 이미지는 2 차원입니다.

+0

그러면 결과는 4 열의 3D 배열이됩니까? – Divakar

+1

imgcol = cv2.cvtColor (img, cv2.COLOR_GRAY2BGR)로 그레이 스케일 이미지를 RGB로 변환 할 수 있습니까 (이미지는 회색이지만 구조적으로는 rgb가됩니다) 또는 피하려고하는 것입니까? – Soltius

+0

@ Divakar, 3 columns –

답변

0

RGB 이미지는 3 차원이지만 회색 명암 이미지는 2 차원입니다. 조합을 가능하게하려면 그레이 스케일 이미지에 하나의 치수를 추가해야합니다. x이 2 차원 배열 x 인 경우이를 3 차원 배열로 변환하는 가장 간단한 방법은 x[:, :, None]입니다. 또는 NumPy의 atleast_3D을 사용할 수도 있습니다.

아래의 코드는 NumPy와와 scikit 이미지 라이브러리를 사용하여 일을 가져옵니다

import numpy as np 
from skimage import io 

rgb = io.imread('https://i.stack.imgur.com/R6X5p.jpg') 
gray = io.imread('https://i.stack.imgur.com/f27t5.png') 

rows_rgb, cols_rgb, channels = rgb.shape 
rows_gray, cols_gray = gray.shape 

rows_comb = max(rows_rgb, rows_gray) 
cols_comb = cols_rgb + cols_gray 
comb = np.zeros(shape=(rows_comb, cols_comb, channels), dtype=np.uint8) 

comb[:rows_rgb, :cols_rgb] = rgb 
comb[:rows_gray, cols_rgb:] = gray[:, :, None] 

io.imshow(comb) 

lions

그것은 예를 들어 위의 두 이미지 유형 np.uint8의 있다고 가정하는 것이 중요하다. 그렇지 않은 경우 적절한 유형 변환을 사용해야합니다.