使用 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()

代码分析:

  1. 导入库:

    • import cv2: 导入 OpenCV 库,用于图像读取、显示和处理。
    • import numpy as np: 导入 NumPy 库,用于数组操作。
  2. 读取图像:

    • 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 中。
  3. 图像减法运算:

    • result = np.int32(img) - np.int32(m): 使用 NumPy 库进行图像减法。将图像转换为 32 位整型数组,并进行数组相减,结果存储在变量 result 中。
  4. 显示图像:

    • 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'。
  5. 等待用户操作:

    • cv2.waitKey(0): 等待用户按下任意按键,按下按键后程序继续执行。
    • cv2.destroyAllWindows(): 关闭所有 OpenCV 窗口。

注意:

  • 图像减法运算通常用于去除图像中的背景或突出显示特定区域。
  • 代码示例中使用了 NumPy 的数组运算,而不是 OpenCV 的 cv2.subtract() 函数,这是因为使用 NumPy 更灵活,且在处理大型图像时效率更高。
  • 确保图像文件路径正确,并且图像格式兼容 OpenCV。
OpenCV 图像减法运算:使用 NumPy 实现图像相减

原文地址: https://www.cveoy.top/t/topic/pal8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录