我正在尝试将一帧的黑色区域设置为另一帧中图像的值。您可以在下方看到两张图片。有没有办法用OpenCV中的图像替换黑色区域?
彩色图像
要合并的图片
修改 应用建议的方法后: Image after applying Miki's method
答案 0 :(得分:2)
您可以使用copyTo
并使用适当的面具。为此,您需要两个图像具有相同的大小。我在这里使用了resize
,但您也可以选择合适的投资回报率。
为了获得掩码,我使用了inRange
,因为它允许使用3个通道图像。您还可以转换为灰度(cvtColor(..., COLOR_BGR2GRAY)
)并使用threshold
。结果是:
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
// Read images
Mat3b img1 = imread("path_to_street_image");
Mat3b img2 = imread("path_to_mask_image");
// Must have equal size
resize(img1, img1, img2.size());
// Get the mask for black part
Mat1b mask;
inRange(img2, Scalar(0, 0, 0), Scalar(0,0,0), mask);
// Copy img1 into img2, according to the mask
img1.copyTo(img2, mask);
// Show results
imshow("Result", img2);
waitKey();
return 0;
}