我按照这个usr/local/include/opencv4/opencv2安装了Raspberry的openCV,但是文件转到了目录:openCV而不是usr/local/include/opencv2
现在编译失败了,即使我使用#include
发布于 2020-08-09 09:56:51
这有点让人困惑。在“旧”时代,OpenCV将其目录默认放置在/usr/local/inculde/OpenCV 2目录中。但是,随着自OpenCV 4以来主要版本的更改,当您在同一台机器上有OpenCV 2和4时,会产生许多潜在的冲突。为了克服这个问题,OpenCV现在将标头默认放在opencv4文件夹中。
现在您可以选择您想要的版本(当然,如果您已经安装了这两个版本):
将直接指向“旧”版本2的#include /usr/local/include,或
#include /usr/local/include/opencv4,它指向版本4。
大多数情况下,您不包括像opencv.hpp这样的单个标题。请看下面的代码片段。
#include <stdio.h>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
using namespace cv;
using namespace std;
int main(int argc,char ** argv)
{
VideoCapture cap(0);
if (!cap.isOpened()) {
cerr << "ERROR: Unable to open the camera" << endl;
return 0;
}
Mat frame;
cout << "Start grabbing, press a key on Live window to terminate" << endl;
while(1) {
cap >> frame;
if (frame.empty()) {
cerr << "ERROR: Unable to grab from the camera" << endl;
break;
}
imshow("Live",frame);
int key = cv::waitKey(20);
key = (key==255) ? -1 : key;
if (key>=0) break;
}
cout << "Closing the camera" << endl;
cap.release();
destroyAllWindows();
return 0;
}在编译过程中,您只需给出一次位置。这是代码::块项目文件的一部分。使用的机制是明确的,只需给您的中心位置一次。
此外,通过链接整个包,您不必将单个对象文件链接到其中令人沮丧的相互依赖关系。
<Compiler>
<Add option="-Wall" />
<Add option="-fexceptions" />
<Add directory="/usr/local/include/opencv4" />
</Compiler>
<Linker>
<Add option="`pkg-config --libs --cflags opencv4`" />
</Linker>我已经给出了一些关于如何在OpenCV 4上使用GitHub上的Raspberry Pi的示例(深入学习)。在这里,您将看到如何使用C++ OpenCV。
https://stackoverflow.com/questions/62931415
复制相似问题