首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何链接覆盆子上OpenCV的正确目录?

如何链接覆盆子上OpenCV的正确目录?
EN

Stack Overflow用户
提问于 2020-07-16 09:17:32
回答 1查看 465关注 0票数 1

我按照这个usr/local/include/opencv4/opencv2安装了Raspberry的openCV,但是文件转到了目录:openCV而不是usr/local/include/opencv2

现在编译失败了,即使我使用#include

EN

回答 1

Stack Overflow用户

发布于 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这样的单个标题。请看下面的代码片段。

代码语言:javascript
复制
#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;
}

在编译过程中,您只需给出一次位置。这是代码::块项目文件的一部分。使用的机制是明确的,只需给您的中心位置一次。

此外,通过链接整个包,您不必将单个对象文件链接到其中令人沮丧的相互依赖关系。

代码语言:javascript
复制
    <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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62931415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档