2016-09-29 17 views
-3

を与える私のコードfindChessboardCornersは、ここで予想外の結果に

#include <opencv/cv.h> 
#include <opencv/highgui.h> 
#include<opencv2/opencv.hpp> 

#include<iostream> 
//#include<vector> 

using namespace cv; 
using namespace std; 

int main() 
{ 
    VideoCapture cap = VideoCapture(0); 
    int successes = 0; 

    int numBoards = 0; 
    int numCornersHor = 6; 
    int numCornersVer = 4; 

    int numSquares = (numCornersHor - 1) * (numCornersVer - 1); 
    Size board_sz = Size(numCornersHor, numCornersVer); 



    vector<Point2f> corners; 


    for (;;) 
    { 
     Mat img; 
     cap >> img; 
     Mat gray; 
     cvtColor(img, gray, CV_RGB2GRAY); 
     if (img.empty()) break; // end of video stream 
     imshow("this is you, smile! :)", gray); 
     if (waitKey(1) == 27) break; // stop capturing by pressing ESC 


    bool found = findChessboardCorners(gray, board_sz, corners, CALIB_CB_ADAPTIVE_THRESH); 
    if (found == 1) 
    { 
     cout << corners.size()<<"\n"; 

     cornerSubPix(gray, corners, Size(11, 11), Size(-1, -1), TermCriteria(CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 30, 0.1)); 
     drawChessboardCorners(gray, board_sz, corners, found); 
    } 

    } 

    cap.release(); 
     waitKey(); 
     return 0; 
    } 

コードは、ウェブカメラからフレームをキャプチャしているです。チェス盤が検出された場合は、見つかったコーナーの総数が印刷されます(私はチュートリアルコードと同じ出力を得ていないため、私はそれを行いました。

出力:

+0

出力が11時間のコーナーが検出されていますが、この大きな値が来ていることはわかりません。 – dhc

+1

キャプソンロックは何ですか? – slawekwin

+0

ごめんなさい! @slawekwin – dhc

答えて

1

まずあなたには、いくつかのグラウンドルールに従う必要があります。

  1. 緩いペーパーを使用しないでください - >印刷/平板上にチェス盤を接着
  2. を印刷しますそれは検出を向上させるために大きな白い境界線を持っています
  3. チェス盤は完全にイメージの内側になければなりません(あなたのexampl E)
  4. があなたのチェス盤

第二の位置が異なる複数の画像を取り、あなたの代わりに8ビットのカラー画像を使用して、8ビットのグレースケール画像にあなたの輪郭を描くカント。 そして、私が正しく数えれば(内角を数える)あなたのチェス盤のサイズは(8,6)です。

0

私は同じ問題を抱えています。cornersの数は巨大です。いくつかの検索の後、私はこの解決策を見つけたHere。 何らかの理由でfindChessboardCorners関数がcornersベクトルをサイズ変更します。私は上記の解決策を試しましたが、それは出力cornersでうまくいきましたが、私はまだcornerSubPix関数でアサーションに失敗しました。

+1

ありがとう、しかし私は正しい数の正方形(非常にばかげたミス)を挿入することによって問題を解決し、そのcornerSubPix関数も完全に私のために正常に動作しています! – dhc

関連する問題