我在c ++中使用opencv,我有一个带有一个对象的二进制图像(图像1)。
我想在图像的上,左,右和下添加像素(图像3),因为我使用Zhang-Suen算法(图像2)获取对象的骨架,并在顶部,左侧,右侧添加像素,然后我修复了图像2中可见的错误,如何在边缘添加5 px?
我想将image1转换为image3。
答案 0 :(得分:2)
输入图片:
// Load input image
cv::Mat input = cv::imread("zero.png");
if (input.empty())
{
std::cout << "!!! Failed imread\n";
return -1;
}
// Create a larger output image to store the end result
cv::Mat output(input.rows+10, input.cols+10, input.type(), cv::Scalar(0));
// Specify the size of the copy and its offset
cv::Rect offset_rect = cv::Rect(5, 5, input.cols, input.rows);
// Copy to the output Mat
input.copyTo(output(offset_rect));
//cv::imwrite("output.png", output);
输出图片:
此技术之前已described here。
答案 1 :(得分:2)
使用以下方法可以轻松获得相同的输出。
void copyMakeBorder(InputArray src, OutputArray dst, int top, int bottom, int left, int right, int borderType, const Scalar& value=Scalar() )
可以在opencv文档here
中找到示例实现