Что использовать в качестве входов в OpenCV калибровать параметры камеры CameraMatrix и distCoeffs? - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь откалибровать камеру, работающую на моем сервере Node.js. Библиотека работает нормально, но у меня проблемы с функциями OpenCV, которые не выдают никаких сообщений об ошибках, если у меня неправильный ввод. Я как бы летаю в темноте.

Но это не относится к делу. Я взял 17 изображений шаблона калибровки шахматной доски и получил код, чтобы обнаружить шаблон на всех изображениях. Все работает отлично, пока я не вызову cv.calibrateCamera (), вероятно, из-за того, что я не знал, что мне следует использовать в качестве необходимых входов для cameraMatrix и distCoeff (4-й и 5-й входные параметры). Тем не менее, я не могу быть на 100% в этом проблема, потому что я не получаю сообщений об ошибках из-за ошибок в функциях cv ...

Я пытался следовать примеру на https://docs.opencv.org/3.1.0/dc/dbb/tutorial_py_calibration.html, но на python в учебнике вы можете использовать None в качестве входных данных для cameraMatrix и distCoeff. Я пытался использовать нуль, но это тоже не сработало.

Любая помощь будет оценена.

const size = new cv.Size(9,6);
  let mat = null;

  let objpt = [];
  for(let i=0;i<9;i++) {
    for(let j=0;j<6;j++) {
      objpt.push(cv.Point(2.5*i,2.5*j,0))
    }
  }

  let objectPoints = [];
  let imagePoints =[];

  for (let i=0; i < 17;i++) {
    mat = cv.imread('./calib/calib'+(i+1)+'.jpg');
    let smallmat = mat.resize(756,1008);
    const corners = smallmat.findChessboardCorners(size);
    if (corners.returnValue) {
      objectPoints = objectPoints.concat(objpt);
      imagePoints = imagePoints.concat(corners.corners);
    }
  }

 // THIS IS WHERE EXECUTION JUST STOPS WITH NO ERROR MESSAGE

  cv.calibrateCamera(
    objectPoints,
    imagePoints,
    new cv.Size(756,1008),
    new cv.Mat(3, 3, cv.CV_32FC1,0),
    [0,0,0,0,0]
  );

1 Ответ

0 голосов
/ 06 июля 2018

В соответствии с тестом параметры должны передаваться следующим образом:

 [_objectPoints, _objectPoints],
 [imagePoints, imagePoints],
 imageSize,
 _cameraMatrix,
 distCoefficients

, где

const _cameraMatrix = new cv.Mat ([[800, 0, 100], [0, 800, 100], [0, 0, 1]], cv.CV_64F);

и

const distCoefficients = [0, 0.5, 1.0, 1.0];

...