在图像上的矩形区域之外填充黑色

Filling black color outside of rectangle area on image

本文关键字:填充 黑色 区域 图像      更新时间:2023-10-16

>Use OpenCV 3.2

需要用黑色填充图像的侧面。

我为每个参与方创建矩形对象。并简单地将其绘制在图片上。但解决方案似乎很麻烦。

// Border 100 px
cv::Rect top_rect(0, 0, img.size().width, 100)
...
cv::rectangle(img, top_rect, cv::Scalar(0, 0, 0), CV_FILLED);
cv::rectangle(img, bot_rect, cv::Scalar(0, 0, 0), CV_FILLED);
cv::rectangle(img, left_rect, cv::Scalar(0, 0, 0), CV_FILLED);
cv::rectangle(img, right_rect, cv::Scalar(0, 0, 0), CV_FILLED);

我找到了以下解决方案:

Rect roi(100, 100, 600, 400);
Mat result_img = img(roi);

但是此解决方案会更改图像的大小。 copyMakeBorder - 也是调整大小。我需要:在矩形外取一个区域并用黑色填充它。图像尺寸应保持不变。

OpenCV中有现成的函数吗?

您可以使用的一种

方法是使用蒙版复制图像:

inputMat.copyTo(outputMat, maskMat);

maskMat 是具有相同图像大小但二进制的cv::Mat。ROI 应包含像素值 1,其余像素值应为 0。