MinGW C++ 编译器无法在系统路径中找到 OpenCV
MinGW C++ compiler cant find OpenCV in the system path
所以当我尝试使用 MinGW 从 .cpp 编译一个小的 c++ 文件时,我收到一条错误消息,指出“致命错误:opencv2\core\mat.hpp:没有这样的文件或目录”。它以一种或另一种形式出现在 Sublime Text 3、Atom 和带有“gcc myfile.cpp”的命令行中。我应该注意到我在 Windows 10。这是代码:
#include <iostream>
#include <opencv2\core\mat.hpp>
#include <opencv2\core.hpp>
#include <opencv2\highgui.hpp>
#include <opencv2\core\types.hpp>
#include <opencv2\imgproc.hpp>
int main()
{
std::cout << "Hello World!\n";
cv::Mat img = cv::imread("despair.jpg");
cv::cvtColor(img, img, cv::COLOR_RGBA2GRAY, 1);
cv::imshow("1", img);
cv::waitKey(0);
cv::Mat mask = cv::Mat(img.rows, img.cols, CV_8UC1, cv::Scalar(255));
cv::Rect_ <char> roi = cv::Rect_ <cv::Point>(cv::Point(0, 0), cv::Point(10, 10));
cv::rectangle(mask, roi, cv::Scalar(0), -1);
cv::Scalar colors = cv::mean(img, mask);
}
我做过和尝试过的事情:
- 添加 C:\OpenCV\opencv\build\include\ 到系统路径。
- 正在将 x64/vc15 文件夹中的 bin 和 lib 文件夹添加到系统路径中。
- 通常对系统路径进行混乱和试验,以尝试找到任何可能有效的方法。 (我已经尝试了很多组合,我已经忘记了大部分)
- 将所有内容添加到我的用户特定路径。
- 将 .cpp 文件中的包含目录更改为我需要包含的每个文件的绝对路径(这适用于我需要的确切文件,但当这些文件试图包含其他文件时失败 他们 需要,比如 Mat.hpp 试图包含 Matx.hpp)
- 正在重新安装 MinGW64。
- 正在将 MinGW 安装到不同的文件夹并更新系统路径以反映新位置。
- 更改我正在使用的文本编辑器
- 在文本编辑器之外从命令行编译
现在我的系统路径中的东西:
- C:\OpenCV\opencv\build\x64\vc15\lib
- C:\OpenCV\opencv\build\x64\vc15\bin
- C:\OpenCV\opencv\build\include\
- C:\MinGW\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin
我从一个更大的项目中取出这段代码来测试它发生了什么,此时我已经无计可施,试图找出问题所在。请发送帮助。
添加 -I
包含 opencv 路径的选项和 -L
包含 opencv 库的路径,如下所示:
gcc -IC:\OpenCV\opencv\build\include -LC:\OpenCV\opencv\build\x64\vc15\lib test_opencv.cpp
所以当我尝试使用 MinGW 从 .cpp 编译一个小的 c++ 文件时,我收到一条错误消息,指出“致命错误:opencv2\core\mat.hpp:没有这样的文件或目录”。它以一种或另一种形式出现在 Sublime Text 3、Atom 和带有“gcc myfile.cpp”的命令行中。我应该注意到我在 Windows 10。这是代码:
#include <iostream>
#include <opencv2\core\mat.hpp>
#include <opencv2\core.hpp>
#include <opencv2\highgui.hpp>
#include <opencv2\core\types.hpp>
#include <opencv2\imgproc.hpp>
int main()
{
std::cout << "Hello World!\n";
cv::Mat img = cv::imread("despair.jpg");
cv::cvtColor(img, img, cv::COLOR_RGBA2GRAY, 1);
cv::imshow("1", img);
cv::waitKey(0);
cv::Mat mask = cv::Mat(img.rows, img.cols, CV_8UC1, cv::Scalar(255));
cv::Rect_ <char> roi = cv::Rect_ <cv::Point>(cv::Point(0, 0), cv::Point(10, 10));
cv::rectangle(mask, roi, cv::Scalar(0), -1);
cv::Scalar colors = cv::mean(img, mask);
}
我做过和尝试过的事情:
- 添加 C:\OpenCV\opencv\build\include\ 到系统路径。
- 正在将 x64/vc15 文件夹中的 bin 和 lib 文件夹添加到系统路径中。
- 通常对系统路径进行混乱和试验,以尝试找到任何可能有效的方法。 (我已经尝试了很多组合,我已经忘记了大部分)
- 将所有内容添加到我的用户特定路径。
- 将 .cpp 文件中的包含目录更改为我需要包含的每个文件的绝对路径(这适用于我需要的确切文件,但当这些文件试图包含其他文件时失败 他们 需要,比如 Mat.hpp 试图包含 Matx.hpp)
- 正在重新安装 MinGW64。
- 正在将 MinGW 安装到不同的文件夹并更新系统路径以反映新位置。
- 更改我正在使用的文本编辑器
- 在文本编辑器之外从命令行编译
现在我的系统路径中的东西:
- C:\OpenCV\opencv\build\x64\vc15\lib
- C:\OpenCV\opencv\build\x64\vc15\bin
- C:\OpenCV\opencv\build\include\
- C:\MinGW\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin
我从一个更大的项目中取出这段代码来测试它发生了什么,此时我已经无计可施,试图找出问题所在。请发送帮助。
添加 -I
包含 opencv 路径的选项和 -L
包含 opencv 库的路径,如下所示:
gcc -IC:\OpenCV\opencv\build\include -LC:\OpenCV\opencv\build\x64\vc15\lib test_opencv.cpp