opencv学习笔记十三:边界填充

opencv添加边缘的方式有:

BORDER_DEFAULT:将最近的像素进行映射;

BORDER_CONSTANT:用常数填充;

BORDER_REPLICATE:复制最近的一行或一列像素并一直延伸至添加边缘的宽度或高度;

BORDER_WRAP:将对面的像素进行映射。

对于卷积操作,最边缘的像素一般无法处理,因为卷积核中心到不了最边缘像素,这时常用以上几种方法先将边界填充,再进行卷机操作,最后将扩充的边界去掉,则原图像每个像素都进行了卷积。

边界扩充API函数:copyMakeBorder(src, dst, top, bottom, left, right, borderType, color);

参数解释:原图像,目标图像,上下左右扩充的长度,填充的类型,常数填充时的颜色值。

#include
using namespace cv;

int main(int arc, char** argv)
{   
	Mat src, dst;
	src = imread("2.jpg");
	namedWindow("input",CV_WINDOW_AUTOSIZE);
	imshow("input", src);

	RNG rng(1);
	int top = (int)(0.05*src.rows);
	int bottom = (int)(0.05*src.rows);
	int left = (int)(0.05*src.cols);
	int right = (int)(0.05*src.cols);
	int borderType = BORDER_DEFAULT;
	while (true) {
		int c = waitKey(500);
		if ((char)c == 27) {
			break;
		}else if ((char)c == 'c') {
			borderType = BORDER_CONSTANT;
		}else if ((char)c =

你可能感兴趣的:(opencv)