OpenCV 图像减法运算:使用 NumPy 实现图像相减
使用 OpenCV 和 NumPy 进行图像减法运算
本示例展示如何使用 OpenCV 和 NumPy 库进行图像减法运算。
代码示例:
import cv2
import numpy as np
# 读取图像
img = cv2.imread(r'd:\image\angiography_live_image.tif')
m = cv2.imread(r'd:\image\angiography_mask_image.tif')
# OpenCV 减法运算
# result = cv2.subtract(img,m)
result = np.int32(img) - np.int32(m)
# 显示原始图像
cv2.imshow('original', img)
# 归一化结果图像的灰度值范围到0-255
cv2.normalize(result, result, 0, 255, cv2.NORM_MINMAX)
# 将结果图像转换为无符号8位整型
result = result.astype(np.uint8)
# 显示结果图像
cv2.imshow('result', result)
# 等待按下任意按键后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
代码分析:
-
导入库:
import cv2: 导入 OpenCV 库,用于图像读取、显示和处理。import numpy as np: 导入 NumPy 库,用于数组操作。
-
读取图像:
img = cv2.imread(r'd:\image\angiography_live_image.tif'): 读取名为 'angiography_live_image.tif' 的图像并将其存储在变量img中。m = cv2.imread(r'd:\image\angiography_mask_image.tif'): 读取名为 'angiography_mask_image.tif' 的图像并将其存储在变量m中。
-
图像减法运算:
result = np.int32(img) - np.int32(m): 使用 NumPy 库进行图像减法。将图像转换为 32 位整型数组,并进行数组相减,结果存储在变量result中。
-
显示图像:
cv2.imshow('original', img): 使用 OpenCV 显示原始图像img,窗口标题为 'original'。cv2.normalize(result, result, 0, 255, cv2.NORM_MINMAX): 对结果图像result进行归一化操作,将灰度值范围调整到 0-255 之间。result = result.astype(np.uint8): 将结果图像转换为无符号 8 位整型,以确保图像数据类型与 OpenCV 兼容。cv2.imshow('result', result): 使用 OpenCV 显示处理后的图像result,窗口标题为 'result'。
-
等待用户操作:
cv2.waitKey(0): 等待用户按下任意按键,按下按键后程序继续执行。cv2.destroyAllWindows(): 关闭所有 OpenCV 窗口。
注意:
- 图像减法运算通常用于去除图像中的背景或突出显示特定区域。
- 代码示例中使用了 NumPy 的数组运算,而不是 OpenCV 的
cv2.subtract()函数,这是因为使用 NumPy 更灵活,且在处理大型图像时效率更高。 - 确保图像文件路径正确,并且图像格式兼容 OpenCV。
原文地址: https://www.cveoy.top/t/topic/pal8 著作权归作者所有。请勿转载和采集!