2013-07-05 29 views
1

我試圖在邊框填充像素透明的位置創建扭曲的圖像。我知道我可以使用BORDER_CONSTANT = BORDER_TRANSPARENT。但這個作品:用透明邊框創建扭曲的圖像

此外,它提供了BORDER_TRANSPARENT方法。這意味着 ,目標圖像中的相應像素根本不會被修改爲 。 openCV manual

因此,要使邊框像素透明,我需要從透明圖像開始。像這個例子:

int cols;  // filled 
int rows;  // filled 
Mat myImage; // filled 
Mat warpMatrix (3, 4, CV_32FC1); // filled 

Mat myWarpedImage; 
myWarpedImage.create((cols, rows, CV_8UC4, Scalar(0,0,0,0)); // set all pixels to black, alpha = 0 

warpPerspective(myImage, myWarpedImage, warpMatrix, Size(cols, rows), WARP_INVERSE_MAP, BORDER_TRANSPARENT); 

這似乎並不奏效。我扭曲的圖像仍然有黑色背景,沒有透明度(當我檢查一些照片編輯軟件,如GIMP)。

+0

渠道MYIMAGE多少有辦法嗎? – William

+0

3個通道:HSV。 myImage是否也需要一個Alpha通道? – tir38

回答

0

warpPerspective將目標圖像設置爲與源具有相同的類型。你也需要myImage來CV_8UC4。這就是爲什麼myWarpedImage在操作後只有三個通道的原因。

1

...並且使輸入圖像的四個通道圖像是

cv::cvtColor(myImage, myImage, CV_BGR2BGRA);