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

Jan*_*egg 5 optimization performance opencv 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);
Run Code Online (Sandbox Code Playgroud)

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

有一个更好的方法吗?