Я использую SimpleBlobDetector, конечно, для обнаружения кругов на изображениях, снятых с камеры и подвергшихся цветным и морфологическим фильтрам OpenCV. Я получаю
Исключение, выданное в 0x000 ... (opencv_imgproc249.dll) в .exe: Место чтения нарушения прав доступа 0x000 ...
Я получаю эту ошибку в строке, содержащей: d.detect(canny, keypoints);
Вот пример моего кода:
std::vector<KeyPoint> keypoints;
SimpleBlobDetector d(params);
d.detect(canny, keypoints);
drawKeypoints(im, keypoints, im_with_keypoints, Scalar(0, 255, 0), DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
canny
от использования Canny(input, canny, 10, 30);
Кто-нибудь может объяснить, почему я могу получить эту ошибку?
EDIT:
Я понял, что использую метод обнаружения ключевых точек для версии OpenCV <3. С тех пор я изменил его на: </p>
Ptr<SimpleBlobDetector> d = SimpleBlobDetector::create(params);
std::vector<KeyPoint> keypoints;
d->detect(thresh, keypoints);
drawKeypoints(im, keypoints, im_with_keypoints, Scalar(0, 255, 0), DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
Однако теперь у меня есть ошибка, связанная с params
. Следующая ошибка гласит:
E0312 - не существует подходящего пользовательского преобразования из "cv :: SimpleBlobDetector :: Params" в "const std :: string"
Я скопировал это точно из SimpleBlobDetector Tutorial и, как ни странно, имею эту проблему.