我正在尝试以最有效的方式将两个图像与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和总和),尽管使用自定义循环可以在一个循环中完成。
有更好的方法吗?