C++ opencv 编译错误 - Windows7 64-bit using Eclipse CDT

Posted

技术标签:

【中文标题】C++ opencv 编译错误 - Windows7 64-bit using Eclipse CDT【英文标题】:C++ opencv compilation error - Windows7 64-bit using Eclipse CDT 【发布时间】:2011-11-25 16:05:47 【问题描述】:

尝试编译这个示例项目以熟悉 OpenCV:

#include <cv.h>
#include <highgui.h>

using namespace cv;

int main(int argc, char** argv)

    Mat image = imread(argv[1], 1);
    if (argc != 2 || !image.data) 
         printf("No image data \n");
         return -1;
    

    namedWindow("Display Image", CV_WINDOW_AUTOSIZE);
    imshow("Display Image", image);

    waitKey(0);

    return 0;
 

我收到以下编译错误:

Description Resource    Path    Location    Type
Field 'data' could not be resolved  imageloader.cpp ‪/Session4‬ line 8  Semantic Error
Invalid arguments '
Candidates are:
void imshow(const std::basic_string<char,std::char_traits<char>,std::allocator<char>> &, const ? &)
void imshow(const ? &, ?)
'   imageloader.cpp ‪/Session4‬ line 14 Semantic Error

为什么我不能访问 Mat 对象中的字段?不仅是数据字段,而是所有字段。我使用 c-make 和 MinGW 构建了 opencv 库 + 我在项目属性中包含了相关的头文件和 lib 路径。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

Mat中有一个具体的方法可以测试数据是否加载成功:

//如果矩阵数据为NULL,则返回true

bool empty() 常量;

因此,在您的代码中,将 if 语句更改为:

if (argc != 2 || image.empty()) 

【讨论】:

感谢您的快速回答,但项目仍未编译。现在错误是:无法解决方法“空”。似乎我无法访问 Mat 对象中的任何字段/方法,但是如果程序开始时的其他代码行编译得很好,那怎么可能呢?再次感谢.. 您使用的是什么 opencv 版本,您所包含的路径是什么?如需更详细的installation procedure check our guide for VStudio.。我敢打赌你缺少一些包含。 opencv 版本 2.3.1,我添加了在 make 和 make-install 操作之后生成的 include 和 lib 文件夹,我在 eclipse 的项目属性的“库”部分中添加了所有库.当我打开项目层次结构时,我可以看到所有的 opencv 包含文件并且可以访问它们。当 opencvbuild 是 cmake 生成的文件夹时,路径是 opencvbuild\install\include 和 opencvbuild\install\lib。再次感谢.. OpenCV 2.3.1 superpack for Windows 带来了 2 个包含文件夹。一个用于 C 接口,另一个用于 OpenCV 的 C++ 接口。在我的项目中,我总是添加两个文件夹:C:\OpenCV2.3\build\include\opencvC:\OpenCV2.3\build\include\opencv2。看来你是手动编译OpenCV的,你确定你编译的是C++接口吗?

以上是关于C++ opencv 编译错误 - Windows7 64-bit using Eclipse CDT的主要内容,如果未能解决你的问题,请参考以下文章

opencv 3.0 Visual Studio Community 2017 编译链接错误

构建VisualStudio2019+OpenCV4.3的C++ windows编译环境

ubuntu 14.04lts 上的奇怪编译错误 c++ opencv 2.4.10

由于C++类库版本不同导致的OpenCV编译链接错误

Android Studio opencv C++ 在运行时编译链接库错误

opencv 和 c++ 编译版本无需运行库