我首先嘗試將灰度影像和 2D 熱圖轉換為 RGB 影像。通過使除紅色維度之外的所有維度為零來轉換熱圖。
然后使用閾值對影像進行屏蔽,其中熱圖高于 0.01,并在影像組合的位置創建新影像。
但由于某種原因,這會在影像的某些部分產生綠色:

uj5u.com熱心網友回復:
要覆寫熱圖,您可以使用cv2.addWeighted()
第一部分
基于相似的輸入影像
示例輸入影像:
cv2.imshow('Input image', g1)

g1是 BGR 影像:
g1.shape
(158, 99, 3)
樣本面具:
cv2.imshow('Mask image', gm)

gm是二值影像:
gm.shape
(158, 99)
熱圖:
OpenCV 允許您使用cv2.applyColorMap()二進制影像創建熱圖gm。在這個例子中,我選擇了選項cv2.COLORMAP_JET。
heatmap_img = cv2.applyColorMap(gm, cv2.COLORMAP_JET)

使用以下方法將熱圖覆寫在原始影像g1上cv2.addWeighted():
overlay_img = cv2.addWeighted(heatmap_img, 0.5, g1, 0.5, 0)

第二部分
上面的圖片不是你要找的。根據您的問題,您只想覆寫感興趣的區域,即白色區域。
首先,使用蒙版僅選擇疊加影像中的 ROIgm
roi_img = cv2.bitwise_and(overlay_img, overlay_img, mask = gm)

最后,保留掩碼為白色的 ROI(255);并且在掩碼為黑色(0)的每個其他位置放置原始影像的像素強度g1:
roi_img[gm[:] == 0,...] = g1[gm[:] == 0,...]

我希望以上是您正在尋找的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/471423.html
