我有一個基本的png文件,裏面有兩種顏色,綠色和洋紅色。我所要做的就是取所有洋紅色像素,並使它們透明,以便我可以將圖像合併到另一個圖像中。在OpenCV中使顏色完全透明
一個例子是如果我有一個洋紅色背景上的2D字符的圖像文件。我會刪除背景中的所有洋紅色,以使其透明。從那裏,我只是採取角色的形象,並將其添加爲另一個圖像中的圖層,因此看起來角色已放置在環境中。
在此先感謝。
我有一個基本的png文件,裏面有兩種顏色,綠色和洋紅色。我所要做的就是取所有洋紅色像素,並使它們透明,以便我可以將圖像合併到另一個圖像中。在OpenCV中使顏色完全透明
一個例子是如果我有一個洋紅色背景上的2D字符的圖像文件。我會刪除背景中的所有洋紅色,以使其透明。從那裏,我只是採取角色的形象,並將其添加爲另一個圖像中的圖層,因此看起來角色已放置在環境中。
在此先感謝。
這是代碼我會用,
首先,載入圖片:
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進一步的信息
朱利安,
這本身就是一個整體,有很多解決方案。我會讀這第一:
http://en.wikipedia.org/wiki/Transparency_(graphic)
然後看看如何將這些方法可以在OpenCV的應用。
感謝您的幫助:) – Seb
哎,看來我做一個錯誤,它不僅僅是cvCopy(myImage,myImageWithTransparency),而是cvCopy(myImage,myImageWithTransparency,mask):)。我編輯了我的帖子,如果你使用它,請小心...... – jmartel