介绍
欢迎来到这个关于使用 OpenCV-Python 进行图像算术运算的教程!在本教程中,我们将介绍加法、减法和按位运算。在本教程结束时,你将对如何使用这些基本操作来处理图像有一个扎实的理解。
图像加法
图像加法是将两个图像的像素值相加的过程。在 OpenCV 中,函数 cv2.add() 用于此目的。
打开 Python Shell
在终端中打开 Python Shell
python3
加载两个图像
使用 .imread 读取目标图像。
import cv2 as cv2
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')
将图像相加
使用 .add() 来聚合上一步中读取的两个图像。
result = cv2.add(img1, img2)
保存结果
将结果写入文件。
cv2.imwrite('Image_Addition.jpg', result)
示例
生成的图像 Image_Addition.jpg 看起来像这样:

图像混合
这也是图像加法,但为了给出混合或透明的感觉,图像被赋予不同的权重。图像按照以下等式相加:

cv.addWeighted() 将此等式应用于图像。
将图像相加
使用 .addWeighted() 将等式应用于上一步中读取的图像。
result = cv2.addWeighted(img1,0.7,img2,0.3,0)
保存结果
将结果写入文件。
cv2.imwrite('Image_Blending.jpg', result)
示例
生成的图像 Image_Blending.jpg 看起来像这样:

图像减法
图像减法用于查找两个图像之间的差异。它将一个图像的像素值从另一个图像中减去。在 OpenCV 中,你可以使用 cv2.subtract() 函数。
减去图像
使用 .subtract() 将 image1 的像素值从 image2 中减去。
result = cv2.subtract(img1, img2)
保存结果
将结果写入文件。
cv2.imwrite('Image_Subtraction.jpg', result)
示例
生成的图像 Image_Subtraction.jpg 看起来像这样:

按位运算
按位运算用于操作像素值的各个位。OpenCV 提供了诸如 cv2.bitwise_and()、cv2.bitwise_or()、cv2.bitwise_xor() 和 cv2.bitwise_not() 等函数来执行按位运算。
让我们看看每个操作的示例:
按位与 (Bitwise AND)
使用 .bitwise_and() 计算两个图像中像素值的按位与。
bitwise_and = cv2.bitwise_and(img1, img2)
按位或 (Bitwise OR)
使用 .bitwise_or() 计算两个图像中像素值的按位或。
bitwise_or = cv2.bitwise_or(img1, img2)
按位异或 (Bitwise XOR)
使用 .bitwise_xor() 计算两个图像中像素值的按位异或。
bitwise_xor = cv2.bitwise_xor(img1, img2)
按位非 (Bitwise NOT)
使用 .bitwise_not() 计算一个图像中像素值的按位非。
bitwise_not_img1 = cv2.bitwise_not(img1)
保存结果
将结果写入文件。
cv2.imwrite('Bitwise_AND.jpg', bitwise_and)
cv2.imwrite('Bitwise_OR.jpg', bitwise_or)
cv2.imwrite('Bitwise_XOR.jpg', bitwise_xor)
cv2.imwrite('Bitwise_NOT_Image1.jpg', bitwise_not_img1)
示例
生成的图像看起来像这样:
- 与
Bitwise_AND.jpg:

- 或
Bitwise_OR.jpg:

- 异或
Bitwise_XOR.jpg:

- 非
Bitwise_NOT_Image1.jpg:

总结
恭喜!你现在已经学会了如何使用 OpenCV-Python 对图像执行算术运算。你已经了解了图像加法、减法和按位运算。这些基本操作对于图像处理任务非常有用,例如混合图像、检测变化以及遮蔽图像的特定区域。
继续练习并尝试不同的图像,以更好地理解这些操作的工作原理。祝你好运,编程愉快!



