2012-07-17 9 views
6

私は紙の上にある4つの黒い正方形を検出し、それを使って自分のイメージで紙を分離する最良の方法を見つけようとしています。OpenCVを使用して紙に登録マーカーを検出するにはどうすればよいですか?

enter image description here

+0

ようこそStackOverflow。あなたのために働いていないこれまでに何を試みましたか?それが役立つかどうか見るために[この質問](http://stackoverflow.com/q/11424002/62576)を見ましたか?画像を投稿する以外にも、これを自分で解決する努力をしてください。誰かが助けてくれるかもしれません。 –

答えて

6

あなたのイメージにのみ4黒い四角があるので、あなたがしなければならないものをされているようだ:グレー

  • ドゥしきい値に

    1. コンバート画像
    2. 黒い輪郭を探します(OpenCVでこれを行う前に、画像を反転する必要があります。なぜなら、OpenCVは白い輪郭を見つけるからです)
    3. これらの輪郭を巡回して境界線g矩形。 (私のsoultionで、それはA)四角形の面積は、私の溶液中で(一部の定数は、それが長方形の幅/高さが近い1.0です)

      B)だったことも大きい

      た:
    4. チェックを行います[0.9、1.1]範囲)

    コード:

    Mat img = imread("test.jpg"), gray; 
    vector<Vec4i> hierarchy; 
    vector<vector<Point2i> > contours; 
    cvtColor(img, gray, CV_BGR2GRAY); 
    threshold(gray, gray, 100, 255, THRESH_BINARY); 
    bitwise_not(gray, gray); 
    
    findContours(gray, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE); 
    
    for(size_t i=0; i<contours.size(); i++) 
    { 
        Rect rect = boundingRect(contours[i]); 
        double k = (rect.height+0.0)/rect.width; 
        if (0.9<k && k<1.1 && rect.area()>100) 
        { 
         drawContours(img, contours, i, Scalar(0,0,255)); 
        } 
    } 
    
    imshow("result", img); 
    waitKey(); 
    

    結果: enter image description here

    this SO discussionを読んで - あなたは4枚の正方形の紙を検出することを必要はありません。

  • 関連する問題