2013-05-29 81 views
0

我是新來的使用OpenCV,我正在測試它試圖從汽車上抓牌。我被困在如何去做這件事。例如,我將開始與像這樣的圖片:enter image description here用OpenCV轉換圖像

,我想我的最終結果是這樣的:

enter image description here

我知道如何使用adaptivethreshold和東西我在困惑步驟需要從1到2.感謝您的幫助!

+0

你是如何得到這個結果的? –

回答

1

太多硬編碼閾值,但這項工作?

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

豎起大拇指讓你的手髒了。 – berak