1、图像大小调整
图像融合之前需要进行图像shape调整,让图像的height、width相同;
|
|
|
|
查看图片的尺寸大小
import cv2 as cv
def show_image(name,img):
"""
展示图片,按任意键退出
:param name: 图片名称 <class 'string'>
:param img: 图片矩阵 <class 'numpy.ndarray'>
:return:
"""
cv.imshow(name,img) #展示图片
cv.waitKey(0)#等待时间,毫秒级,0表示任意键终止
cv.destroyWindow(name)
if __name__ == '__main__':
img1=cv.imread("../sources/animal.jpg")
print(img1.shape)
img2=cv.imread("../sources/sky.png")
print(img2.shape)
运行结果,本文将img1为尺寸模板进行融合,因此需要修改img2的尺寸;
img1:(737, 1200, 3)
img2:(605, 1072, 3)
resize方法使用说明:cv.resize(图像,(width, height))
img2=cv.resize(img2,(1200, 737))
print(img2.shape)
2、图像融合:
dst =alphasrc1 + betasrc2 + gamma
融合函数说明:
cv.addWeighted(
InputArray src1, # 图片1路径
double alpha, # 图片1权重
InputArray src2, # 图片2路径
double beta, # 图片2权重
double gamma, # 图像的偏移量;
OutputArray dst, # 融合后的图片(输出图片)
int dtype=-1 # 输出阵列的可选深度,有默认值-1
)
代码案例如下:
import cv2 as cv
def show_image(name,img):
"""
展示图片,按任意键退出
:param name: 图片名称 <class 'string'>
:param img: 图片矩阵 <class 'numpy.ndarray'>
:return:
"""
cv.imshow(name,img) #展示图片
cv.waitKey(0)#等待时间,毫秒级,0表示任意键终止
cv.destroyWindow(name)
if __name__ == '__main__':
img1=cv.imread("../sources/animal.jpg")
img2=cv.imread("../sources/sky.png")
img2=cv.resize(img2,(1200, 737))
img=cv.addWeighted(img1,0.8,img2,0.2,3)
cv.imwrite("../sources/fex_img.jpg", img)
show_image("img",img)
运行结果:
|
|
|
|
本文含有隐藏内容,请 开通VIP 后查看