ps:因为学习过程使用的是jupyter notebook,偶尔会讲一下使用notebook时碰到的问题。notebook打开后闪退(命令提示符界面弹不出来),可能是修改的保存位置出现错误,我是修改到了d盘然后文件夹被我移走了。

边界填充

对原有图片向四周进行扩展。

设定四个边界范围,便于后续的拓展。
top_size,bottom_size,left_size,right_size = (50,50,50,50) #设定四个边界,表示填充的范围

边界填充函数,包含对象名,四个边界变量,填充方法
replicate = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borderType = cv2.BORDER_REPLICATE)

填充方法:

  • 复制法,也就是复制最边缘的像素                                                   BORDER_REPLICATE
  • 反射法,将对应像素边界反向复制  gfedcb | bcdefg | gfedcb          BORDER_REFLECT
  • 对称反射法,以最边缘的像素点为轴进行对称反射 dcb | abcd | cba                                                                                                                                                   BORDER_REFLECT_101
  • 外包装法,将最边缘所有像素进行复制 abcdef | abcdef | abcdef    BORDER_WRAP
  • 常数法,常熟填充 ,常数要加上参数value确定常数值                   BORDER_CONSTANT

部分填充方法展示:

复制法

 对称反射法

常数法

 


 数值计算

数值计算

因为图片是以矩阵方式存储,每个像素点就是矩阵中的一项,图片的数值运算就是对图片中每一个像素点进行数值运算

img_11 = img_1 + 10
对图片直接进行数值运算,注意因为是数值运算所以在发生数值越界时,结果会自动取余

在矩阵输出上可以做出调整

img_1[:5,:,0]
其中[:5]表示前五行,即0—4行,输出其他范围同理 [:]输出全部列 [0]表示BGR的颜色通道
因为openCV的图片提取是BGR,所以0 = Blue、1 = Green、 2 = Red

ps:因为是数值计算所以发生越界,会自动取余。因为调整后图片略显惊悚,结果就不贴上来了。

图片相加
cv2.add(img_1,img_11)
使用openCV中的加法算法对两个图片直接相加,如果发生越界,会直接保留最大值255

OpenCV的加法算法对图片进行相加如果发生越界会直接保留最大值,因为灰度图像通常用8位表示亮度,所以最大值为255(也就是加超了会直接变白色,或者说越加越白)


图像融合

可以对一个图像进行变形处理,或者将两个图像相融

图片变形
因为两个大小不同的图片是不能相加的。
例:img_1.shape = [1024,1024,3]
    img_2.shape = [500,500,3]
大小不同的图片不能相加,需要调整


1、修改画幅大小,通过改变长宽进行拉伸
img_2 = cv2.resize(img_2,(1024,1024))
直接输入想要的长宽调整图片


2、不改变像素,通过对x、y轴进行拉伸变换调整大小
img_2 = cv2.resize(img_2,(0,0),fx = 4,fy = 1)
不改变像素大小,改变宽度,x轴变为原来四倍,长度不变,y轴不变
图片相容
即使图片大小相同也不能直接相加。直接相加是数值相加会发生越界。
res = img_1 + img_2

直接相加的结果 

 假设img_1 = x_{1}img_2 = x_{2} 有res = \alpha x_{1} + \beta x_{2}+b。其中 α、β分别为两个图片的权重,然后再加上一个偏置值b。

res = cv2.addWeighted(img_1, 0.4, img_2, 0.6, 0)
img_1 的权重为0.4、img_2 的权重为0.6,偏置值为0
图片相融结果

可以看出来,有点像将两个图片虚化后叠加,通过改变两个图片的权重,可以修改它们的透明度从而实现相融的效果。

注:文章中所有内容均来自b站视频教程《计算机视觉实战项目》,以及我个人在学习过程中碰到的一些问题和解决办法。 

课程链接:图像基本操作:4-边界填充_哔哩哔哩_bilibili图像基本操作:4-边界填充是【计算机视觉实战项目】基于Python与OpenCV实现的图像处理全套解析!从基础原理到代码实战,全程通俗易懂,适合所有零基础入门学习!-ML/DL/CV的第6集视频,该合集共计72集,视频收藏或关注UP主,及时了解更多相关视频内容。https://www.bilibili.com/video/BV14A411C7ZE?spm_id_from=333.788.videopod.episodes&vd_source=05149ddb75a3e45d20818719a3d70f71&p=6

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐