OpenCV学习之cv2.subtract函数

OpenCV学习之cv2.subtract函数

一、简介

cv2.subtract 是 OpenCV 库中的一个基本函数,用于对两幅图像进行逐像素的减法操作。

二、基本语法

cv2.subtract(src1, src2, dst=None, mask=None, dtype=None)

三、参数说明

  • src1 (numpy.ndarray): 第一幅输入图像或数组。

  • src2 (numpy.ndarray): 第二幅输入图像或数组,与 src1 具有相同的尺寸和类型。

  • dst (numpy.ndarray, 可选): 输出图像或数组。如果不指定,结果将存储在新的数组中。

  • mask (numpy.ndarray, 可选): 可选操作掩码,指定操作区域。

    掩码是一个二值图像,与处理图像相同的尺寸。

    • 白色区域(值为255):表示将进行操作的区域。
    • 黑色区域(值为0):表示不会进行操作的区域,输出图像这部分区域像素值置0。
  • dtype (int, 可选): 可选的输出数组类型。如果未指定,则默认为输入数组的类型。

三、返回值

返回一个与输入图像 src1src2 具有相同尺寸的数组,该数组包含对应位置的差值。

四、示例

示例 1: 在实际图像上使用 cv2.subtract
import cv2

# 读者更改路径即可,但是要保证两幅图像的尺寸相同
image1 = cv2.imread('2015.jpg')
image2 = cv2.imread('2015.jpg')

# 计算图像差
result = cv2.subtract(image1, image2)

# 显示结果
cv2.imshow('Image 1', image1)
cv2.imshow('Image 2', image2)
cv2.imshow('Subtracted Image', result)
cv2.waitKey(0)
示例 3: 使用掩码进行减法操作
import cv2
import numpy as np

# 创建两幅示例图像
image1 = np.ones((5, 5), dtype=np.uint8) * 100
image2 = np.ones((5, 5), dtype=np.uint8) * 50

# 创建掩码
mask = np.zeros((5, 5), dtype=np.uint8)
mask[1:4, 1:4] = 255  # 该区域进行减法操作

# 计算图像差
result = cv2.subtract(image1, image2, mask=mask)

print("图像1:\n", image1)
print("图像2:\n", image2)
print("掩码:\n", mask)
print("减法结果:\n", result)

五、注意事项

  1. 数据类型:

    • cv2.subtract 函数会自动处理溢出和截断问题。例如,当结果为负数时,像素值会被截断为 0;当结果超过最大值时,像素值会被截断为 255。
  2. 图像尺寸:

    • 输入图像的尺寸必须相同,否则会抛出错误。
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值