如何对图像应用opencv背景减除

x7yiwoj4  于 2023-01-31  发布在  其他
关注(0)|答案(2)|浏览(127)

我正在尝试将cv2.createBackgroundSubtractorMOG()应用于此图像:

消除所有背景亮度,只留下中间两个明亮的物体以供进一步分析。2这是这个任务的正确方法吗?3如果不是,我会怎么做?

import cv2

img = cv2.imread('image.png')
sharp_img = cv2.createBackgroundSubtractorMOG().apply(img)

输出:

Traceback (most recent call last):
  File "/home/artur/Desktop/test.py", line 4, in <module>
    sharp_img = cv2.createBackgroundSubtractorMOG().apply(img)
AttributeError: module 'cv2.cv2' has no attribute 'createBackgroundSubtractorMOG
    • 编辑**:

MOG似乎不起作用。
代码:

import cv2
img = cv2.imread('image.png')
sharp_img = cv2.bgsegm.createBackgroundSubtractorMOG().apply(img)
cv2.imwrite('image2.png', sharp_img)

输出:

Traceback (most recent call last):
  File "/home/artur/Desktop/test.py", line 4, in <module>
    sharp_img = cv2.bgsegm.createBackgroundSubtractorMOG().apply(img)
AttributeError: module 'cv2.cv2' has no attribute 'bgsegm'

MOG2似乎起作用,但没有令人满意的结果:
代码:

import cv2
img = cv2.imread('image.png')
sharp_img = cv2.createBackgroundSubtractorMOG2().apply(img)
cv2.imwrite('image2.png', sharp_img)

输出图像:

我试着使用文档中MOG2方法的args,但没有任何变化。

2uluyalo

2uluyalo1#

docs,尝试以下操作:

sharp_img = cv.bgsegm.createBackgroundSubtractorMOG().apply(img)

sharp_img = cv2.createBackgroundSubtractorMOG2().apply(img)
kxeu7u2r

kxeu7u2r2#

import cv2
img = cv2.imread('image.png')

max,min = img.max(),imgg.min()
print(max,min)  #helps in giving thresholding values 

threshold_img = cv2.threshold(blurred, 127, 255,cv2.THRESH_BINARY) #good starting point to give t1 value as half of max value of image

cv2.imshow(threshold_img)

我个人认为这种方法是一个很好的起点,因为你有两个明亮的峰值,你想从噪音中分离出来。一旦你确定了所需的阈值限制。你应该能够从背景噪音中分离出这两个斑点。如果需要,你可以进一步使用cv2.erode和cv2.dilate来进一步去除噪音。

相关问题