Tôi sử dụng tính năng này để hoạt động như một cơ sở của thuật toán theo dõi của mình.Theo dõi OpenCV bằng luồng quang
//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
lấy vector điểm từ hình ảnh trước làm đầu vào và trả về các điểm thích hợp trên hình ảnh tiếp theo. Giả sử tôi có pixel ngẫu nhiên (x, y) trên hình ảnh trước đó, làm cách nào tôi có thể tính toán vị trí của pixel này trên hình ảnh tiếp theo bằng chức năng lưu lượng quang OpenCV?
Tôi nhận thấy bạn chỉ thực hiện phát hiện tính năng một lần. Tôi đã thử nghiệm mã này. Tôi chỉ tìm thấy các tính năng được phát hiện trên hình ảnh đầu tiên có thể được theo dõi. Nếu tất cả các tính năng này vượt quá hình ảnh, sẽ không có tính năng nào để theo dõi. Tôi cần sử dụng luồng quang học để xây dựng 3D. Sau đó, làm thế nào chúng tôi có thể liên tục theo dõi các tính năng cũ và trong khi chờ đợi thêm các tính năng hình ảnh mới? Cảm ơn. – Shiyu
Có, bạn chỉ phát hiện các tính năng với 'goodFeaturesToTrack', sau đó phương pháp lưu lượng quang đơn giản theo dõi chúng. Nếu bạn muốn duy trì một số tính năng nhất định trong mỗi khung hình, bạn sẽ phải phát hiện có bao nhiêu tính năng được theo dõi thành công đến khung hiện tại và sau đó tìm cách phát hiện các tính năng bổ sung được theo dõi tới khung tiếp theo. Một cách khác là phát hiện các tính năng trong mỗi khung hình, sau đó tính toán các bộ mô tả và so khớp các mô tả đó bằng cách sử dụng các hàm trên [trang này] (http://opencv.itseez.com/modules/features2d/doc/features2d.html). – Chris
Nếu bạn cần thêm chi tiết, sẽ tốt hơn nếu bạn đặt câu hỏi mới. – Chris