2014-03-03 5 views
1

나는 2 주 동안 python으로 opencv를 사용 해왔다. 나는 움직이는 물체의 중심을 찾고 싶다.움직이는 이진 이미지에서 점의 중심을 찾는 방법

먼저 두 프레임과 비트와의 차이점을 찾습니다. bitwise 후에는 아래 그림에서 볼 수 있듯이 움직이는 물체 (쿼드 로터) 주위에 흰색 점들의 그룹처럼 나옵니다.

내 질문은 :이 경우처럼 움직이는 물체 (쿼드 로터)의 중심을 찾기 위해 어떤 방법을 사용해야합니까?

나는이 모든 점들의 평균 중심을 찾을 수있을 것이라고 생각했지만 어떻게해야할지 모르겠다. 여기

샘플 사진에게 있습니다

ss

여기 ss2



내 코드는

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

,536,

먼저 답장을 보내 주셔서 감사합니다.

방금 ​​질량 센터를 찾기 위해 방법을 적용하려 시도했지만, 필요하면 정확하지는 않습니다.

그래서 diff_frame의 밝기를 바꾸면 또 다른 아이디어가 떠 올랐습니다 윤곽선이나 다른 방법과 같은 방법을 사용하면 더 쉽고 정확합니다.

+0

diff 이미지에서 이러한 점의 불규칙한 바깥 윤곽을 찾으려고 했습니까? – dervish

답변

0

당신은 몇 가지 방법을 적용 할 수있다,

  • 는 모든 점의 조정 x의 평균,와 y에 대해 동일한를 얻을 수 있지만,이 방법은 당신이 필요로하지 정확 수 있습니다. 삼각형의

    • 삼각형 => 찾기 센터 원 또는 사각형의
    • 원 => 센터 : 우리가 그 점을 포함하는 정기적 인 윤곽을 정의 할 필요가 다음에 대한
    • . 나는 당신이 질량 중심 계산하는 순간을 사용할 수 있습니다 불규칙한 모양 찾을 수 있다면 당신이 그 opencv functions

  • 을 볼 수 초대이 방법에 대한

  • : 변수에 포인트를 넣어 같은 vector<Points> contour; 다음을 수행하십시오

순간 엄마 = 순간 (매트 (윤곽));
// 질량 중심 찾기
포인트 mc = 포인트 (mom.m10/mom.m00, mom.m01/mom.m00);

관련 문제