OpenCv中copyMakeBorder函数详解

/******************************************************************************************************************
文件说明:
         copyMakeBorder函数详解
时间地点:
         陕西师范大学 文津楼 2017.5.25
作    者:
         九 月
参考资料:
         1)http://blog.sina.com.cn/s/blog_75e063c101014dol.html
		 2)OpenCv官方文档
函数功能:
         1)这个函数经原图像复制到目标图像的中间。复制的原始图像的左边,右边,上边和下边的区域将使用像
		   素向外填充扩展。这个函数可以简化图像边界的处理
		 2)这个函数把源图像拷贝到目的图像的中央,四面填充指定的像素。
		 3)vCopyMakeBorder()函数可以复制图像并制作边界,将特定图像轻微变大,然后以各种方式自动填充图
		   像边界,当 Bordertype=IPL_BORDER_REPLICATE时,原始图像边缘的行和列被复制到大图像的边缘,当 
		   Bordertype=IPL_BORDER_CONSTANT时,有一个像素宽的黑色边界。
函数原型:
         void copyMakeBorder(InputArray  src,        //【1】输入图像
		                     OutputArray dst,        //【2】输出图像
							 int top,                //【3】表示对边界每个方向添加的像素个数,就是
							 int bottom,             //     边框的粗细程度
							 int left,               //【4】边界的方向包括上下左右
							 int right, 
							 int borderType,         //【5】表示边界的类型
							                         //【6】表示如果边界的类型是 BORDER_CONSTANT,那么边界的颜色值
							 const Scalar& value=Scalar())
边界的类型有以下几种:
         1)BORDER_REPLICATE:重复,就是对边界的像素进行复制
		 2)BORDER_REFLECT:反射,对感兴趣的图像中的像素在两边进行复制例如:fedcba|abcdefgh|hgfedcb反射
		 3)BORDER_REFLECT_101:反射101:例子:gfedcb|abcdefgh|gfedcba
		 4)BORDER_WRAP:外包装:cdefgh|abcdefgh|abcdefg
		 5)BORDER_CONSTANT:常量复制:例子:iiiiii|abcdefgh|iiiiiii
********************************************************************************************************************/

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: copyMakeBorder函数OpenCV的一个函数,用于将图像的边缘进行扩展或者填充。该函数可以在图像的边缘周围添加一个像素宽度的边框,也可以在边缘周围添加一个特定的像素值的边框。 该函数的语法如下: cv2.copyMakeBorder(src, top, bottom, left, right, borderType[, dst[, value]]) 其,src表示输入的图像,top、bottom、left、right表示需要在图像边缘添加的像素宽度,borderType表示边框类型,dst表示输出的图像,value表示边框的像素值。 borderType可以取以下几种值: - cv2.BORDER_CONSTANT:添加一个常数值的边框。 - cv2.BORDER_REPLICATE:复制图像边缘的像素值。 - cv2.BORDER_REFLECT:通过镜像反射的方式填充边框。 - cv2.BORDER_WRAP:通过环绕的方式填充边框。 使用copyMakeBorder函数可以在图像边缘添加边框,从而使得图像更加美观,同时也可以在图像处理起到一定的作用。 ### 回答2: copyMakeBorder函数OpenCV的一个图像处理函数,它可以在图像边界周围添加像素。这可以用于各种图像处理应用程序,例如在图像周围创建边框或在图像边缘填充零(黑)像素。本文将详细介绍copyMakeBorder函数以及如何使用它。 copyMakeBorder函数的语法如下: ```python cv2.copyMakeBorder(src, top, bottom, left, right, borderType[,dst[, value]]) ``` 其,src是输入图像,top,bottom,left,right表示在图像的四个边界上要添加的像素数。borderType是指定添加像素的类型,包括cv2.BORDER_CONSTANT,cv2.BORDER_REFLECT,cv2.BORDER_WRAP和cv2.BORDER_REPLICATE。可选的dst表示为输出图像,如果没有指定,则函数会自动创建一个。value是用于cv2.BORDER_CONSTANT时指定添加像素的值。 下面给出一些常见的borderType类型的使用方法: 1. BORDER_CONSTANT : 添加的像素为常数(可选颜色),默认情况下为黑色 ```python img1 = cv2.copyMakeBorder(img, 10,10,10,10,cv2.BORDER_CONSTANT) ``` 2. BORDER_REPLICATE : 添加的像素为复制的最后像素 ```python img1 = cv2.copyMakeBorder(img,10,10,10,10,cv2.BORDER_REPLICATE) ``` 3. BORDER_WRAP : 添加的像素为环绕的像素 ```python img1 = cv2.copyMakeBorder(img,10,10,10,10,cv2.BORDER_WRAP) ``` 4. BORDER_REFLECT : 添加的像素为图像反转后的像素 ```python img1 = cv2.copyMakeBorder(img,10,10,10,10,cv2.BORDER_REFLECT) ``` 总之,copyMakeBorder函数是用于在图像边界添加像素的简单函数,对于许多图像处理任务非常有用。掌握了这个函数,可以让你的图像处理程序更加灵活和通用。 ### 回答3: copyMakeBorder函数OpenCV的一种图像处理方法,用于将图像的边界进行扩展或复制,生成一个新的边缘处理后的图像。 在实际应用copyMakeBorder函数通常用于边界填充周围像素值的情况,例如:当需要对原始图像进行滤波、卷积等操作时,如果不进行边缘扩展,则会导致边缘像素值无法参与滤波或者卷积运算,从而导致处理结果出现偏差。 函数的语法形式如下: ``` void cv::copyMakeBorder( cv::InputArray src, // 输入原图像 cv::OutputArray dst, // 输出扩展后的图像 int top, // 上边界宽度 int bottom, // 下边界宽度 int left, // 左边界宽度 int right, // 右边界宽度 int borderType, // 边界类型 const cv::Scalar& value = cv::Scalar() // 边界填充颜色,默认为黑色 ); ``` 函数参数说明: - src:输入原图像,可以是灰度或者彩色图像,通道数不限。 - dst:输出扩展后的图像。 - top/bottom/left/right:分别代表上/下/左/右四个边界的扩展宽度,单位为像素。 - borderType:表示边界填充的类型,包括以下几种: - BORDER_CONSTANT:表示采用常数填充边界。 - BORDER_REPLICATE:表示通过复制最靠近边界的像素填充边界。 - BORDER_REFLECT:表示通过边界反转填充边界。 - BORDER_REFLECT_101:表示和 BORDER_REFLECT 类似,但是以第一个和第二个像素为心进行边界反转。 - BORDER_WRAP:表示通过环绕填充边界。 - value:边界填充的颜色,可用来填充边界像素值。默认为黑色。 需要注意的是,边界扩展宽度(top/bottom/left/right)不能超过原始图像的尺寸。在使用copyMakeBorder函数时,建议根据实际需要选择边界类型和填充颜色,避免对图像处理结果产生不利影响。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值