OpenCV speed traffic sign detection

后端 未结 4 1613
再見小時候
再見小時候 2020-12-16 06:37

I have a problem detecting speed traffic signs with opencv 2.4 for Android. I do the following:

\"capture frame -> convert it to HSV -> extract red areas -> detect

4条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-16 07:19

    Referencing to your text:

    This is converted to HSV, as you can see red areas look the same color as nearby trees. Thats how I'm suppose to know it's red but I can't.

    I want to show you my result of basically what you did (simple operations should be easily transferable to android openCV):

        // convert to HSV
        cv::Mat hsv;
        cv::cvtColor(input,hsv,CV_BGR2HSV);
    
        std::vector channels;
        cv::split(hsv,channels);
    
        // opencv = hue values are divided by 2 to fit 8 bit range
        float red1 = 25/2.0f;
        // red has one part at the beginning and one part at the end of the range (I assume 0° to 25° and 335° to 360°)
        float red2 = (360-25)/2.0f;
    
        // compute both thresholds
        cv::Mat thres1 = channels[0] < red1;
        cv::Mat thres2 = channels[0] > red2;
    
        // choose some minimum saturation
        cv::Mat saturationThres = channels[1] > 50;
    
        // combine the results
        cv::Mat redMask = (thres1 | thres2) & saturationThres;
    
        // display result
        cv::imshow("red", redMask);
    

    These are my results:

    From your result, please mind that findContours alters the input image, so maybe you extracted the ellipse but just don't see it in the image anymore, if you saved the image AFTER findContours.

提交回复
热议问题