千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > cv2.subtract函数的详解

cv2.subtract函数的详解

来源:千锋教育
发布人:xqq
时间: 2023-11-25 09:24:59 1700875499

一、函数概述

cv2.subtract()函数是OpenCV中用于图像减法运算的函数,可以很方便地进行两个图像之间的减法操作,也可以用来对一个图像进行常量的减法操作。


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

其中src1和src2是要进行减法操作的两个输入图像,可以是大小和类型相同的图像,也可以是大小不同但是通道数相同的图像;dst是函数的输出结果,如果不传入该参数,则会生成一个和输入图像类型和大小相同的图像作为输出结果;mask参数则可以用来指定一个掩膜,以只对指定区域进行减法运算;dtype参数则用来指定输出图像的数据类型,如果不传入该参数,则会自动选择src1、src2和输入图像中的数据类型中的最大值作为输出图像的数据类型。

二、图像减法操作

三、常量减法操作

cv2.subtract()函数不仅可以进行图像减法操作,还可以对一个图像进行常量减法操作。代码如下:


img = cv2.imread("lena.jpg")
cv2.imshow("img", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

result = cv2.subtract(255, img)
cv2.imshow("result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

这里我们读入一张名为lena.jpg的图像,并将它显示出来。然后,我们对这张图像进行常量减法操作:将它的每个像素值从255中减去,并将结果保存到result中。最后将result显示出来。运行代码,可以得到如下图像:

原始图像:

减法结果:

可以看到,我们成功地对lena.jpg图像进行了常量减法操作,并且得到了一个新的图像。这是因为在常量减法操作中,每个像素值都会从常量值中减去,并生成一个新的图像。

四、掩膜减法操作

cv2.subtract()函数还支持使用掩膜对图像进行减法操作,以只对指定区域进行操作。代码如下:


img1 = np.zeros((200, 200, 3), dtype=np.uint8)
img1[50:150, 50:150, :] = 255
img2 = np.zeros((200, 200, 3), dtype=np.uint8)
img2[70:180, 70:180, :] = 255
mask = np.zeros((200, 200), dtype=np.uint8)
mask[90:110, 90:110] = 255
cv2.imshow("img1", img1)
cv2.imshow("img2", img2)
cv2.imshow("mask", mask)
cv2.waitKey(0)
cv2.destroyAllWindows()

result = cv2.subtract(img1, img2, dst=None, mask=mask)
cv2.imshow("result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

这里我们同样创建两个200x200的图像img1和img2,并用mask生成一个掩膜,指定要进行减法操作的区域。然后,我们使用cv2.subtract()函数对这两个图像进行减法操作,并指定掩膜为mask。运行代码,可以得到如下图像:

可以看到,我们成功地使用掩膜对img1和img2进行了减法操作,只对mask指定的部分进行了减法操作。这是因为在掩膜减法操作中,只有掩膜中像素值为非零的部分才会进行减法操作,因此我们成功地保留了img1中心部分的白色区域。

tags: cv2.subtract
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT