1
我一直在使用python的opencv兩個星期。我想找到移動物體的中心。如何找到正在移動的二進制圖像中的點的中心
我首先找到兩個幀和按位的區別。如圖所示,按位移後,它就像移動物體(四轉子)周圍的一組白點一樣出現。
所以我的問題是:在這種情況下,我應該用什麼方法找到運動物體(四轉子)的中心?
我想也許只是找到所有這些點的平均中心,但我不知道該怎麼做。
這裏是樣品圖片
這裏是我的代碼
import cv2
def diffImg(t0, t1, t2):
d1 = cv2.absdiff(t2, t1)
d2 = cv2.absdiff(t1, t0)
return cv2.bitwise_and(d1, d2)
cam = cv2.VideoCapture('track_outdoor.avi')
winName = "Movement Indicator"
cv2.namedWindow(winName, cv2.CV_WINDOW_AUTOSIZE)
# Read three images first:
t_minus = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)
t = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)
t_plus = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)
while True:
diff_frame= diffImg(t_minus, t, t_plus)
cv2.imshow('Original', t_plus)
cv2.imshow(winName, diff_frame)
# Read next image
t_minus = t
t = t_plus
t_plus = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)
key = cv2.waitKey(10)
if key == 27:
cv2.destroyWindow(winName)
break
更新#1
首先感謝托鉢僧的回答
我只是試圖應用方法來找到大衆中心 它的工作,但作爲苦行僧它不準確,因爲我需要。
所以我想出了另一個想法,如果我交流diff_frame的亮度是 更容易,更精確地使用像輪廓或其他方法?
您是否試圖在diff圖像中找到這些點的不規則外輪廓? – dervish