2016-03-25 15 views
1

findChessboardCorners'u calibrateCamera ile kullanmak istiyorum, ancak calibrateCamera kullanırken hatalarla karşılaşabilirsiniz. Çıkış çok yararlı değil.Nasıl kullanılırChessboardCorners ve calibrateCamera nasıl kullanılır?

OpenCV Error: Assertion failed (i < 0) in cv::_OutputArray::create

static const Size patterSize(8, 6); 
auto image = imread("x.jpg", IMREAD_GRAYSCALE); 

Mat corners; 
auto found = findChessboardCorners(image, patterSize, corners); 

//constructing objectPoints 
vector<vector<Vec3f>> objectPoints; 
objectPoints.push_back(vector<Vec3f>()); 
for (int row = 0; row < patterSize.height; row++) { 
    for (int col = 0; col < patterSize.width; col++) { 
     objectPoints.at(0).push_back(Vec3f(row, col, 0)); 
    } 
} 

vector<vector<Vec2f>> imagePoints; 
imagePoints.push_back(vector<Vec2f>()); 
for (int row = 0; row < patterSize.height; row++) { 
    for (int col = 0; col < patterSize.width; col++) { 
     int num = row*patterSize.width + col; 
     imagePoints.at(0).push_back(corners.at<Vec2f>(num, 0)); 
    } 
} 

Mat cameraMatrix, distMatrix, rvecs, tvecs; 

calibrateCamera(objectPoints, imagePoints, Size(image.size().width, image.size().height), cameraMatrix, distMatrix, rvecs, tvecs); 

cevap

1

rvecs, tvecs ait Bildirgesi vector<Mat> yerine Mat ve sonra her şey yoluna girecek olmalıdır. Daha fazla bilgi için, 3calibration.cpp adresini ziyaret edin.

+0

Ama bence bu bir çözüm. Yine de, bunun “findChessboardCorners” ile ilgisi olmadığını anlıyorum. Neden bir cevap olarak kalmıyorsunuz? @IwillnotexistIdonotexist – Zen

+0

Oh, bu senin sorunun mu çözüldü? O zaman yorumumu patlatabilirim. Kendi cevabınızı da kabul edildi olarak işaretlerim, böylece bunun bir çözüm olduğu açıktır. –

İlgili konular