当前位置: 首页 > wzjs >正文

电话网站域名到期制作网站培训

电话网站域名到期,制作网站培训,网站推广营销策略,怎么给网站做备案目录 一、为什么需要边缘填充? 二、边缘填充方法 4.1 边界复制(BORDER_REPLICATE) 4.2 边界反射(BORDER_REFLECT) 4.3 边界反射101(BORDER_REFLECT_101) 4.4 边界常数(BORDER_…

目录

一、为什么需要边缘填充?

二、边缘填充方法

4.1 边界复制(BORDER_REPLICATE)

4.2 边界反射(BORDER_REFLECT)

4.3 边界反射101(BORDER_REFLECT_101)

4.4 边界常数(BORDER_CONSTANT)

4.5 边界包裹(BORDER_WRAP)

三、完整代码

四、总结


在图像处理中,边缘填充是一个常见的操作,尤其是在对图像进行旋转、缩放或变换时。填充边缘可以避免图像边界出现空白区域,从而保持图像的完整性。本文将详细介绍五种常用的边缘填充方法,并通过代码示例展示它们的实际应用。

一、为什么需要边缘填充?

在对图像进行旋转或变换时,原图像的某些部分可能会超出目标图像的边界,导致目标图像中出现空白区域。例如,当我们将一张图片逆时针旋转45度时,原图的四个顶点在旋转后的图像中已经看不到了,而旋转后的图像的四个顶点区域实际上是空白的。为了填补这些空白区域,我们需要对边缘进行填充。

以下是一个简单的例子:

原图:         旋转后的图:

可以看到,旋转后的图像中出现了黑色的空白区域。为了避免这种情况,我们需要对这些空白区域进行填充。

二、边缘填充方法

OpenCV提供了多种边缘填充方法,每种方法都有其独特的填充方式和应用场景。以下是五种常用的边缘填充方法:

4.1 边界复制(BORDER_REPLICATE)

原理
边界复制会将边界处的像素值进行复制,然后作为边界填充的像素值。填充后的图像四周的像素值与边界像素值相同。

示例
原图与填充后的图像对比如下:

原图边界复制填充

代码实现

import cv2
import numpy as npdef test_edge_filling():img = cv2.imread("./src/cat.png")h, w, c = img.shapescale = 0.5m = cv2.getRotationMatrix2D((w // 2, h // 2), 45, scale)frame = (w, h)img_replicate = cv2.warpAffine(img, m, frame, borderMode=cv2.BORDER_REPLICATE)cv2.imshow("Original Image", img)cv2.imshow("Replicate Border", img_replicate)cv2.waitKey(0)cv2.destroyAllWindows()if __name__ == '__main__':test_edge_filling()

4.2 边界反射(BORDER_REFLECT)

原理
边界反射会根据原图的边缘进行反射填充。填充后的图像在边界处形成镜像效果。

示例
原图与填充后的图像对比如下:

原图边界反射填充

代码实现

img_reflect = cv2.warpAffine(img, m, frame, borderMode=cv2.BORDER_REFLECT)
cv2.imshow("Reflect Border", img_reflect)

4.3 边界反射101(BORDER_REFLECT_101)

原理
与边界反射不同的是,边界反射101不再反射边缘的像素点,而是从倒数第二个像素点开始反射。

示例
原图与填充后的图像对比如下:

原图边界反射101

代码实现

img_reflect_101 = cv2.warpAffine(img, m, frame, borderMode=cv2.BORDER_REFLECT_101)
cv2.imshow("Reflect 101 Border", img_reflect_101)

4.4 边界常数(BORDER_CONSTANT)

原理
边界常数填充会用指定的常量值填充空白区域。默认的填充常数值为0(黑色),但也可以指定其他颜色。

示例
原图与填充后的图像对比如下:

原图边界常数填充

代码实现

img_constant = cv2.warpAffine(img, m, frame, borderMode=cv2.BORDER_CONSTANT, borderValue=(0, 0, 127))
cv2.imshow("Constant Border", img_constant)

4.5 边界包裹(BORDER_WRAP)

原理
边界包裹会将图像的边界部分“包裹”到另一侧,形成循环效果。

示例
原图与填充后的图像对比如下:

原图边界反射101

代码实现

img_wrap = cv2.warpAffine(img, m, frame, borderMode=cv2.BORDER_WRAP)
cv2.imshow("Wrap Border", img_wrap)

三、完整代码

import cv2
import numpy as np# 填充方式
# 边界复制(BORDER_REPLICATE): 复制边界像素值
# 边界反射(BORDER_REFLECT): 以边界为对称轴,反射填充
# 边界反射101(BORDER_REFLECT_101): 以边界为对称轴,反射填充,但首尾像素不重复
# 边界常数(BORDER_CONSTANT): 用指定常量填充
# 边界包裹(BORDER_WRAP): 以边界为对称轴,循环填充
def test001():img = cv2.imread("./src/cat.png")h, w, c = img.shapescale = 0.5m = cv2.getRotationMatrix2D((w // 2, h // 2), 45, scale)frame=(w,h)# 如果scale后的图像比frame小 就会有部分像素没值 就会进行填充img_replicate=cv2.warpAffine(img,m,frame,borderMode=cv2.BORDER_REPLICATE)img_reflect=cv2.warpAffine(img,m,frame,borderMode=cv2.BORDER_REFLECT)img_reflect_101=cv2.warpAffine(img,m,frame,borderMode=cv2.BORDER_REFLECT_101)img_constant=cv2.warpAffine(img,m,frame,borderMode=cv2.BORDER_CONSTANT,borderValue=(0,0,127))img_wrap=cv2.warpAffine(img,m,frame,borderMode=cv2.BORDER_WRAP)cv2.imshow("img",img)cv2.imshow("img_replicate",img_replicate)cv2.imshow("img_reflect",img_reflect)cv2.imshow("img_reflect_101",img_reflect_101)cv2.imshow("img_constant",img_constant)cv2.imshow("img_wrap",img_wrap)cv2.waitKey(0)if __name__ == '__main__':test001()

四、总结

本文介绍了五种常用的边缘填充方法:边界复制、边界反射、边界反射101、边界常数和边界包裹。每种方法都有其独特的应用场景和效果。在实际应用中,可以根据具体需求选择合适的填充方法。

  • 边界复制:适合需要保持边界像素值不变的场景。

  • 边界反射:适合需要镜像效果的场景。

  • 边界反射101:适合需要更自然的镜像效果的场景。

  • 边界常数:适合需要特定颜色填充的场景。

  • 边界包裹:适合需要循环效果的场景。


文章转载自:

http://F7LfikFH.rmxwm.cn
http://cmb0ov4m.rmxwm.cn
http://v6cl4110.rmxwm.cn
http://8KdJYmBT.rmxwm.cn
http://nsw0CYPk.rmxwm.cn
http://QS1VHszI.rmxwm.cn
http://uGDWBCNj.rmxwm.cn
http://A9ItXQZ4.rmxwm.cn
http://wYhCKLUO.rmxwm.cn
http://8sVgTENe.rmxwm.cn
http://xF9OMIpy.rmxwm.cn
http://Hu4Hhh9r.rmxwm.cn
http://iYbPCR8z.rmxwm.cn
http://imPWZleQ.rmxwm.cn
http://w3gbtUx0.rmxwm.cn
http://XxcGrvU6.rmxwm.cn
http://bKnglNyN.rmxwm.cn
http://ACvAL89A.rmxwm.cn
http://Eoie5uaK.rmxwm.cn
http://jluJDANd.rmxwm.cn
http://uoQ34GlP.rmxwm.cn
http://LF8jSe3D.rmxwm.cn
http://Mgifufgd.rmxwm.cn
http://xZ0kRceP.rmxwm.cn
http://GSuKIUyp.rmxwm.cn
http://SzfYj4bu.rmxwm.cn
http://BWVqhmVc.rmxwm.cn
http://ISg7wEmM.rmxwm.cn
http://y1vjGXmp.rmxwm.cn
http://9YYuLs56.rmxwm.cn
http://www.dtcms.com/wzjs/757170.html

相关文章:

  • 南宁网站建设王道下拉強wordpress注册公众号
  • 长沙口碑最好网站建设公司排行榜网站导航作用
  • 网站推广策划公司网站建设与管理就业方向
  • 烫画图案设计网站企业网站上线
  • 深圳手机模板建站怎么做会员自动售卡网站
  • 做网站需要懂什么接广告赚钱的平台
  • 药品和医疗器械网站icp备案前置审批流程wordpress wp rss
  • 做淘客网站要什么样服务器成都建设诚信网站
  • 自学网站开发需要多久建一个c2c网站要多少钱
  • 浙江百度推广高手优化网站
  • h5网站建设h网站栏目设计怎么写
  • 仿网站上的焦点图湖北建设厅网站怎么打不开
  • 怎么开个网站wordpress删除无分类文章
  • 门户网站首页设计网站开发管理系统有哪些
  • 西安网站建设开发制作wap站是什么意思啊
  • 电子商城网站的设计与实现太原市住房和城乡建设部网站
  • 企业网站服务器租用广州企业网站建设方案
  • 淘宝找做网站福州seo排名优化
  • 洛阳高新区做网站公司网站卡片设计
  • 网站建设从哪入手wordpress自定义链接不能用
  • 建立网站的主要流程有哪些步骤怎样开个人网站
  • 建网站知乎建设网站赚广告费是否可行
  • 华为官方网站手机商城住房与城乡建设部网站注册中心
  • o2o网站开发公司专业的企业网站定制公司
  • 遵义门户网站专业建站推广网络公司
  • 内蒙古网络自学网站建设重庆九龙坡营销型网站建设公司哪家好
  • 网站底版照片怎么做福州网站设计企业建站
  • 建邺网站建设西安优秀高端网站建设服务商
  • 中国建设住建网站济南网站建设索q479185700
  • 九江网站设计服务机构哪家好煤棚网架公司