这篇文章主要介绍了python中opencv怎么实现图像边框添加及图像混合,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
图像边框的实现
图像边框设计的主要函数
cv.copyMakeBorder()——实现边框填充
主要参数如下:
- <李>
参数一:源图像——如:读取的img
李> <李>参数二,参数五分别是:上下左右边的宽度——单位:像素
李> <李>参数六:边框类型:
李> <李>cv.BORDER_CONSTANT——cv.BORDER_REPLICATE cv.BORDER_REFLECT——cv.BORDER_WRAP cv.BORDER_REFLECT_101——cv.BORDER_TRANSPARENT cv.BORDER_REFLECT101——cv.BORDER_DEFAULT简历。李BORDER_ISOLATED
> <李>参数七——只在边框类型选择borderType==BORDER_CONSTANT,才设置,意为边框值
边框类型的说明:
- <李>
BORDER_CONSTANT:意为添加指定颜色的边框——由价值值确定:为列表
李> <李>其它参数:(可根据需要调制,不过一般前两个用的多一些)
代码实例
import cv2 as 简历 import numpy  as np if __name__ ==,“__main__":=,,img  cv.imread (& # 39;。/imag_in_save open_class.png& # 39;) ,cv.namedWindow(& # 39;图像放大# 39;,,cv.WINDOW_NORMAL) ,cv.resizeWindow(& # 39;图像放大# 39;,,500,,500)=,,img  cv.copyMakeBorder (img, 20日,20日,20日,20日,cv.BORDER_CONSTANT,, value=https://www.yisu.com/zixun/[2, 83,13]) #添加边框 简历。imshow(图像放大,img) cv.waitKey (0) cv.destroyAllWindows ()
效果
图像混合的实现
图像混合实现的主要函数
cv.addWeighted()——实现图像的混合
它的工作原理采用的是一个简单权重公式:g (x)=(1 ?α)f0 (x) +αf1 (x)
- <李>
第一个参数为一张图象,紧跟着第二个参数为第一张图片的权重(0 ~ 1)也就是公式里的(1 -α)
李> <李>第三个参数为另一张需要混合的图片,同样的,第四个参数为这张图片的权重,也就是公式里的(α)
李> <李>至于第五个参数:每个对应标量的和值,可以设置混合的高光
李> <李>其它两个参数:(最后的一个参数单独用的不是很多,在一些其他处理中用的比较多)
李> <李>dst 输出数组,其大小和通道数与输入数组相同(我们一般通过直接返回得到~)
李> <李>dtype 输出数组的可选深度;当两个输入数组的深度相同时,可以将dtype设置为1,这等效于src1.depth ()
李>代码实例
import cv2 as 简历 import numpy  as np if __name__ ==,“__main__":=,,img1  cv.imread (" # 39; 2.。/png # 39;,, 1), #,读取彩色图片=,,img2  cv.imread (" # 39; 3.。/png # 39;,, 1) ,cv.namedWindow(& # 39;图像放大# 39;,,cv.WINDOW_NORMAL), #,窗体=,,img1  img1(0: 200年,,,0:,400],#,截取图像的指定部分,因为图像混合需要等大的图像=,,img2  img2(0: 200年,,,0:,400]=,,img  cv.addWeighted (img2, img1,, 0.7,, 0.3, 0), #,混合图片,根据权重 ,while 真正的: ,cv.imshow(& # 39;图像放大# 39;,,img), #,显示当前序列号图片=,,k  cv.waitKey(0),及0 xff ,if k ==, 27日: ,打破 之前,cv.destroyAllWindows () >效果
小练习(产生类似幻灯片渐变的效果)
主要思路
- <李>
首先准备好一系列等大的图片或者截取一系列相同大小的图片区域作为我们的图像数据
李> <李>然后将图像信息,分别拼接到一个列表列表中
李> <李>然后,实现一张一张图片的显示,在交换的间隙,实现渐变的效果,也就是图像混合。
李> <李>然后就可以欣赏了,不过效果的话,主要看设置的参数吧(当然因为没有渲染,可能还是有些僵硬)。
代码示例
import cv2 as 简历 import numpy  as np if __name__ ==,“__main__":=,img_list [], #,创建一个空序列装准备显示的一系列图片 ,counts =, 0, #,显示图片的序号 ,cv.namedWindow(& # 39;图像放大# 39;,,cv.WINDOW_NORMAL), #,窗体 ,cv.resizeWindow(& # 39;图像放大# 39;,,500,,500) 范围,for 小姐:拷贝(2,,7):,#,遍历图片,凭借到空数组中——一共5张=,,img  cv.imread (f # 39;。/imag_in_save/scr/{我}. png # 39;), #,用f"“实现参数传入 ,img =, img[0:, 200, 0:, 400], #,截取图像的指定部分,因为图像混合需要等大的图像 ,img_list.append (img), #,实现图片添加 ,while 真正的: ,cv.imshow(& # 39;图像放大# 39;,,img_list[数]),#,显示当前序列号图片=,,k  cv.waitKey(2000),和0 xff +=,counts 1, #,循环下一张图片——0,1,2,3,4有效==,if counts 5:, #,循环到最后一张图片后返回到第一张图片 counts 才能=0 ,for 小姐:拷贝范围(0,10): k_f 才能=,cv.addWeighted (img_list counts 作用;1,,1,安康;(小姐:*,0.1),img_list(计数),小姐:*,0.1,0),#,做类似渐变的图像合成 #,才能实现两张(当前图片和接下来显示的图片)图片,不同权重的混合,由于照片权重改变来实现渐变 cv.imshow才能(& # 39;图像放大# 39;,,k_f), #,显示混合的图片 k 才能=,cv.waitKey (120),,, 0 xff #,延时和按键读取 if 才能;k ==, 27日:#,ESC键 ,打破 ,if k ==, 27日: ,打破 nullpython中opencv怎么实现图像边框添加及图像混合