Маркеры OpenCV Aruco не распознаются на промышленных камерах

Я работаю над обнаружением маркеров ARUCO на промышленных камерах Automation Technology C2, которые предназначены для обнаружения лазерных искажений в сканере триангуляции, но они также могут захватывать изображения.
Моя проблема в том, что одни и те же маркеры обнаруживаются независимо от камеры, которую я использую, кроме той, которую я упоминал ранее.
Минимальный рабочий пример моего кода ниже:

#include <opencv2/highgui.hpp>
#include <opencv2/aruco/charuco.hpp>

using namespace std;
using namespace cv;

int main(int argc, char *argv[]) {

int squaresX = 10;
int squaresY = 7;
float squareLength = 28;
float markerLength = 19;
int dictionaryId = 6;
bool showRejected = true;
bool refindStrategy = true;

Ptr<aruco::DetectorParameters> detectorParams = aruco::DetectorParameters::create();

Ptr<aruco::Dictionary> dictionary =
aruco::getPredefinedDictionary(aruco::PREDEFINED_DICTIONARY_NAME(dictionaryId));

// create charuco board object
Ptr<aruco::CharucoBoard> charucoboard =
aruco::CharucoBoard::create(squaresX, squaresY, squareLength, markerLength, dictionary);
Ptr<aruco::Board> board = charucoboard.staticCast<aruco::Board>();

Mat image = imread("C:\\Users\\Piotrek\\Desktop\\calib\\022.jpg"), imageCopy;

vector< int > markerIds, charucoIds;
vector< vector< Point2f > > markerCorners, rejectedMarkers;
vector< Point2f > charucoCorners;

// detect markers
aruco::detectMarkers(image, dictionary, markerCorners, markerIds, detectorParams,
rejectedMarkers);

image.copyTo(imageCopy);
if (markerIds.size() > 0) {
aruco::drawDetectedMarkers(imageCopy, markerCorners);
}

if (showRejected && rejectedMarkers.size() > 0)
aruco::drawDetectedMarkers(imageCopy, rejectedMarkers, noArray(), Scalar(100, 0, 255));

//display results
imshow("out", imageCopy);
waitKey(0);

return 0;
}

Образец изображения с камеры:

Проблема в том, что маркеры обнаруживаются, но по неизвестной причине они отклоняются:

Отклоненные маркеры

Я использую OpenCV 3.1.

1

Решение

Проблема решена. Я должен перевернуть изображение, и теперь маркеры обнаружены безупречно.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector