Везде примеры на python. Мне нужно реализовать на С++. Сейчас делаю так:
cv::Rect r(center, cv::Size(size.width, size.height));
std::vector<cv::Mat> matChannels;
cv::split(texture, matChannels);
auto overlay_mask = matChannels[3];
cv::Mat overlay_img;
cv::cvtColor(texture, overlay_img, CV_BGRA2BGR);
cv::Mat background_mask = 255 - overlay_mask;
cv::cvtColor(overlay_mask, overlay_mask, CV_GRAY2BGR);
cv::cvtColor(background_mask, background_mask, CV_GRAY2BGR);
background_mask.convertTo(background_mask, CV_32FC3, 1.0/255);
overlay_img.convertTo(overlay_img, CV_32FC3, 1.0/255);
overlay_mask.convertTo(overlay_mask, CV_32FC3, 1.0/255);
cv::multiply(overlay_img, overlay_mask, overlay_img);
cv::multiply(background_mask, captured_image(r), captured_image(r));
cv::addWeighted(captured_image(r), 1, overlay_img, 0, 0, captured_image(r));
Пробовал другими методами, но наложенное изображение либо с белым фоном или черное. Буду благодарен за помощь