使用透明边框创建扭曲图像

时间:2013-07-05 03:33:23

标签: opencv

我正在尝试创建一个扭曲图像,其中边框填充像素是透明的。我知道我可以使用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)。

2 个答案:

答案 0 :(得分:3)

......以及使输入图像成为四通道图像的方法是

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

答案 1 :(得分:0)

warpPerspective将目标图像设置为与源具有相同的类型。你也需要myImage成为CV_8UC4。这就是为什么myWarpedImage在操作后只有三个通道。