0
我refered此鏈接到兩個圖像結合起來,和它的作品,如果兩個圖像被RGB格式化如何在opencv中將RGB圖像與灰色圖像組合?
Combining Two Images with OpenCV
的問題是如何將RGB圖像帶有灰色圖像合成,因爲RGB圖像爲三尺寸但灰色圖像是兩個維度?
我refered此鏈接到兩個圖像結合起來,和它的作品,如果兩個圖像被RGB格式化如何在opencv中將RGB圖像與灰色圖像組合?
Combining Two Images with OpenCV
的問題是如何將RGB圖像帶有灰色圖像合成,因爲RGB圖像爲三尺寸但灰色圖像是兩個維度?
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)
需要注意的是上面的例子假設兩個圖像np.uint8
類型是很重要的。如果不是,則應使用適當的類型轉換。
那麼,結果會是一個有4列的3D數組? – Divakar
你可以用imgcol = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)將你的灰度圖像轉換成RGB圖像(圖像將視覺上灰色,但在結構上rgb)或者是你想要避免的? – Soltius
@ Divakar,3列 –