2011-02-24 3 views
0

오버 헤드 웹캠에서 로봇의 위치를 ​​추적하려고합니다. 그러나 로봇이나 환경에 대한 접근성이별로 없으므로 웹캠의 스냅 샷 작업을하고 있습니다.
로봇에는 전략적으로 배치 된 5 개의 밝은 LED가 있으며 로봇과 환경에서 서로 다른 색으로 분리되어 쉽게 분리됩니다.
EmguCV를 사용하여이 작업을 수행 할 수 있었으며, 아래와 같은 이진 이미지가 생성되었습니다. 내 질문은 이제 어떻게 5 개의 얼룩의 위치를 ​​얻고 그 위치를 사용하여 로봇의 위치와 방향을 결정하는 것입니까?EmguCV를 사용하여 작은 얼룩을 어떻게 감지합니까?

나는 Emgu.CV.VideoSurveillance.BlobTrackerAuto 클래스 실험되었지만, 그것은 고집 위의 이미지에 얼룩을 감지 거부합니다. 이 모든 것에 관해서 초보자가 조금이라도 있으면, 나는 내가 뭘 잘못하고 있는지 확신 할 수 없다.
위의 이미지에서 얼룩의 위치를 ​​얻는 가장 좋은 방법은 무엇입니까?

답변

2

emgucv를 사용하는 방법을 알 수 없으므로 opencv에서 emgucv로 호출을 변환해야합니다. blob을 얻으려면 cv::findContours을 사용하고 blob을 얻으려면 cv::moments을 사용하십시오 (blob의 중간 점을 얻는 수식은 cv::moments의 설명서에 있습니다). 그런 다음 cv::estimateRigidTransform을 사용하여 로봇의 위치와 방향을 얻습니다.

+0

이것은 많은 도움을주었습니다. 불행히도, 나는 심전도 추산을 추정하기 위해 emguCV 아날로그를 찾지 못했고 그것을 호출하는 방법을 모릅니다 ... 계속 살펴볼 것입니다. 그러나 지금까지 당신은 나를 도왔습니다. –

+1

@death_au : 5 가지 직책을 수행 할 때 위치 및 방향을 얻으려면 너무 힘들지 않아야합니다. 3 점이있는 선의 가운데 점을 식별하고 다른 4 점의 평균을 위치로 사용하고 평균에서 5 점까지의 방향을 방향으로 사용합니다. – etarion

+0

@death_au : Emgu의'CvInvoke.cvEstimateRigidTransform();'입니다. – asakura89

0

blob을 처리하기 위해 cvBlob 라이브러리를 사용합니다. 어제 나는 작은 얼룩을 탐지하고 잘 작동하도록 그것과 함께 작업했습니다.