簡體   English   中英

如何使用opencv python將紅色通道與灰度圖像合並?

[英]How to merge red channel with gray scale image with opencv python?

我有兩個顯微鏡圖像。 一種是灰度,一種是紅色。 我可以在 photoshop、imagej 等中合並這些。我想在 opencv 中合並這兩個,以便我可以對許多樣本執行此操作。

到目前為止,我已經完成了以下操作(其中 dia=grayscale 和 epi=red)。

# Load images
img_dia = cv2.imread(input_dia)
img_epi = cv2.imread(input_epi)

# Slice red channel from fluorescence image
b_epi, g_epi, r_epi = cv2.split(img_epi)

# Now I want to merge the grey scale and red image

沒有錯誤信息。 我找不到任何文檔或其他堆棧交換頁面來解決此問題。 任何幫助,將不勝感激!

有多種疊加和混合圖像的方法,但我認為最接近您的結果可能是屏幕模式混合。

您可以使用ImageMagick非常簡單地獲得您想要的東西,它包含在大多數 Linux 發行版中,可用於 macOS 和 Windows。 因此,只需在終端(或 Windows 上的命令提示符)中,您無需編寫任何代碼即可運行以下命令:

magick grey.tif red.tif -compose screen -composite  result.png

在此處輸入圖片說明

如果這不是您想要的確切混合模式, ImageMagick 中有 69 種模式可用,如果您運行,您可以看到它們全部列出:

magick -list compose

因此,如果您想要強光混合,請使用:

magick grey.tif red.tif -compose HardLight -composite  result.png

你提到有很多圖像要做,如果是這樣,你可以通過使用GNU Parallel 並行完成數千個。 您可以在 Stack Overflow搜索框中輸入以下內容(包括方括號),在使用 ImageMagick 和 GNU Parallel 的 Stack Overflow 上搜索答案:

[imagemagick] [gnu-parallel]

或者,提供有關如何命名和存儲文件的更多詳細信息,我可以進一步幫助您。

考慮到input_epi是一個 RGB 圖像(3 個通道)

當您將圖像加載到 opencv 時,默認情況下它會加載為 BGR

# colour image
img_epi = cv2.imread('input_epi.jpg')

# red channel
red_epi = img_epi[:,:,2]

# gray image
img_dia = cv2.imread('input_dia',0)

# creating a resultant image for combining only two channels
resultant_image = np.ones((img_dia.shape[0],img_dia.shape[1],2),np.uint8)

# merge two channels into a single two channel array
# first channel red
resultant_image[:,:,0] = red_epi
# second channel gray
resultant_image[:,:,1] = img_dia

拆分和合並圖像通道

在 OpenCV 文檔中

警告 cv2.split() 是一個代價高昂的操作(就時間而言)。 所以只有在你需要的時候才這樣做。 否則去 Numpy 索引。

實際的紅色很難從RGB圖像中HSV以更好地使用HSV從圖像中提取特定范圍的顏色

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM