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---(11)OpenC 边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器