Imagen de distorsión de OpenCV basada en calcOpticalFlowFarneback

Estoy tratando de realizar una deformación compleja de una imagen usando un flujo óptico denso (estoy tratando de hacer que la segunda imagen tenga aproximadamente la misma forma que la primera imagen). Probablemente me estoy equivocando, pero publicaré lo que he intentado:

cv::Mat flow;
cv::calcOpticalFlowFarneback( mGrayFrame1, mGrayFrame2, flow, 0.5, 3, 15, 3, 5, 1.2, 0 );

cv::Mat newFrame = cv::Mat::zeros( frame.rows, frame.cols, frame.type() );
cv:remap( frame, newFrame, flow, cv::Mat(), CV_INTER_LINEAR );

La idea es que si estoy calculando el tapete de flujo a partir de 2 marcos de escala de grises. Recupero un tapete de flujo que parece tener sentido, pero ahora estoy intentando reasignar mi imagen original (es decir, sin escala de grises) usando esta información de flujo.

Asumí que la función de reasignación es lo que quiero, pero me da una imagen muy distorsionada. Ninguna información de mi color sobrevive en absoluto. Simplemente termino con una imagen naranja y negra que se parece un poco a mi imagen original.

Supongo que estoy malinterpretando la función de reasignación y que o no hace lo que quiero que haga o me sale algo mal con lo que estoy pasando.

¿Si el primero tiene alguna sugerencia sobre cómo puedo resolver este problema? Si esto último, ¿qué me estoy equivocando?

Cualquier ayuda enormemente apreciada!

Respuestas a la pregunta(1)

Su respuesta a la pregunta