上一篇博客当中,我们认识了如何获取图片的属性,那么这一篇博客我们就来了解一下有关图像的加法和位运算是什么样的,并通过这些运算完成图片的相关操作
加法运算
图像的加法运算可以理解为将两个图像进行像素级别的叠加操作。在加法运算中,对应位置的像素值相加,得到的结果将成为新图像中该位置的像素值。
具体而言,假设有两个图像A和B,它们具有相同的尺寸和通道数。那么对于每一个像素点(x, y)和通道c,加法运算可以表示为:
新像素值 = A(x, y, c) + B(x, y, c)
这个过程对每个像素位置和通道分别进行操作,可以用于图像融合、图像叠加等应用。需要注意的是,加法运算可能导致像素值溢出,所以一般需要进行像素值归一化或截断操作,以保证结果图像的准确性和可视化效果。
也就是说,我们在图片处理当中会对两张图片相同位置的像素点进行读取,然后两个数的和就是咱们型的加法运算。但是我们都知道,我们的图像的取值范围是[0,255],那么要是超过255,我们就需要使用其他方法进行处理。
cv2.add()
cv2.add() 方法是OpenCV中用于图像加法运算的函数之一。下面是一个 cv2.add() 方法的示例:
import cv2
import numpy as np
# 读取两张图像
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')
# 执行图像加法运算
result = cv2.add(img1, img2)
# 显示结果图像
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
在这个示例中,首先使用 cv2.imread() 函数读取了两张图像,分别命名为 img1
和 img2
。然后使用 cv2.add() 方法将这两张图像进行加法运算,结果保存在 result
变量中。
最后,使用 cv2.imshow() 方法显示结果图像,使用 cv2.waitKey() 等待用户按下键盘上的任意键来关闭窗口,并使用 cv2.destroyAllWindows() 关闭所有窗口。
可能有的朋友会遇到下面的错误
cv2.error: OpenCV(4.8.0) D:\a\opencv-python\opencv-python\opencv\modules\core\src\arithm.cpp:650: error: (-209:Sizes of input arguments do not match) The operation is neither 'array op array' (where arrays have the same size and the same number of channels), nor 'array op scalar', nor &#