OpenCV使用教程-图像融合

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
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值