Java 确定碰撞时间

Java 确定碰撞时间,java,android,c++,Java,Android,C++,我正在开发一个android应用程序,它可以确定摄像机前方障碍物的距离。如果我计算碰撞的时间,我将能够确定距离。我能够获得光流矢量,我如何从那里继续确定碰撞时间。 这就是我目前所拥有的 mRgba = inputFrame.rgba(); if (mMOP2fptsPrev.rows() == 0) { //Log.d("Baz", "First time opflow"); // first time through the loop so w

我正在开发一个android应用程序,它可以确定摄像机前方障碍物的距离。如果我计算碰撞的时间,我将能够确定距离。我能够获得光流矢量,我如何从那里继续确定碰撞时间。 这就是我目前所拥有的

    mRgba = inputFrame.rgba();
    if (mMOP2fptsPrev.rows() == 0) {

        //Log.d("Baz", "First time opflow");
        // first time through the loop so we need prev and this mats
        // plus prev points
        // get this mat
        Imgproc.cvtColor(mRgba, matOpFlowThis, Imgproc.COLOR_RGBA2GRAY);

        // copy that to prev mat
        matOpFlowThis.copyTo(matOpFlowPrev);

        // get prev corners
        Imgproc.goodFeaturesToTrack(matOpFlowPrev, MOPcorners, iGFFTMax, 0.05, 20);
        mMOP2fptsPrev.fromArray(MOPcorners.toArray());

        // get safe copy of this corners
        mMOP2fptsPrev.copyTo(mMOP2fptsSafe);
        }
    else
        {
        //Log.d("Baz", "Opflow");
        // we've been through before so
        // this mat is valid. Copy it to prev mat
        matOpFlowThis.copyTo(matOpFlowPrev);

        // get this mat
        Imgproc.cvtColor(mRgba, matOpFlowThis, Imgproc.COLOR_RGBA2GRAY);

        // get the corners for this mat
        Imgproc.goodFeaturesToTrack(matOpFlowThis, MOPcorners, iGFFTMax, 0.05, 20);
        mMOP2fptsThis.fromArray(MOPcorners.toArray());

        // retrieve the corners from the prev mat
        // (saves calculating them again)
        mMOP2fptsSafe.copyTo(mMOP2fptsPrev);

        // and save this corners for next time through


    Video.calcOpticalFlowPyrLK(matOpFlowPrev, matOpFlowThis, mMOP2fptsPrev, mMOP2fptsThis, mMOBStatus, mMOFerr);

    cornersPrev = mMOP2fptsPrev.toList();
    cornersThis = mMOP2fptsThis.toList();
    byteStatus = mMOBStatus.toList();

    y = byteStatus.size() - 1;

    for (x = 0; x < y; x++) {
        if (byteStatus.get(x) == 1) {
            pt = cornersThis.get(x);
            pt2 = cornersPrev.get(x);



            Core.circle(mRgba, pt, 5, colorRed, iLineThickness - 1);
            }
        }
mRgba=inputFrame.rgba();
if(mMOP2fptsPrev.rows()==0){
//Log.d(“Baz”,“首次opflow”);
//第一次穿过环路,所以我们需要prev和这个垫子
//加上以前的分数
//拿这个垫子
Imgproc.cvtColor(mRgba、matOpFlowThis、Imgproc.COLOR_RGBA2GRAY);
//把它复制到上一张纸上
matOpFlowThis.copyTo(matOpFlowPrev);
//获取上一个角
Imgproc.良好特性跟踪(matOpFlowPrev,MOPcorners,iGFFTMax,0.05,20);
mMOP2fptsPrev.fromArray(MOPcorners.toArray());
//拿到这本书的安全副本
mMOP2fptsPrev.copyTo(mMOP2fptsSafe);
}
其他的
{
//Log.d(“Baz”、“Opflow”);
//我们以前也经历过这样的事情
//此mat有效。请将其复制到上一个mat
matOpFlowThis.copyTo(matOpFlowPrev);
//拿这个垫子
Imgproc.cvtColor(mRgba、matOpFlowThis、Imgproc.COLOR_RGBA2GRAY);
//把这个垫子的角弄到手
Imgproc.良好特性跟踪(matOpFlowThis,MOPcorners,iGFFTMax,0.05,20);
mMOP2fptsThis.fromArray(MOPcorners.toArray());
//从上一张垫子中检索角点
//(保存再次计算)
mMOP2fptsSafe.copyTo(mMOP2fptsPrev);
//把这些角落留到下次用
calcOpticalFlowPyrLK(matOpFlowPrev、matOpFlowThis、mMOP2fptsPrev、mMOP2fptsThis、mMOBStatus、mMOFerr);
cornersPrev=mMOP2fptsPrev.toList();
cornersThis=mMOP2fptsThis.toList();
byteStatus=mMOBStatus.toList();
y=byteStatus.size()-1;
对于(x=0;x
我很确定这应该是另一种方式:
如果我计算碰撞时间,我将能够确定
。计算距离比计算碰撞时间更容易确定,那么如果我有光学矢量,我如何计算距离