2011-07-13 90 views
5

我有一個基本的png文件,裏面有兩種顏色,綠色和洋紅色。我所要做的就是取所有洋紅色像素,並使它們透明,以便我可以將圖像合併到另一個圖像中。在OpenCV中使顏色完全透明

一個例子是如果我有一個洋紅色背景上的2D字符的圖像文件。我會刪除背景中的所有洋紅色,以使其透明。從那裏,我只是採取角色的形象,並將其添加爲另一個圖像中的圖層,因此看起來角色已放置在環境中。

在此先感謝。

回答

9

這是代碼我會用,

首先,載入圖片:

IplImage *myImage; 
myImage = cvLoadImage("/path/of/your/image.jpg"); 

然後用這樣的面膜來選擇顏色,你應該參考的文檔。在下面,我想選擇一個藍色(不要忘記,在OpenCV圖像是在BGR格式,因此125,0,0是一個藍色(它對應的下界)和255,127,127是藍色的具有一定的容差和是上限。 我選擇了下限和上限的公差帶圖像的所有藍色的,但你可以選擇任何你想要的......

cvInRangeS(image, 
      cvScalar(125.0, 0.0, 0.0), 
      cvScalar(255.0, 127.0, 127.0), 
      mask 
      ); 

現在我們所選擇的面膜,讓我們反它(因爲我們不希望保留的面具,而是將其刪除)

cvNot(mask, mask); 

,然後將您的圖像與面罩,

IplImage *myImageWithTransparency; //You may need to initialize it before 
cvCopy(myImage,myImageWithTransparency,mask); 

希望它可以幫助,

請參閱OpenCVDocumentation進一步的信息

Here it is

朱利安,

+0

感謝您的幫助:) – Seb

+0

哎,看來我做一個錯誤,它不僅僅是cvCopy(myImage,myImageWithTransparency),而是cvCopy(myImage,myImageWithTransparency,mask):)。我編輯了我的帖子,如果你使用它,請小心...... – jmartel