在OpenCV中,可以使用cv::copyMakeBorder函数来添加边框,而要擦除或消失cv::Mat矩阵或图像中的黑色边框,可以通过以下步骤实现:
以下是一个示例代码:
cv::Mat eraseBlackBorder(cv::Mat image) {
int borderSize = 10; // 设置边框大小
cv::Mat borderedImage;
cv::copyMakeBorder(image, borderedImage, borderSize, borderSize, borderSize, borderSize, cv::BORDER_CONSTANT, cv::Scalar(0));
cv::bitwise_not(borderedImage, borderedImage);
cv::floodFill(borderedImage, cv::Point(0, 0), cv::Scalar(255));
cv::floodFill(borderedImage, cv::Point(borderedImage.cols - 1, 0), cv::Scalar(255));
cv::floodFill(borderedImage, cv::Point(0, borderedImage.rows - 1), cv::Scalar(255));
cv::floodFill(borderedImage, cv::Point(borderedImage.cols - 1, borderedImage.rows - 1), cv::Scalar(255));
cv::bitwise_not(borderedImage, borderedImage);
cv::Rect roi(borderSize, borderSize, image.cols, image.rows);
cv::Mat result = borderedImage(roi);
return result;
}
这个函数接受一个cv::Mat类型的图像作为输入,并返回擦除了黑色边框的图像。你可以将你的图像传递给这个函数,它将返回一个没有黑色边框的图像。
注意:这个示例代码仅适用于擦除黑色边框,如果边框颜色不是黑色,需要相应地调整代码中的颜色值。
领取专属 10元无门槛券
手把手带您无忧上云