나는 이것을 내 추적 알고리즘의 기본 기능으로 사용합니다.옵티컬 플로우를 사용한 OpenCV 추적
//1. detect the features
cv::goodFeaturesToTrack(gray_prev, // the image
features, // the output detected features
max_count, // the maximum number of features
qlevel, // quality level
minDist); // min distance between two features
// 2. track features
cv::calcOpticalFlowPyrLK(
gray_prev, gray, // 2 consecutive images
points_prev, // input point positions in first im
points_cur, // output point positions in the 2nd
status, // tracking success
err); // tracking error
cv::calcOpticalFlowPyrLK
입력으로 이전 이미지에서 포인트의 벡터를 받아, 다음 이미지에 적절한 포인트를 반환합니다. 이전 이미지에 임의의 픽셀 (x, y)이 있다고 가정하면 OpenCV 옵티컬 플로우 함수를 사용하여 다음 이미지에서이 픽셀의 위치를 어떻게 계산할 수 있습니까?
한 번만 기능을 감지합니다. 나는이 코드를 테스트했다. 첫 번째 이미지에서 탐지 된 기능 만 추적 할 수 있음을 발견했습니다. 이러한 모든 기능이 이미지를 넘어서는 경우 추적 할 기능이 없습니다. 3D 구축에 광학 흐름을 사용해야합니다. 그러면 이전 기능을 계속 추적하고 그 동안 새로운 이미지 기능을 추가하려면 어떻게해야합니까? 감사. – Shiyu
예, 'goodFeaturesToTrack' 기능 만 검색하면 옵티컬 플로 방식으로 간단히 추적 할 수 있습니다. 각 프레임에 특정 수의 기능을 유지하려면 현재 프레임에 대해 얼마나 많은 기능을 추적했는지 감지 한 다음 추가 기능을 탐지하여 다음 프레임으로 추적해야합니다. 대안은 모든 프레임에서 기능을 탐지 한 다음 [이 페이지] (http://opencv.itseez.com/modules/features2d/doc/features2d.html)의 기능을 사용하여 설명자를 계산하고 해당 설명자를 일치시키는 것입니다. – Chris
자세한 내용이 필요하면 새로운 질문을하는 것이 좋습니다. – Chris