Lo uso para funciones como base de mi algoritmo de seguimiento.Seguimiento de OpenCV usando flujo óptico
//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
toma vector de puntos de la imagen anterior como entrada y devuelve los puntos apropiados en la siguiente imagen. Supongamos que tengo un píxel aleatorio (x, y) en la imagen anterior, ¿cómo puedo calcular la posición de este píxel en la siguiente imagen usando la función de flujo óptico OpenCV?
Me di cuenta de que solo tiene detección de características por una vez. He probado este código. Descubrí que solo se pueden rastrear las características detectadas en la primera imagen. Si todas estas características van más allá de la imagen, no habría ninguna función para seguir. Necesito usar flujo óptico para construcción en 3D. Entonces, ¿cómo podemos seguir continuamente las funciones antiguas y, mientras tanto, agregar nuevas características de imagen? Gracias. – Shiyu
Sí, solo detecta características con 'goodFeaturesToTrack', luego el método de flujo óptico simplemente las rastrea. Si desea mantener un número determinado de características en cada cuadro, deberá detectar cuántas características se rastrearon con éxito en el cuadro actual y luego intentar detectar otras para seguir en el siguiente cuadro. Una alternativa sería detectar características en cada cuadro, y luego calcular descriptores y unir esos descriptores mediante el uso de funciones en [esta página] (http://opencv.itseez.com/modules/features2d/doc/features2d.html). – Chris
Si necesita más detalles, sería mejor hacer una nueva pregunta. – Chris