Tlya 1 Жалоба Опубликовано May 15, 2018 Народ подскажите, с чем это может быть связано? А иногда такое выскакивает. Может кто через такое проходил? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано May 15, 2018 Судя по всему, у тебя в CMake должны быть установлены опции типа BUILD_PROTOBUF=ON. Это означает, что будет использоваться версия protobuf, которая поставляется вместе с OpenCV и совместима с ним. Во втором случае на картинке не видна сама ошибка, поэтому не понятно в чём дело. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Tlya 1 Жалоба Опубликовано May 16, 2018 а как ее вывести, ошибку? и почему protobuf надо использовать, если раньше не надо было галочку ставить? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано May 16, 2018 Направь логи в файл и там посмотри. Или какой-нибудь IDE собери. На счёт protobuf ответ простой - всё меняется, оазвивается opencv_dnn, которая его и требует (ещё из contrib). Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Tlya 1 Жалоба Опубликовано May 16, 2018 Вобщем собрал 3.4.0 По инструкции https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows с обязательным соблюдением следующего: If you have the following error : ... windres.exe: unknown option -- W ... try this : in cmake uncheck ENABLE_PRECOMPILED_HEADERS If, in the file opencv/sources/modules/videoio/src/cap_dshow.cpp, you have the following error : 'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA' was not declared in this scope ... try this :put the following line: #define NO_DSHOW_STRSAFE, before the line : #include "DShow.h" А с 3.4.1 какие-то траблы, что ни делал Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
timurhamitov 1 Жалоба Опубликовано December 13, 2018 Коллеги, приходиться переходить на версию 3.4 или 4, чтобы использовать tracking Mosse. Делал все по статье https://www.learnopencv.com/install-opencv-4-on-ubuntu-18-04/ , но при компиляции с помощью cmake у меня выходит ошибка, что не может найти tracking.hpp, кто встречался с такой проблемой? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано December 13, 2018 OPENCV_EXTRA_MODULES_PATH правильно указан? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
timurhamitov 1 Жалоба Опубликовано December 13, 2018 3 минуты назад, Nuzhny сказал: OPENCV_EXTRA_MODULES_PATH правильно указан? Это в CMAKELIST Должно быть? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано December 13, 2018 Попробуй запустить cmake-gui, там это найти наглядней. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
fotomer 16 Жалоба Опубликовано December 14, 2018 В 16.05.2018 at 15:51, Nuzhny сказал: На счёт protobuf ответ простой - всё меняется, оазвивается opencv_dnn, которая его и требует (ещё из contrib). Не в курсе, про 4.0 написано Our parallel_for can now use the pool of std::threads as the backend. Я собрал традиционно с флагом WITH_OPENMP, как и на предыдущих 3.х. И далее с 4.0 распознавалка Aruco падает где-то внутри либы на потоках. Если собрать без этого флага, то все работает нормально. В 15.05.2018 at 23:37, Tlya сказал: Народ подскажите, с чем это может быть связано? Судя по картинке Винда, как писали, там с Cmake-Gui все отлично собирается. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано December 14, 2018 1 hour ago, fotomer said: Не в курсе, про 4.0 написано Our parallel_for can now use the pool of std::threads as the backend. Я собрал традиционно с флагом WITH_OPENMP, как и на предыдущих 3.х. И далее с 4.0 распознавалка Aruco падает где-то внутри либы на потоках. Если собрать без этого флага, то все работает нормально. А пример можешь выслать? Я тоже использую openmp, но она в Windows не развивается (поддерживает стандарт 2.0 при существующем 5.0). Поэтому разработчики OpenCV традиционно делают упор на TBB. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
fotomer 16 Жалоба Опубликовано December 14, 2018 30 минут назад, Nuzhny сказал: А пример можешь выслать? Я тоже использую openmp, но она в Windows не развивается (поддерживает стандарт 2.0 при существующем 5.0). Эта функция aruco::detectMarkers с флагом aruco::CORNER_REFINE_APRILTAG. На 3.4.1 все работало с WITH_OPENMP, собрал 4.0 с WITH_OPENMP, падает. Без все работает. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано December 14, 2018 Хм. Это не так просто повторить. можешь подсказать с каким-нибудь стандартным примером из поставки? Какие параметра подавать в тот же example_aruco_detect_markers, например. Я как раз засылал им один PR по поводу openmp для 4.0. Если баг в parallel_for, то хотелось бы его убрать, чтобы в других местах не проявилось. Всё таки я использую OpenCV в критических приложениях. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
fotomer 16 Жалоба Опубликовано December 14, 2018 14 минуты назад, Nuzhny сказал: Хм. Это не так просто повторить. можешь подсказать с каким-нибудь стандартным примером из поставки? Какие параметра подавать в тот же example_aruco_detect_markers, например. Я просто удалил сборку 4.0 с openmp, на SDD мало места. Потом тогда опять соберу и попробую ошибку воспроизвести. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано December 14, 2018 Хорошо, спасибо. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
fotomer 16 Жалоба Опубликовано December 15, 2018 В 14.12.2018 at 13:28, Nuzhny сказал: А пример можешь выслать? Я тоже использую openmp, но она в Windows не развивается (поддерживает стандарт 2.0 при существующем 5.0). Поэтому разработчики OpenCV традиционно делают упор на TBB. int main() { try { float kd[5] = { 0.106, 0, 0, 0, 0 }; float cm[9] = { 5765, 0.0000000000000000e+00, 2592, 0.0000000000000000e+00, 5765, 1728, 0.0000000000000000e+00, 0.0000000000000000e+00, 1.0000000000000000e+00 }; Mat cameraMatrix(3, 3, CV_32F, cm); Mat distK(1, 5, CV_32F, kd); Mat mat; mat = imread("1.jpg"); Ptr<aruco::Dictionary> dictionary{ aruco::getPredefinedDictionary(aruco::DICT_4X4_1000) }; Ptr< aruco::DetectorParameters > detectorParams{ aruco::DetectorParameters::create() }; detectorParams->cornerRefinementMethod = aruco::CORNER_REFINE_SUBPIX; //detectorParams->cornerRefinementMethod = aruco::CORNER_REFINE_APRILTAG; vector<vector<Point2f> > corners1, rejectedCorners1; vector<int> ids1; aruco::detectMarkers(mat, dictionary, corners1, ids1, detectorParams, rejectedCorners1, cameraMatrix, distK); } catch (cv::Exception ex) { cout << ex.what() << endl; } return 0; } Вот простенький код. OpenCV 4.0.0. собранный без флага WITH_OPENMP - все работает, углы aruco корректно определяются. Сборка с флагом WITH_OPENMP, флаг в коде aruco::CORNER_REFINE_SUBPIX работает, но в консольку пишется "User Error 1001: argument to num_threads clause must be positive", это внутри aruco::detectMarkers прилетает из функции _convertToGrey. А с флагом aruco::CORNER_REFINE_APRILTAG выкидывается исключение "OpenCV(4.0.0) c:\opencv\opencv_contrib-master\modules\aruco\src\zarray.hpp:109: error: (-215:Assertion failed) idx >= 0 in function 'cv::aruco::_zarray_get'" На версиях 3.х с WITH_OPENMP все работало нормально. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано December 15, 2018 Только что скачал свежую версию, скомпилировал с WITH_OPENMP и твой пример отработал без ошибок. Возможно, оно проявляется только у тебя или нужна именно твоя картинка. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
fotomer 16 Жалоба Опубликовано December 16, 2018 15 часов назад, Nuzhny сказал: Только что скачал свежую версию, скомпилировал с WITH_OPENMP и твой пример отработал без ошибок. Возможно, оно проявляется только у тебя или нужна именно твоя картинка. Не, с любой картинкой, и падает только с CORNER_REFINE_APRILTAG, остальные работают. Еще cvtColor без помарок работает? А то с флагом WITH_OPENM в консоль это пишется "User Error 1001: argument to num_threads clause must be positive". Как понимаю где-то внутри указывается отрицательное кол-во потоков. Компилятор Visual Studio 2015 x64. Mat mat, mat2; mat = imread("1.jpg"); cvtColor(mat, mat2, COLOR_BGR2GRAY); Upd Сейчас собрал на чистой Win7 с компилятором VS 2014, результат тот же. Upd2 Пересобрал отдельно либу opencv_core сняв для него использование openmp, остальные не трогал. И теперь все нормально работает. O как. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
fotomer 16 Жалоба Опубликовано January 16, 2019 Собрал 4.0.1 с флагом WITH_OPENM , теперь все нормально, ошибок нет. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах