OpenCV入门学习记录---2、图像的加法、混合
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库,它允许数组之间的元素级加法。如果
rain
和view1
都是NumPy数组,并且它们的形状(即尺寸和通道数)相同,那么这种加法运算会逐元素地将两个数组的对应元素相加。 - 例如,如果
rain
和view1
都是灰度图像,那么它们的每个像素值会被相加;如果它们是彩色图像,那么每个颜色通道的像素值会被分别相加。 - 需要注意的是,这种加法可能会导致溢出,即结果超过图像数据类型的最大值。例如,如果图像是8位无符号整数(uint8),像素值的范围是0-255,相加的结果如果超过255,就会发生溢出
- 这种方式在某些图像处理库中是支持的,比如Python的NumPy库,它允许数组之间的元素级加法。如果
img1 = rain+view1
plt.imshow(img1[:,:,::-1])
-
使用OpenCV的
add
函数(img2 = cv.add(rain, view1)):- OpenCV是一个强大的图像处理库,它提供了许多内置函数来处理图像。
cv.add
函数是OpenCV中用于图像加法的函数。 - 这个函数可以处理不同数据类型的图像,并且可以自动处理溢出。如果加法的结果超过了图像数据类型的最大值,
add
函数会进行饱和操作,即结果会被限制在数据类型的范围内。 cv.add
函数还可以处理不同大小的图像,如果两个图像的大小不同,它会将较小的图像复制到较大图像的左上角。- 使用
cv.add
函数时,你需要确保两个图像的通道数相同,否则函数会抛出错误。
- OpenCV是一个强大的图像处理库,它提供了许多内置函数来处理图像。
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])
- 点赞
- 收藏
- 关注作者
评论(0)