OpenCV入门学习记录---2、图像的加法、混合

举报
Pengpengpeng 发表于 2024/11/24 13:38:05 2024/11/24
【摘要】 本文介绍了图像的加法(cv.add)和混合(cv.addWeighted)两种处理方式

2.1 图像的加法------将两幅图像加载在一起

准备好一张风景图和一张黑色背景图的雨点照片(注意照片像素大小要一致才能进行加减法运算)

首先常规操作

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

显示我们的雨点图

rain = cv.imread("/home/pengsongjie/mydrive/image/rain")

plt.imshow(rain[:,:,::-1])

显示我们的风景图

view1 = cv.imread("/home/pengsongjie/mydrive/image/view1.png")

plt.imshow(view1[:,:,::-1])

进行加法运算时我用了两种方式:

  • 直接使用加号运算符(img1 = rain + view1)

    • 这种方式在某些图像处理库中是支持的,比如Python的NumPy库,它允许数组之间的元素级加法。如果rainview1都是NumPy数组,并且它们的形状(即尺寸和通道数)相同,那么这种加法运算会逐元素地将两个数组的对应元素相加。
    • 例如,如果rainview1都是灰度图像,那么它们的每个像素值会被相加;如果它们是彩色图像,那么每个颜色通道的像素值会被分别相加。
    • 需要注意的是,这种加法可能会导致溢出,即结果超过图像数据类型的最大值。例如,如果图像是8位无符号整数(uint8),像素值的范围是0-255,相加的结果如果超过255,就会发生溢出

img1 = rain+view1

plt.imshow(img1[:,:,::-1])

  • 使用OpenCV的add函数(img2 = cv.add(rain, view1))

    • OpenCV是一个强大的图像处理库,它提供了许多内置函数来处理图像。cv.add函数是OpenCV中用于图像加法的函数。
    • 这个函数可以处理不同数据类型的图像,并且可以自动处理溢出。如果加法的结果超过了图像数据类型的最大值,add函数会进行饱和操作,即结果会被限制在数据类型的范围内。
    • cv.add函数还可以处理不同大小的图像,如果两个图像的大小不同,它会将较小的图像复制到较大图像的左上角。
    • 使用cv.add函数时,你需要确保两个图像的通道数相同,否则函数会抛出错误。

img2 = cv.add(rain,view1)

plt.imshow(img2[:,:,::-1])


2.2 图像的混合----------将两幅图像按照不同的比例进行混合

img3 = cv.addWeighted(view1,0.7,rain,0.3,0)  #cv.addWeighted() 是 OpenCV 中用于图像混合的一个函数,它可以根据给定的权重将两个图像融合到一个输出图像中。

plt.imshow(img3[:,:,::-1])




【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。