opencv学习-边缘填充

Posted 殇堼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv学习-边缘填充相关的知识,希望对你有一定的参考价值。

API-copyMakeBorder

void copyMakeBorder(
InputArray src,
OutputArray dst, 输出图像的尺寸为:Size(src.cols+left+right, src.rows+top+bottom)。
int top,
int bottom,
int left,
int right,上面四个参数是图像要增加的边缘的大小
int borderType:

  • BORDER_CONSTANT – 填充边缘用指定像素值

  • BORDER_REPLICATE – 填充边缘像素用已知的边缘像素值

  • BORDER_WRAP – 用另外一边的像素来补偿填充

    const Scalar& value = Scalar(),Scalar类型的value,borderType==BORDER_CONSTANT时的边界值

);

BORDER_CONSTANT-用指定像素值填充扩充的边缘像素

#include<iostream>
#include<opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main()
{
	Mat src, dst;
	//定义颜色
	Scalar color = Scalar(0, 0, 255);
	src = imread("D:/images/lena.png");
	if (src.empty())
	{
		cout << "could not load image !";
		return -1;
	}
	imshow("输入图像", src);

	//图形四周上下左右分别扩充10, 8, 4, 1像素,颜色为绿色
	copyMakeBorder(src, dst, 10, 8, 4, 1, BORDER_CONSTANT, color);
	imshow("输出图像", dst);

	waitKey(0);
	return 0;
}

在这里插入图片描述

BORDER_REPLICATE – 用已知的边缘像素值填充扩充的边缘像素

#include<iostream>
#include<opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main()
{
	Mat src, dst;
	src = imread("D:/images/lena.png");
	if (src.empty())
	{
		cout << "could not load image !";
		return -1;
	}
	imshow("输入图像", src);

	//图形四周上下左右分别扩充10, 8, 4, 1像素,颜色为绿色
	copyMakeBorder(src, dst, 10, 8, 4, 1, BORDER_REPLICATE, color);
	imshow("输出图像", dst);

	waitKey(0);
	return 0;
}

在这里插入图片描述

BORDER_WRAP – 用对边的像素填充扩展边的像素

#include<iostream>
#include<opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main()
{
	Mat src, dst;
	src = imread("D:/images/lena.png");
	if (src.empty())
	{
		cout << "could not load image !";
		return -1;
	}
	imshow("输入图像", src);

	//图形四周上下左右分别扩充10, 8, 4, 1像素,颜色为绿色
	copyMakeBorder(src, dst, 10, 8, 4, 1, BORDER_WRAP, color);
	imshow("输出图像", dst);

	waitKey(0);
	return 0;
}

在这里插入图片描述

以上是关于opencv学习-边缘填充的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV学习代码记录——canny边缘检测

OpenCV 卷积边缘处理问题

技巧 | OpenCV中如何绘制与填充多边形

实战深度学习OpenCV:canny边缘检测

填补OpenCV中的漏洞[重复]

学习 opencv---(11)OpenC 边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器