有没有办法在python opencv2中减去两个图像?
1)图像1:任何图像(例如:房屋图像)(静态图像)
2)图像2:具有对象的相同图像(内部,人站立......)(静态图像+动态对象)
3)图3 =图像2 - 图像1
如果我们从Image1中减去Image2意味着Image3应该只给对象(人).
请举个例子.
谢谢.
小智 19
尝试背景减法(http://docs.opencv.org/master/db/d5c/tutorial_py_bg_subtraction.html#gsc.tab=0)
使用cv2.subtract(img1,img2)代替算术运算,因为cv2将处理负值.
Moh*_*imi 13
如果两张图片中的背景完全相同,您可以在帖子中提及它们.
image1 = imread("/path/to/image1")
image2 = imread("/path/to/image2")
image3 = image1 - image2
Run Code Online (Sandbox Code Playgroud)
@dvigneshwr 的答案做了一个减法,其中产生的负值四舍五入为 0。@Taha Anwar M-Holmes 的答案保留了负数,但改变了结果数组的数据类型,因此它不再是传统的图像类型。
对于那些想要根据值的绝对差异从背景图像中识别前景并返回与输入相同数据类型的数组(这就是我在这里结束的方式)的人,请使用absdiff。
假设数组的宽度和高度相同......
import cv2 as cv
image3 = cv.absdiff(image1, image2)
Run Code Online (Sandbox Code Playgroud)
值得注意的是,OP 没有为此处减去的图像提供任何细节……取决于图像的内容,所有这些方法都可以回答 OP 的问题。