2016-12-29 54 views
0

我得到了RGB圖像(224x224x3)和覆蓋圖(224x224)。 現在我想將我的覆蓋圖應用爲我的RGB圖像上的紅色像素,因此我將其作爲灰度。覆蓋範圍從0到255.較高的值應該使紅色更強。
我試圖使用斯蒂芬的教程,但我無法適應它:tutorial
這裏是我的代碼:將覆蓋圖應用於具有不同透明度的圖像

# RGB input, shape (224x224x3) 
img = self.inputImage 
# make to grayscale 
img = np.average(img, axis=2) 
rows, cols = img.shape[0], img.shape[1] 

color_mask = np.zeros((rows, cols, 3)) 

# convert to uint8 to plot in QImage::Format_RGB888 
img = img.astype(np.uint8) 
overlay = self.outputImage.astype(np.uint8) 
# normalize to range 0 to 1 
img = (img*1.0-img.min())/(img.max()-img.min()) 
overlay = (overlay*1.0 - overlay.min())/(overlay.max() - overlay.min()) 

# create a mask, where only the red channels contains values 
mask = np.zeros((rows,cols,3)) 
mask[:,:,0] = mask[:,:,0]+overlay 
color_mask = mask 

img_color = np.dstack((img, img, img)) 

# make everysthing to HSV colorspace 
img_hsv = color.rgb2hsv(img_color) 
color_mask_hsv = color.rgb2hsv(color_mask) 
img_hsv[..., 0] = color_mask_hsv[..., 0] 
img_hsv[..., 1] = color_mask_hsv[..., 1] * nAlpha 

# convert back 
img_masked = color.hsv2rgb(img_hsv) 
# rescale 
ov = img_masked*255 
self.mainWindow_images.label_outputImg.setPixmap(
    QPixmap(QImage(ov, ov.shape[1], ov.shape[0], ov.shape[1] * 3, QImage.Format_RGB888))) 

結果只是以黑色爲主畫面,從而改變與nAlpha一點點。 result_screenshot

回答

1

我認爲這是你在找什麼:

enter image description here

在紅色的部分是覆蓋。

我能夠使用OpenCV做到這一點,從我幾個月前閱讀的THIS POST獲得了一些幫助。

此博客文章涵蓋了圖像處理中的許多其他有趣的東西。 乾杯!

+0

我提到的博客帖也有相關的代碼。 :) –