OpenCV выбрасывает необработанное исключение при использовании функции findContours в opencv_core310.dll - PullRequest
1 голос
/ 25 октября 2019

Я пишу функцию, которая находит и возвращает центр любого изображения, данного системе (в основном это круглые объекты).

При запуске метода findContours с использованием OpenCV3.10 функция выдает ошибкув векторном классе. Вот мой код:

cv::Mat image = next_image(cam);
cv::Mat gray; cv::Mat thresh; cv::Mat conv;

cv::Mat canny_output; cv::Mat nImg;
std::vector<std::vector<cv::Point>> contours;
std::vector<cv::Vec4i> hierarchy;
//threshold and contour the image

cv::cvtColor(image, conv, cv::COLOR_GRAY2RGB);

cv::cvtColor(conv, gray, CV_BGR2GRAY);
cv::blur(gray, gray, cv::Size(5, 5));
cv::threshold(gray, thresh, 60, 355, cv::THRESH_BINARY);
cv::findContours(thresh, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);

Visual Studio выбрасывает исключение необработанным, когда оно обращается к findContours (и в частности, в векторный файл, который он использует), и сообщение говорит:

Необработанное исключениев 0x5825AF78 (opencv_core310.dll) в Laser_Tracking.exe: 0xC0000005: Место чтения нарушения доступа 0xDDDDDDD9.

В настоящее время я использую Visual Studios 2019 для запуска OpenCV.

1 Ответ

1 голос
/ 25 октября 2019

Я проверил и нашел вашу проблему. Похоже, это проблема конфигурации OpenCV. Моя среда также VS2019 и OpenCV 3.1.0

В конфигурации компоновщика я добавил opencv_world310.lib и opencv_world310d.lib. То есть я добавил версии библиотеки для отладки и отладки, и я работал в режиме отладки, который может не повлиять на другие функции, но отличается для функции findContours (), поэтому я изменил порядокдве библиотеки, или мы можем удалить одну из библиотек, которая зависит от вашего собственного режима.

Это проблема, остающаяся при настройке Visual Studio. Поскольку не сообщается об ошибке, проблема не найдена. В этом случае нам нужно выработать хорошие привычки конфигурации.

...