OpenCV:设置图像边界,不带填充

OpenCV: set image borders, without padding

本文关键字:填充 边界 设置 图像 OpenCV      更新时间:2023-10-16

如何在没有填充的情况下将给定大小的图像边框设置为黑色,即,我只想将图像边框设置成黑色(零),输出的图像将与源图像大小相同。

您可以简单地在图像上绘制一个黑色矩形:

cv::Mat image;
cv::Rect border(cv::Point(0, 0), image.size());
cv::Scalar color(0, 0, 0);
int thickness = 1;
cv::rectangle(image, border, color, thickness);

您可以将copyMakeBorder与BORDER_ISOLATED标志一起使用。

cv::Mat image = cv::imread("lena.png");
cv::Mat output;
const int border = 10;
const int borderType = cv::BORDER_CONSTANT | cv::BORDER_ISOLATED;
const cv::Scalar value(0, 0, 0);
const cv::Rect roi(border, border, image.cols-2*border, image.rows-2*border);
cv::copyMakeBorder(image(roi), output, border, border, border, border, borderType, value);
cv::imshow("input", image);
cv::imshow("output", output);
cv::waitKey(0);