如何解决错误:imread不是cv的成员?

10

我使用OpenCV 3.0和Ubuntu 14.04。我正在尝试在Ubuntu上使用OpenCV编译一些代码。但是我遇到了错误:

"error: 'imread' is not a member of 'cv'"

根据我的先前搜索知识,我尝试通过添加"highgui.h"来编译。

我使用的命令是:

$g++ main.cpp HOG.cpp HOGFeaturesOfBlock.cpp -I/usr/local/include/opencv -lml -lcvaux -highgui -lcv -lcxcore -o featureExtractor

在终端上进行编译。

有什么建议吗?


2
请发布一个 [MCVE],这样我们就可以看到您所做的事情 - 否则很难回答。 - Alan Stokes
1
你没有正确设置OpenCV。请参考这里了解需要包含和链接的内容(如果是在Visual Studio项目中,只需将它们添加到gcc命令行即可)。 - Miki
好的,我正在尝试从main.cpp中的深度图像中提取特征。我还有一个readData.cpp,在main.cpp中调用它,在其中使用了imread。当我尝试编译时,我得到了readData.cpp的错误:“'imread'不是'cv'的成员。” - CanCam
看看这里,@berriel 做了一个不错的教程。http://rodrigoberriel.com/2014/10/installing-opencv-3-0-0-on-ubuntu-14-04/ - Miki
只需添加此头文件 #include "opencv2/highgui/highgui.hpp" - Sagar Patel
显示剩余3条评论
4个回答

8
以下命令应该有效。如果无法正常工作,则应检查是否正确设置了包含/库文件。
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\core\core.hpp>
#include <opencv\cv.hpp>

using namespace cv;

Mat image = imread(filename, CV_LOAD_IMAGE_COLOR);

3
  1. 你不需要使用 #include <opencv\cv.hpp>
  2. 你可以直接使用 #include <opencv2/opencv.hpp>
  3. 没有 main 这个函数,这段代码是无法运行的。
  4. Opencv 3.0 中该参数现在被称为 IMREAD_COLOR
- Miki
我已经将这些头文件包含在我的代码中,但是这次我遇到了另一个错误:/usr/bin/ld 找不到 -lml,其他库也有同样的错误。 - CanCam

7
#include <opencv2/imgcodecs.hpp> 

解决了包含imread函数的问题。

0

我发现编译命令必须非常具体(除了在代码中添加using namespace cv;之外),源文件必须直接跟在g++后面,如下所示:

g++ test.cpp -fpermissive $(pkg-config --cflags --libs opencv) -o testbin

如果你使用的是opencv4,那么将opencv替换为opencv4


-1

我以前也有同样的问题。只需添加#include "imgcodec.hpp",希望这可以帮助你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接