1

我正在尝试创建一个扭曲的图像,其中边框填充像素是透明的。我知道我可以使用 BORDER_CONSTANT = BORDER_TRANSPARENT。但这通过以下方式起作用:

此外,它还提供了 BORDER_TRANSPARENT 方法。这意味着目标图像中的相应像素根本不会被修改。openCV 手册

所以要使边框像素透明,是否需要从透明图像开始。像这个例子:

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)。

4

2 回答 2

3

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

cv::cvtColor(myImage, myImage, CV_BGR2BGRA);
于 2014-02-17T10:02:17.027 回答
0

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

于 2013-09-06T08:37:25.737 回答