2017-03-21 120 views
0

我refered此鏈接到兩個圖像結合起來,和它的作品,如果兩個圖像被RGB格式化如何在opencv中將RGB圖像與灰色圖像組合?

Combining Two Images with OpenCV

的問題是如何將RGB圖像帶有灰色圖像合成,因爲RGB圖像爲三尺寸但灰色圖像是兩個維度?

+0

那麼,結果會是一個有4列的3D數組? – Divakar

+1

你可以用imgcol = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)將你的灰度圖像轉換成RGB圖像(圖像將視覺上灰色,但在結構上rgb)或者是你想要避免的? – Soltius

+0

@ Divakar,3列 –

回答

0

RGB圖像是三維的,而灰度圖像是二維的。爲了使組合成爲可能,您需要爲灰度圖像添加一個維度。如果x是二維陣列x,將其轉換爲三維陣列的最簡單方法是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類型是很重要的。如果不是,則應使用適當的類型轉換。

相關問題