通过Blob Opencv C ++进行车速估算

时间:2016-06-27 10:05:41

标签: opencv c++11

bool checkIfBlobsCrossedTheLine2(std::vector<Blob> &blobs, int &intHorizontalLinePosition,int &intHorizontalLinePosition2, cv::Mat &imgFrame2Copy) {

    bool blnAtLeastOneBlobCrossedTheLine = false;
    for (auto blob : blobs) {

        if (blob.blnStillBeingTracked == true && blob.centerPositions.size() >= 2) {
            int prevFrameIndex = (int)blob.centerPositions.size() - 2;
            int currFrameIndex = (int)blob.centerPositions.size() - 1;



            if ((blob.centerPositions[prevFrameIndex].y > intHorizontalLinePosition && blob.centerPositions[currFrameIndex].y <= intHorizontalLinePosition)&&(blob.centerPositions[prevFrameIndex].y > intHorizontalLinePosition2 && blob.centerPositions[currFrameIndex].y <= intHorizontalLinePosition2)) {

            int time = 30;
            int distance = 200;
            int speed = distance/time;
            double dblFontScale = blobs[currFrameIndex].dblCurrentDiagonalSize / 10.0;
            int intFontThickness = (int)std::round(dblFontScale * 1.0);
            std::cout<<"Speed: "<<speed<<std::endl;

            cv::putText(imgFrame2Copy, std::to_string(speed), blobs[currFrameIndex].centerPositions.back(), CV_FONT_HERSHEY_SIMPLEX, dblFontScale, SCALAR_RED, intFontThickness);
            blnAtLeastOneBlobCrossedTheLine = true;
            }

        }

    } 

    return blnAtLeastOneBlobCrossedTheLine;
}

请问我不明白为什么我无法显示每辆车的速度, 请帮忙

0 个答案:

没有答案