Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CMake在编译使用OpenCV的项目时遇到问题_C++_Opencv_Cmake - Fatal编程技术网

C++ CMake在编译使用OpenCV的项目时遇到问题

C++ CMake在编译使用OpenCV的项目时遇到问题,c++,opencv,cmake,C++,Opencv,Cmake,我使用的是Linux Mint 19.1 Tessa 我按照说明安装OpenCV。现在我已将其安装在目录“/home/dell/opencv”中 我试图通过在终端上运行命令“cmake.”来运行位于“/home/dell/opencv/samples/cpp/example_cmake/”的示例项目,但出现以下错误: CMake Error at CMakeLists.txt:14 (find_package): By not providing "FindOpenCV.cmake" in

我使用的是Linux Mint 19.1 Tessa

我按照说明安装OpenCV。现在我已将其安装在目录“/home/dell/opencv”中

我试图通过在终端上运行命令“cmake.”来运行位于“/home/dell/opencv/samples/cpp/example_cmake/”的示例项目,但出现以下错误:

CMake Error at CMakeLists.txt:14 (find_package):
  By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "OpenCV", but
  CMake did not find one.

  Could not find a package configuration file provided by "OpenCV" with any
  of the following names:

    OpenCVConfig.cmake
    opencv-config.cmake

  Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
  "OpenCV_DIR" to a directory containing one of the above files.  If "OpenCV"
  provides a separate development package or SDK, be sure it has been
  installed.


-- Configuring incomplete, errors occurred!
See also "/home/dell/opencv/samples/cpp/example_cmake/CMakeFiles/CMakeOutput.log".
“CMakeLists.txt”文件包含以下内容:

# cmake needs this line
cmake_minimum_required(VERSION 3.1)

# Enable C++11
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)

# Define project name
project(opencv_example_project)

# Find OpenCV, you may need to set OpenCV_DIR variable
# to the absolute path to the directory containing OpenCVConfig.cmake file
# via the command line or GUI
find_package(OpenCV REQUIRED)

# If the package has been found, several variables will
# be set, you can find the full list with descriptions
# in the OpenCVConfig.cmake file.
# Print some message showing some of them
message(STATUS "OpenCV library status:")
message(STATUS "    config: ${OpenCV_DIR}")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")

# Declare the executable target built from your sources
add_executable(opencv_example example.cpp)

# Link your application with OpenCV libraries
target_link_libraries(opencv_example LINK_PRIVATE ${OpenCV_LIBS})
我在网上搜索了很多,这似乎是一个常见的问题。然而,我仍然没有按照我找到的指令来解决这个问题

我在浏览OpenCV文件夹时注意到的一点是,正如您所看到的,我拥有的版本(我认为是最新的版本)确实不包含任何“OpenCVConfig.cmake”文件。但是,正如您所看到的,我在github上找到的最旧版本的OpenCV有这个文件

那么,可能某些配置被设置为这个最旧的版本,导致了冲突?如何改变这一点,并使其适用于最新版本?我想这一定是个简单的问题,但我还是个新手


提前感谢。

CMake写下了你要做的事情:

将“OpenCV”的安装前缀添加到CMAKE_prefix_路径或集合 “OpenCV_DIR”指向包含上述文件之一的目录

另一个选项-请再次阅读您粘贴的文件
CMakeLists.txt
中的注释

他们说:

您可能需要设置OpenCV_DIR变量 指向包含OpenCVConfig.cmake的目录的绝对路径

另一个问题-在源代码构建中,通过将点传递给cmake来执行。最好为构建文件创建单独的目录

通过这种方式构建,您可以轻松地将构建目录添加到
.gitignore
,而不会用编译的二进制文件污染源代码存储库。此外,如果出现问题,您可以删除该构建目录,然后从头开始。这比逐个处理文件容易得多

所以,您需要像下面这样调用CMake

mkdir build
cd build 
OpenCV_DIR=/home/dell/opencv cmake ..

或者下面的方法也可以

mkdir build
cd build
cmake .. -DOpenCV_DIR=/home/dell/opencv

CMake写下了你该做什么:

将“OpenCV”的安装前缀添加到CMAKE_prefix_路径或集合 “OpenCV_DIR”指向包含上述文件之一的目录

另一个选项-请再次阅读您粘贴的文件
CMakeLists.txt
中的注释

他们说:

您可能需要设置OpenCV_DIR变量 指向包含OpenCVConfig.cmake的目录的绝对路径

另一个问题-在源代码构建中,通过将点传递给cmake来执行。最好为构建文件创建单独的目录

通过这种方式构建,您可以轻松地将构建目录添加到
.gitignore
,而不会用编译的二进制文件污染源代码存储库。此外,如果出现问题,您可以删除该构建目录,然后从头开始。这比逐个处理文件容易得多

所以,您需要像下面这样调用CMake

mkdir build
cd build 
OpenCV_DIR=/home/dell/opencv cmake ..

或者下面的方法也可以

mkdir build
cd build
cmake .. -DOpenCV_DIR=/home/dell/opencv

更新OpenCV搜索目录路径,如下所示

find_package(OpenCV 3.4 REQUIRED PATHS "/usr/local/opencv/" NO_DEFAULT_PATH)

更新OpenCV搜索目录路径,如下所示

find_package(OpenCV 3.4 REQUIRED PATHS "/usr/local/opencv/" NO_DEFAULT_PATH)

谢谢你的回答。但我的问题是,在我安装的OpenCV版本中没有“OpenCVConfig.cmake”文件(我在帖子中指出的那个)。我认为OpenCV的最新版本不包含它。但由于某些原因,在使用CMake编译时需要它。您是否执行了
使安装
OpenCVConfig.cmake
是在安装时生成的。我刚刚通过编写:
git clone克隆了OpenCVhttps://github.com/opencv/opencv.git  git克隆https://github.com/opencv/opencv_contrib.git 
如官方所示。这不是正确的安装方法吗?我该怎么做呢?感谢您的回答。看起来,您只完成了说明中列出的10项(包括可选项)中的第一项。请执行其余操作(配置,
make
makeinstall
)。只有这样你才能编译样本。啊,我是个笨蛋。。。我想你是对的。我会尝试运行程序的其余部分,然后我说是否可以。我认为这是做同一件事的不同方式。谢谢你的回答。但我的问题是,在我安装的OpenCV版本中没有“OpenCVConfig.cmake”文件(我在帖子中指出的那个)。我认为OpenCV的最新版本不包含它。但由于某些原因,在使用CMake编译时需要它。您是否执行了
使安装
OpenCVConfig.cmake
是在安装时生成的。我刚刚通过编写:
git clone克隆了OpenCVhttps://github.com/opencv/opencv.git  git克隆https://github.com/opencv/opencv_contrib.git 
如官方所示。这不是正确的安装方法吗?我该怎么做呢?感谢您的回答。看起来,您只完成了说明中列出的10项(包括可选项)中的第一项。请执行其余操作(配置,
make
makeinstall
)。只有这样你才能编译样本。啊,我是个笨蛋。。。我想你是对的。我会尝试运行程序的其余部分,然后我说是否可以。我认为这是做同一件事的不同方式。