0

私はOpenCVを初めて使用し、車からナンバープレートを取得しようとしてテストしています。私はそれを行う方法に行き詰まっています。たとえば、次のような画像から始めます。ここに画像の説明を入力

そして、最終結果を次のようにしたい:

ここに画像の説明を入力

私はadaptivethresholdの使い方を知っており、1から2に進む必要があるステップで混乱していることを知っています。助けてくれてありがとう!

4

2 に答える 2

1

ハードコードされたしきい値が多すぎますが、これは機能しますか?

ここに画像の説明を入力

#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace cv;

int main( int argc, char** argv )
{
    Mat src = imread( "C:/test/single/license.jpg");
    cvtColor(src,src,CV_BGR2GRAY);

    blur( src, src, Size(3,3) );
    Canny( src, src, 130, 130*4, 3 );
    imshow( "edge", src );

    GaussianBlur(src,src,Size(3,3),60);
    threshold(src,src,0,255,CV_THRESH_OTSU);

    vector<vector<Point> > contours;
    vector<Vec4i> hierarchy;
    findContours(src, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE);
    Mat todraw=Mat::zeros(src.size(), CV_8UC1);
    for(size_t i = 0; i < contours.size(); i++)
    {     
        double area = fabs(contourArea(Mat(contours[i])));
        if(area<600)
            drawContours(todraw,contours,i,Scalar(255),-1);
    }
    imshow( "plate", todraw );
    waitKey(0);
    return 0;
}    
于 2013-06-08T10:51:16.860 に答える
0

これはまさにあなたが望むものです - https://github.com/MasteringOpenCV/code/tree/master/Chapter5_NumberPlateRecognition

Mastering OpenCV Book からのものです。ナンバー プレートをセグメント化し、初歩的な OCR をドープして文字を認識します。

于 2013-06-08T11:16:33.787 に答える