我是C++和OpenCV的新手,我被困在这个问题上了。我使用的是VS代码版本1.68.1,当我试图运行一个main.cpp文件时,我总是得到以下错误:
main.cpp:2:10: fatal error: opencv2/opencv.hpp: No such file or directory
2 | #include "opencv2/opencv.hpp"
| ^~~~~~~~~~~~~~~~~~~~
这是main.cpp代码:
#include <stdio.h>
#include "opencv2/opencv.hpp"
using namespace cv;
int main(int argc, char** argv )
{
Mat image;
image = imread("lenna.jpg");
if ( !image.data )
{
printf("No image data \n");
return -1;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey(0);
return 0;
}
我的CMakelists.txt文件:
cmake_minimum_required(VERSION 3.0.0)
project(opencvTest)
include(CTest)
enable_testing()
set("OpenCV_DIR" "C:\\opencv4")
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable(opencvTest main.cpp)
target_link_libraries(opencvTest ${OpenCV_LIBS} )
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)
tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "g++.exe build active file",
"command": "C:\\msys64\\mingw64\\bin\\g++.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-ID","C:\\opencv4\\install\\include",
"-LD","C:\\opencv4\\install\\x64\\mingw\\bin",
"-llibopencv_calib3d411",
"-llibopencv_core411",
"-llibopencv_dnn411",
"-llibopencv_features2d411",
"-llibopencv_flann411",
"-llibopencv_highgui411",
"-llibopencv_imgcodecs411",
"-llibopencv_imgproc411",
"-llibopencv_ml411",
"-llibopencv_objdetect411",
"-llibopencv_photo411",
"-llibopencv_stitching411",
"-llibopencv_video411",
"-llibopencv_videoio411"
],
"options": {
"cwd": "C:\\msys64\\mingw64\\bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "compiler: C:/msys64/mingw64/bin/gcc.exe"
}
]
}
launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "g++.exe build active file"
}
]
}
c_cpp_properties.json:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"C:\\opencv4\\install\\include",
"C:\\opencv4\\install\\x64\\mingw\\lib"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "C:/msys64/mingw64/bin/g++.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64",
"configurationProvider": "ms-vscode.cmake-tools"
}
],
"version": 4
}
我注意到,由于某种原因,标题的定义指向了这个位置。
正在运行的路径,但是我所有的头文件都在opencv4位置。我不知道该怎么做,我花了过去几个小时试图找到解决办法。任何帮助都将不胜感激。
发布于 2022-07-31 20:10:27
对于任何有这个问题的人,这就是我开始使用OpenCV时所做的事情。
我转而使用而不是VS代码来构建Open项目。您可以从以下链接下载:https://visualstudio.microsoft.com/vs/community/
安装时,必须确保选择安装"Visual C++ build tools“选项。
您还需要将CMake安装在您的计算机上,可以从CMake网站下载。
下一步是下载OpenCV的源文件。您需要从它们各自的Github页面下载OpenCV和折叠式。您可以通过单击页面“右上角”的绿色按钮来完成此操作。将这些文件夹解压缩到一个方便的位置并创建一个新文件夹。
接下来,您必须使用CMake生成Visual项目。启动CMake来打开GUI。在顶部,将有两个文本框,一个用于源文件夹,另一个用于构建二进制文件的位置。源文件夹是您以前提取的opencv_master文件夹,而build文件夹是新创建的build文件夹。完成后,单击。
这将打开另一个对话框,以配置我们要配置的项目。在下拉列表中,选择您的Visual版本。完成后,单击finish并等待配置完成。
一旦这一步完成,您将得到大量的配置选项。在大多数情况下,我们将把这些作为默认值。除非您知道自己在做什么(特别是为了添加新的库),否则我不会更改这些。
也就是说,除了我们确实需要改变的一个选择。在顶部的搜索框中,键入单词路径。这将把显示限制在几个选项上。我们要调整的选项是一个名为OPENCV_EXTRA_MODULES_PATH.的选项我们希望将此值更改为位于前面创建的opencv_cont肋骨-主目录中的模块目录的路径。
输入这个新值后,单击Configure按钮,然后再次等待。这一次这个过程应该要快得多。
如果一切顺利,您应该在日志输出的底部看到一条配置已完成的消息。如果它失败了,并且有任何错误,那么在继续之前,您必须先把这些问题解决掉。
作为最后一步,点击Generate按钮创建Visual项目,我们将使用该项目构建OpenCV。
现在,这是这个过程中最长的部分。查看构建目录,在向下滚动一段时间后,您会发现一个名为OpenCV.sln的文件,这是Visual的解决方案文件。双击它可以在Visual中打开项目。
注意: Visual可能需要一段时间才能完全加载此项目。它有一大堆文件要索引!
现在,我们必须在这里构建这个库的调试和发布版本。首先,确保您的构建配置设置为如下图所示的首次亮相,然后从build菜单中选择Build解决方案,或者点击键盘上的F6。
注意:构建库可能需要一些时间。
当此调试构建完成后,继续并将构建配置更改为发布(与图中相同的位置)并再次构建。
在这两个构建完成之后,将构建配置更改为Debug。在解决方案资源管理器中找到安装条目,右键单击它,然后选择Build。
再次,您将需要为发行版和调试配置执行此步骤。这个构建过程不应该花费与前两个构建过程差不多的时间!
这将在build文件夹中创建大量文件。唯一严格必要的文件夹是安装文件夹。您可以复制此文件夹的内容并将其移动到易于访问的位置并粘贴内容。
现在您有了OpenCV库。
要开始创建项目,您可以在以下链接查看视频:https://www.youtube.com/watch?v=p-6rG6Zgu4U
总之,打开Visual并确保为.lib文件指定包含目录、库目录和输入目录。
发布于 2022-06-30 06:54:09
由于我们没有那么多的信息,我只想解释一下CMake中包含目录是如何工作的。
当您执行#include "opencv2/opencv.hpp"
时,您告诉它查看提供的include_directories()
路径../include/opencv2/opencv.hpp
,其中../
是前面的目录。因此,问题可能是目录路径、OpenCV安装不当,或者是因为在windows的包注册表中查找包导致了不同的包含路径。这样,您就可以尝试在
include_directories( ${OpenCV_INCLUDE_DIRS} )
包含文件opencv.hpp
的名为"include“的文件夹的完整路径。请注意,这样做可能需要指定OpenCV库的库文件路径,其中包括文件名和扩展名。
target_link_libraries("C:/Example/libs/example.lib")
示例CMakeLists.txt文件:
cmake_minimum_required(VERSION 3.10)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
project("EXAMPLE" VERSION 0.1 LANGUAGES CXX)
message("CMake is running for windows version")
file(GLOB_RECURSE SRC_FILES src/*.cpp) #the /* made it a comment lol*/
add_executable("${PROJECT_NAME}" ${SRC_FILES})
target_include_directories("${PROJECT_NAME}" PUBLIC
"${CMAKE_SOURCE_DIR}/Dependencies/Example/include"
"${CMAKE_SOURCE_DIR}/Dependencies/SDL2-2.0.22/include"
"${CMAKE_SOURCE_DIR}/Dependencies/SDL2_image-2.0.5/include"
)
target_link_libraries("${PROJECT_NAME}"
"${CMAKE_SOURCE_DIR}/Dependencies/SDL2-2.0.22/lib/x64/SDL2.lib"
"${CMAKE_SOURCE_DIR}/Dependencies/SDL2-2.0.22/lib/x64/SDL2main.lib"
"${CMAKE_SOURCE_DIR}/Dependencies/SDL2-2.0.22/lib/x64/SDL2test.lib"
"${CMAKE_SOURCE_DIR}/Dependencies/SDL2_image-2.0.5/lib/x64/SDL2_image.lib"
)
https://stackoverflow.com/questions/72808969
复制相似问题