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\opencv
和 C:\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