如何用fastdownlown编译OpenCV

2024-09-27 22:23:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从事一项学术研究,在Fast-Downward的基础上实现新的搜索算法,这是一个c++开源,实现了几个Search Algorithms和许多搜索域和问题。还安装了Lab,一个管理编译和运行脚本的Python包。你知道吗

最近我尝试为它的ML算法包含OpenCV库,以便在我的搜索算法中集成这些算法。你知道吗

但是我鼓励在FD项目中包含一些lib时出现一些问题,并且不能用FD编译OpenCV。你知道吗

项目层次结构:

fast_downward
| -- benchmarks
| -- experiments
| -- lab
| -- misc
| -- src
|    | -- preprocess
|    | -- search
|    | -- translate
|    | -- VAL
|    | -- ML

ML目录是我要编译的新子目录。你知道吗

编译尝试:

src/CMakeLists.txt下:

include(ML/CMakeLists.txt)

add_subdirectory(ML)

但是编译失败了。你知道吗

老实说,我从未尝试过编辑CMake文件,我也不知道该怎么做。你知道吗

所以,我的问题是如何在主项目中集成OpenCV包/子文件夹(在名为ML的项目中)?

编辑:

Distributor ID: Ubuntu
Description:    Ubuntu 14.04 LTS
Release:        14.04

Tags: 项目srctxt算法编辑ubuntuopencvml
1条回答
网友
1楼 · 发布于 2024-09-27 22:23:27

您不应该需要include(ML/CMakeLists.txt)add_subdirectory(ML)应该足够在src/CMakeLists.txt内。
现在,我们一般可以有两种情况:

  1. 您在系统范围内安装了OpenCV(例如,通过apt-get等),因此您使用的是OpenCV的系统版本
  2. 在项目中包含OpenCV的源代码。您构建它并使用这个版本的OpenCV。你知道吗

这两起案件需要以略有不同的方式处理。你知道吗

系统范围的OpenCV安装

假设OpenCV安装在系统的某个地方。那么在src/ML/CMakeLists.txt中应该有如下几行:

find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(test ${YOUR_SOURCES} ${YOUR_HEADERS})
target_link_libraries(test ${OpenCV_LIBS})

这是为了产生一个可执行文件,但是如果你想产生一个库,你应该有add_library(...)而不是add_executable(...)。如果您需要OpenCV中的特定组件,您应该向find_package(OpenCV REQUIRED COMPONENTS core imgproc ...)索取,当然也可以查阅OpenCV文档。请注意,您的CMake可能没有FindOpenCV.cmake脚本,因此您可能无法使用find_package(OpenCV)。在这种情况下,你需要从网上抓到一个。还可以参考它的源代码,因为它可能定义了包含includes和库的不同变量,这意味着可能会出现这样的情况,即不使用例如target_link_libraries(test ${OpenCV_LIBS})而应该使用target_link_libraries(test ${OpenCV_LIBRARIES})。你知道吗

您下载的OpenCV源代码,包含在包内/包外

在本例中,我假设您的系统中的某个目录中有OpenCV包/源代码;请记住,在本例中您需要构建OpenCV,apt get将不会为您完成这项工作。在你的src/ML/CMakeLists.txt中,你会有

ExternalProject_Add(my_opencv
   CMAKE_ARGS -D BUILD_SHARED_LIBS=NO ...
   CMAKE_INSTALL_PREFIX=${MY_OPENCV_INSTALLATION_DIR} 
   SOURCE_DIR ${PATH_TO_OPENCV_SRCS} 
)

find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(test ${YOUR_SOURCES} ${YOUR_HEADERS})
target_link_libraries(test ${OpenCV_LIBS})

值得咨询的来源有:
OpenCV intro: cmake
linking opencv libraries included as an external project via cmake
Configuring an c++ OpenCV project with Cmake
Could not find module FindOpenCV.cmake ( Error in configuration process)
CMake and OpenCV 3.0
sample FindOpenCV.cmake

相关问题 更多 >

    热门问题