OpenCV使用教程-图像融合

发布于:2022-12-19 ⋅ 阅读:(414) ⋅ 点赞:(0)

1、图像大小调整

图像融合之前需要进行图像shape调整,让图像的height、width相同;

图片1
图片2

查看图片的尺寸大小

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)

运行结果:

图片1
图片2
本文含有隐藏内容,请 开通VIP 后查看