gpt4 book ai didi

c++ - 在opencv中创建透明图像

转载 作者:太空宇宙 更新时间:2023-11-03 22:04:52 25 4
gpt4 key购买 nike

我正在尝试在 x、y 和 z 轴上旋转图像,如 this .旋转时不应裁剪图像所以我正在做 this

Mat src = imread("path");
int diagonal = (int)sqrt(src.cols*src.cols+src.rows*src.rows);
int newWidth = diagonal;
int newHeight =diagonal;

Mat targetMat(newWidth, newHeight, src.type());

我正在创建一个更大的图像 targetMat。输入图像是 png 图像。但我希望此图像为透明图像。所以我尝试了 this

Mat targetMat(newWidth, newHeight, src.type(), cv::Scalar(0,0,0,0));

但输出图像是outputimage

我需要的是transparent image (这里是透明图)

那么我需要做什么改变呢?

最佳答案

问题是,您的输入图像是 CV_8UC3 类型,但您需要 CV_8UC4 才能使用 alpha channel 。所以在创建新垫子之前尝试 Mat targetMat(newHeight, newWidth, CV_8UC4, cv::Scalar(0,0,0,0)); 或 src 的 cvtColor

要使用您的原始图像,有两种可能性:

  1. 使用 cv::cvtColor(src, src, CV_BGR2BGRA)(并调整后面的代码以使用 4 channel 矩阵 - cv::Vec4b 而不是 cv::Vec3b 等)

  2. 如果您的输入文件是带有 alpha channel 的 .png,您可以使用 CV_LOAD_IMAGE_ANYDEPTH(希望这是正确的)标志将其加载为 CV_xxC4 图像(可能是 16 位也是)并使用原始的 alpha 值。

关于c++ - 在opencv中创建透明图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32350604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com