2013-05-29 14 views
0

Je n'utilise pas OpenCV et je l'essaie en essayant de récupérer une plaque d'immatriculation dans une voiture. Je suis coincé sur la façon de faire cela. Par exemple, je vais commencer par une image comme ceci: enter image description hereTransformer une image avec OpenCV

et je veux que mon résultat final à quelque chose comme:

enter image description here

Je sais comment utiliser adaptivethreshold et des choses que je suis confus les étapes doivent aller de 1 à 2. Merci pour l'aide!

+0

Comment avez-vous obtenu ce résultat? –

Répondre

1

trop de seuils codés en dur, mais cela fonctionnera-t-il?

enter image description here

#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; 
}  
+0

les pouces vers le haut pour se salir les mains .. – berak

Questions connexes