zhengthomastang / 2018AICity_TeamUW

The winning method in Track 1 and Track 3 at the 2nd AI City Challenge Workshop in CVPR 2018 - Official Implementation
http://openaccess.thecvf.com/content_cvpr_2018_workshops/w3/html/Tang_Single-Camera_and_Inter-Camera_CVPR_2018_paper.html
550 stars 198 forks source link

Core dumped #29

Closed sergey-sevryuk closed 2 years ago

sergey-sevryuk commented 2 years ago

Core dumped, when saving results on disk. Not go to if ((f >= vvoTrkNd[i][0].getFrmCnt()) && (f <= vvoTrkNd[i][nTrajLen - 1].getFrmCnt())).

for (int i = 0; i < vvoTrkNd.size(); i++) { nTrajLen = vvoTrkNd[i].size(); //Core dumped!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! not go in IF if ((f >= vvoTrkNd[i][0].getFrmCnt()) && (f <= vvoTrkNd[i][nTrajLen - 1].getFrmCnt())) {
for (int j = 0; j < nTrajLen; j++) { if (f == vvoTrkNd[i][j].getFrmCnt()) { cout << "output tracking results in NVIDIA AI City Challenge format" << endl; std::fprintf(pfOutTrkTxt, "%d %d %d %d %d %d %d %.3f %.5f\n", viVdo[v], (f + 1), -1, vvoTrkNd[i][j].getBBox().x, vvoTrkNd[i][j].getBBox().y, (vvoTrkNd[i][j].getBBox().x + vvoTrkNd[i][j].getBBox().width - 1), (vvoTrkNd[i][j].getBBox().y + vvoTrkNd[i][j].getBBox().height - 1), vvoTrkNd[i][j].getSpd(), (vvoTrkNd[i][j].getDetScr() / 100));

                        // output submission results
                        std::fprintf(pfOutSubmTxt, "%d %d %d %d %d %d %d %.3f %.5f\n",
                            viVdo[v], (f + 1), -1, vvoTrkNd[i][j].getBBox().x, vvoTrkNd[i][j].getBBox().y,
                            (vvoTrkNd[i][j].getBBox().x + vvoTrkNd[i][j].getBBox().width - 1),
                            (vvoTrkNd[i][j].getBBox().y + vvoTrkNd[i][j].getBBox().height - 1),
                            vvoTrkNd[i][j].getSpd(), (vvoTrkNd[i][j].getDetScr() / 100));

                        if (bOutTrk3dImgFlg || bOutVdoFlg)
                        {
                            // plot bounding box
                            cv::rectangle(oImgFrm, vvoTrkNd[i][j].getBBox(), voBBoxClr[i % voBBoxClr.size()], 2);
                            // plot vehicle ID
                            std::sprintf(acId, "%d", (i + 1));
                            cv::putText(oImgFrm, acId, vvoTrkNd[i][j].get2dFtPt(), cv::FONT_HERSHEY_SIMPLEX, 1, voBBoxClr[i % voBBoxClr.size()], 2);
                            // plot speed 
                            std::sprintf(acSpd, "%.3f", vvoTrkNd[i][j].getSpd());
                            cv::putText(oImgFrm, acSpd, cv::Point(vvoTrkNd[i][j].getBBox().x, (vvoTrkNd[i][j].getBBox().y - 20)),
                                cv::FONT_HERSHEY_SIMPLEX, 1, voBBoxClr[i % voBBoxClr.size()], 2);
                            // plot past trajectory
                            nPltTrajLen = std::min(nPltTrajLenMax, (j + 1));
                            for (int k = j; k > (j - nPltTrajLen + 1); k--)
                                cv::line(oImgFrm, vvoTrkNd[i][k].get2dFtPt(), vvoTrkNd[i][k - 1].get2dFtPt(), voBBoxClr[i % voBBoxClr.size()], 2);
                        }

                        break;
                    }
                }

                // plot video ID
                if (bOutVdoFlg)
                    cv::putText(oImgFrm, vstrCam[v].c_str(), cv::Point(100, 100),
                        cv::FONT_HERSHEY_SIMPLEX, 2, cv::Scalar(255, 255, 255), 2);
            }
        }

        // output plotted frames
        if (bOutTrk3dImgFlg)
        {
            std::sprintf(acOutFrmNm, "%06d.jpeg", (f + 1));
            std::strcpy(acOutFrmPth, acOutTrk3dImgFlrPth);
            std::strcat(acOutFrmPth, acOutFrmNm);
            cv::imwrite(acOutFrmPth, oImgFrm);
        }

        // output video
        if (bOutVdoFlg)
            oVdoWrt.write(oImgFrm);
    }

    std::fclose(pfOutTrkTxt);
}

std::fclose(pfOutSubmTxt);

cv::namedWindow("empty");
cv::waitKey(0);