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);
Ama bence bu bir çözüm. Yine de, bunun “findChessboardCorners” ile ilgisi olmadığını anlıyorum. Neden bir cevap olarak kalmıyorsunuz? @IwillnotexistIdonotexist – Zen
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. –