Перейти к содержимому
Compvision.ru

Crazy Sage

Пользователи
  • Количество публикаций

    1
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем Crazy Sage


  1. Пытаюсь калибровать камеру на предмет дисторсии по вот этому мануалу
    https://docs.opencv.org/4.3.0/d4/d94/tutorial_camera_calibration.html

    Когда использовал шахматный эталон - всё было ок, пока он был целиком в кадре, но висло намертво, когда часть эталона оказывалась вне кадра, пытаюсь сделать с кругами, пишут вроде что алгоритм более устойчивый, но он просто не находит цель, если не уменьшать размер изображения (примерно до 1024*768). Шаблон генерил с помощью скриптов OpenCV, пытался и симметричный и асимметричный использовать. Можно ли что-то сделать, чтобы нормально находить эталон на большом кадре? Или надо сильно уменьшать изображение, находить цель, потом брать базовое изображение, умножать все найденные координаты на коэффициент, с которым уменьшали изображение и запускать findCornersSubPix?

    Асимметричный эталон использовал вот этот acircles_pattern.png

    Код вот такой:

    cv::Size boardSize( 4, 11  );
    cv::Mat image = cv::imdecode( cv::Mat( 1, data->size(), CV_8UC1, data->data() ), cv::IMREAD_COLOR );
    std::vector< cv::Point2f > pointBuf;
    bool found;
    // int chessBoardFlags = cv::CALIB_CB_ADAPTIVE_THRESH | cv::CALIB_CB_NORMALIZE_IMAGE | cv::CALIB_CB_FAST_CHECK;
    qDebug()«"Looking for corners";
    // found = findChessboardCorners( image, boardSize, pointBuf, chessBoardFlags);
    
    //found = findCirclesGrid( image, boardSize, pointBuf );
    found = findCirclesGrid( image, boardSize, pointBuf, cv::CALIB_CB_ASYMMETRIC_GRID);

     

×