2016-01-21 27 views
1

使用cvSet方法,我們可以很容易地用純色填充圖像。 有什麼方法可以幫助你從你的圖像中刪除一些顏色 (例如我有一個森林的圖像,基本上它會有很多綠色成分,葉子等等。我可以去除綠色,保持其他一切都是一樣的。 )我們如何從圖像中移除一個純色?

+3

你說的 「刪除」 呢?將它們設置爲0? – herohuyongtao

+0

爲什麼不保存圖像的臨時副本,並從中恢復一個選項? – vsz

+0

我的例子可能不明確。假設我有一個森林的圖像。我加載它。如果我使用cvSet爲0,它會刪除綠色組件? –

回答

5
char* inputPath = "TEST.png"; 

    Mat src = imread(inputPath); 
    Mat BGRChannels[3]; 
    split(src,BGRChannels); // split the BGR channesl 
    BGRChannels[1]=Mat::zeros(src.rows,src.cols,CV_8UC1);// removing Green channel 
    merge(BGRChannels,3,src); // pack the image 
    namedWindow("B0R",1); 
    imshow("B0R",src); 
    waitKey(0); 

下面是結果:
main image

removed green channel image

+0

太棒了。謝謝:) –

+3

有更簡單的方法:'src = src - 標量(0,255,0);' – sturkmen

+2

@sturkmen,是的,這也消除了8位平面RGB圖像中的綠色平面。 –