opencv에서 실시간으로 물체가 이동한거리를 알고싶습니다.

조회수 1393회

안녕하세요 웹캡을 이용해 실시간으로 포물선 운동하는 공을 추적하여 해당 공의 발사각과 초기속도를 구하여 도달거리를 구하는 프로그램을 만드려고합니다.

속도와 발사각을 구하려면 현재 프레임과 다음 프레임에서의 공의 움직임을 측정하여 피타고라스 공식을 이용해 거리를 측정한후 시간으로 나누어 속도를 재는 방향으로 가야할 것 같은데 어떻게 구현해야할지 잘 모르겠습니다.

 int stateSize = 6;
    int measSize = 4;
    int contrSize = 0;

    unsigned int type = CV_32F;
    cv::KalmanFilter kf(stateSize, measSize, contrSize, type);

    cv::Mat state(stateSize, 1, type); 
    cv::Mat meas(measSize, 1, type);

double precTick = ticks;
        ticks = (double)cv::getTickCount();

        double dT = (ticks - precTick) / cv::getTickFrequency();

if (found)
        {
            // >>>> Matrix A
            kf.transitionMatrix.at<float>(2) = dT;
            kf.transitionMatrix.at<float>(9) = dT;
            // <<<< Matrix A

           state.at<float>(0) = meas.at<float>(0);
                state.at<float>(1) = meas.at<float>(1);
                state.at<float>(2) = 0;
                state.at<float>(3) = 0;
                state.at<float>(4) = meas.at<float>(2);
                state.at<float>(5) = meas.at<float>(3);
        }

코드를 띄엄띄엄 올렸습니다. 풀버전은 "https://www.myzhar.com/blog/tutorials/tutorial-opencv-ball-tracker-using-kalman-filter/" 에서 확인하실 수 있습니다.

getTickCount()와 getTickFrequency()를 이용하여 dT를 구하고, 그 시간마다 공의 현재위치를 추적해서 현재위치를 meas행렬에 4행1열로나타내는 프로그램입니다. 이 움직이는 공의 각도와 초기속도를 어떻게 구해야 합니까?

  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)