OpenCV对图片进行边缘像素填充
2023-09-14 09:05:26 时间
1、概述
图像在卷积的时候边界像素不能被卷积,原因在于边界没有完全和kernel重叠,所以当3x3滤波时有一像素边缘没有被处理,当5x5滤波的时有2像素的边缘没有被处理。如下图所示:
OpenCV中常见的边缘填充方式主要有4种:
1.BORDER_DEFAULT:默认模式
2.BORDER_CONSTANT:用指定像素值填充边缘
3.BORDER_REPLICATE:用已知的边缘像素填充边缘像素
4.BORDER_WRAP:用另外一边的像素来补偿填充
边缘填充函数介绍:copyMakeBorder(
- Mat src, // 输入图像
- Mat dst, // 添加边缘后的图像
- int top, // 边缘长度,一般上下左右都取相同值,
- int bottom,
- int left,
- int right,
- int borderType // 边缘类型主要是如上的四种类型
- Scalar value ,//如果边缘填充类型为BORDER_CONSTANT,则可以设置填充边缘的颜色值
)
2、代码示例
Mat src = imread(filePath);
Mat constant = src.clone();
Mat replicate = src.clone();
Mat wrap = src.clone();
if(src.empty()){
return;
}
imshow("src",src);
Mat border_default;
copyMakeBorder(src,border_default,50,50,50,50,BORDER_DEFAULT);//系统默认填充方式
imshow("border_default",border_default);
Mat border_constant;
copyMakeBorder(constant,border_constant,50,50,50,50,BORDER_CONSTANT);//填充边缘,用指定的像素值
imshow("border_constant",border_constant);
Mat border_replicate;
copyMakeBorder(replicate,border_replicate,50,50,50,50,BORDER_REPLICATE);//填充边缘像素用已知边缘像素值
imshow("border_replicate",border_replicate);
Mat border_wrap;
copyMakeBorder(src.clone(),border_wrap,50,50,50,50,BORDER_WRAP);//填充边缘像素用已知边缘像素值
imshow("border_wrap",border_wrap);
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
相关文章
- 使用C++ OpenCV实现椭圆区域检测与Aruco码的生成与检测并估计位姿
- Java + opencv 实现人脸识别,图片人脸识别、视频人脸识别、摄像头实时人脸识别
- OpenCV实现SfM(四):Bundle Adjustment
- 边缘检测算子Canny原理概述并利用OpenCV的库函数Canny()对图像进行边缘检测[通俗易懂]
- 【OpenCV】Chapter9.边缘检测与图像分割
- opencv边界填充_opencv边缘提取
- vs2019配置opencv什么版本_vs配置opencv
- openCV._imread opencv
- vs2015配置opencv_捷达VS5进取版有哪些配置
- OpenCV的扩展包opencv_contrib的安装
- opencv识别多条形码数字_opencv测试代码
- opencv(4.5.3)-python(二十)--轮廓属性
- 基于python的OpenCV人脸识别模型
- 【1】windows下安装OpenCV(4.3)+VS2017安装+opencv_contrib4.3.0配置
- 树莓派 usb-jetson nano opencv 打开 CSI摄像头_树莓派(四)——摄像头
- opencv加载显示图像详解程序员
- Linux 安装OpenCV简易指南(linux安装opencv)
- 实现opencv图像裁剪分屏显示示例