Невозможно скомпилировать OpenCV с выводом OpenVino, cpuid.txt не может быть прочитан
Я пытаюсь скомпилировать OpenCV с выводом OpenVino, как описано здесь:
https://github.com/opencv/opencv/wiki/Intel's-Deep-Learning-Inference-Engine-backend
но когда я пытаюсь сгенерировать проект MSVC (2017) в Windows, я получаю эту ошибку:
CMake Error at C:/local/Intel/computer_vision_sdk_2018.5.445/deployment_tools/inference_engine/src/extension/cmake/CPUID.cmake:324 (file):
file STRINGS file "C:/local/opencv-build/cpuid.txt" cannot be read.
Call Stack (most recent call first):
C:/local/Intel/computer_vision_sdk_2018.5.445/deployment_tools/inference_engine/src/extension/cmake/feature_defs.cmake:17 (include)
C:/local/Intel/computer_vision_sdk_2018.5.445/deployment_tools/inference_engine/src/extension/CMakeLists.txt:9 (include)
Используемые инструменты:
- Исходный код OpenCV 4.0.0
- OpenVino 5.0.1
- Visual Studio 2017
- CMake-Gui 3.13
2 ответа
Я также встретил эту ошибку, но я изменил эту строку CPUID.cmake, как показано в следующем:
if(HAVE_CPUID_INFO)
set(_CPUID_INFO "/home/huihui/intel/computer_vision_sdk_2018.4.420/inference_engine/build/cpuid.txt")
Теперь ошибка исправлена.
Я думаю, что вы установили неподходящие версии для некоторых инструментов. Пожалуйста, попробуйте использовать CMake 3.4 или выше, который необходим для сборки дистрибутива Intel® OpenVINO.
Пожалуйста, попробуйте выполнить шаги из " https://software.intel.com/en-us/articles/OpenVINO-Install-Windows" для установки и убедитесь, что вы можете скомпилировать OpenCV с выводом OpenVino.
На OpenVino есть сообщение на форуме, которое указывает на какое-то хакерское решение этой проблемы. Вот предлагаемое решение:
В ...\Intel\computer_vision_sdk_2018.5.456\deployment_tools\inference_engine\src\extension\cmake\CPUID.cmake
(при условии, что вы следовали установке по умолчанию OpenVino Toolkit, в противном случае вам сначала нужно будет найти этот файл в том месте, где вы его установили), попробуйте внести следующие изменения в строку 251:
// std::ofstream fo(\"cpuid.txt\"); old line
std::ofstream fo(\"${CMAKE_BINARY_DIR}/cpuid.txt\");
* Убедитесь, что имя переменной fo
согласуется с кодом, следующим за ним.
Это потенциально может избежать появления несовместимых путей, поскольку строка 319 этого же файла получает текстовый файл, подобный этому:
set(_CPUID_INFO "${CMAKE_BINARY_DIR}/cpuid.txt")
Из трассировки стека, похоже, ваш ${CMAKE_BINARY_DIR}
переменная установлена в C:/local/opencv-build
так что вы должны ожидать cpuid.txt
быть сгенерированным там.