opencv:用alpha蒙版混合两个图像

时间:2015-07-24 12:37:13

标签: performance opencv optimization alpha alphablending

我正在尝试以最有效的方式将两个图像与OpenCV混合。目前,我有这个:

// Input matrices to mix
cv::Mat A(w, h, CV_8UC3);
cv::Mat B(w, h, CV_8UC3);

// Mix factor
cv::Mat alpha(w, h, CV_8UC1);

// Have to multiply alpha channel for mul() function    
std::vector<cv::Mat> array{alpha, alpha, alpha};
cv::Mat alpha_multichannel;
cv::merge(array, alpha_multichannel);

cv::Mat result = A.mul(alpha_multichannel, 1./255) + B.mul(cv::Scalar(255, 255, 255) - alpha_multichannel, 1./255);

目前,这在图像上至少循环四次(对于alpha_multichannel图像,对于A.mul,对于B.mul和总和),尽管使用自定义循环可以在一个循环中完成。

有更好的方法吗?

0 个答案:

没有答案