Igisid 0 Жалоба Опубликовано April 10, 2018 Везде примеры на 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)); Пробовал другими методами, но наложенное изображение либо с белым фоном или черное. Буду благодарен за помощь Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано April 10, 2018 Казалось бы так: cv::Mat Mix = img1 * 0.2 + img2 * 0.8; Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах