使用alpha通道从CV_8UC4复制到CV_8UC3

时间:2017-12-07 16:21:49

标签: c++ opencv

我有一个小的渲染图像,其alpha通道为GpuMat,类型为CV_8UC4。我有很多GpuMat个实例,其中3个频道为CV_8UC3。我想把这个RGBA快速地插入到每个其他图像的左上角,正确地关注aplha通道。

GpuMat icon = renderLogoWithTransparency(); // CV_8UC4
std::vector<GpuMat> &images = imageLibrary();  // CV_8UC3
for(auto &image: images)
{
  Rect target(0,0,icon.cols,icon.rows);
  icon.copyTo(image(target));
}

产生的错误是:OpenCV Error: Assertion failed (!fixedType() || ((cuda::GpuMat*)obj)->type() == mtype) in create, file /root/opencv/modules/core/src/matrix.cpp, line 2260

copyTo对于简单复制而言似乎是合法的,我希望颜色混合。如何在不从GPU下载到主内存的情况下进行混合?

0 个答案:

没有答案