c++ - 无法编译 OpenCV 代码 (C++)

标签 c++ opencv compilation makefile g++

好吧,所以我一直在寻找这个问题一段时间,但我仍然对如何解决它一无所知。

我正在尝试运行此处提供的示例代码:http://docs.opencv.org/trunk/d1/dc5/tutorial_background_subtraction.html . 我理解代码。我就是无法编译它!问题出在库包含。这是我的 Makefile:

CFLAGS = `pkg-config --cflags opencv`
LIBS = `pkg-config --libs opencv`

% : %.cpp
    g++ $(CFLAGS) $(LIBS) -o $@ $<

这是错误:

prakhar@inS4n3 ~/dev/gender recognition $ make bs
g++ `pkg-config --cflags opencv` `pkg-config --libs opencv` -o bs bs.cpp
bs.cpp:2:33: fatal error: opencv2/imgcodecs.hpp: No such file or directory
 #include "opencv2/imgcodecs.hpp"
                                 ^
compilation terminated.
Makefile:5: recipe for target 'bs' failed
make: *** [bs] Error 1

如果我(暂时)注释掉这个文件,我会得到与 imgproc.hpp 类似的错误。在我的另一个 OpenCV 代码中,完美地编译了以下内容:

#include "opencv2/core/core.hpp"
#include "opencv2/contrib/contrib.hpp"
#include "opencv2/highgui/highgui.hpp"

据我所知,将 opencv2/core.hpp 替换为 opencv2/core/core.hpp 或替换 opencv2/imgproc.hppopencv2/imgproc/imgproc.hpp 完成这项工作。

所以我更深入地查看,这是我的 opencv2 文件夹:

prakhar@inS4n3 /usr/include/opencv2 $ ll
total 84
drwxr-xr-x 2 root root 4096 Nov 14 19:42 calib3d
drwxr-xr-x 2 root root 4096 Nov 14 19:42 contrib
drwxr-xr-x 2 root root 4096 Nov 14 19:42 core
drwxr-xr-x 2 root root 4096 Nov 14 19:42 features2d
drwxr-xr-x 2 root root 4096 Nov 14 19:42 flann
drwxr-xr-x 3 root root 4096 Nov 14 19:42 gpu
drwxr-xr-x 2 root root 4096 Nov 14 19:42 highgui
drwxr-xr-x 2 root root 4096 Nov 14 19:42 imgproc
drwxr-xr-x 2 root root 4096 Nov 14 19:42 legacy
drwxr-xr-x 2 root root 4096 Nov 14 19:42 ml
drwxr-xr-x 2 root root 4096 Nov 14 19:42 nonfree
drwxr-xr-x 2 root root 4096 Nov 14 19:42 objdetect
drwxr-xr-x 2 root root 4096 Nov 14 19:42 ocl
-rw-r--r-- 1 root root 2751 Oct  1  2014 opencv.hpp
-rw-r--r-- 1 root root  672 Nov 12 00:02 opencv_modules.hpp
drwxr-xr-x 2 root root 4096 Nov 14 19:42 photo
drwxr-xr-x 3 root root 4096 Nov 14 19:42 stitching
drwxr-xr-x 2 root root 4096 Nov 14 19:42 superres
drwxr-xr-x 2 root root 4096 Nov 14 19:42 ts
drwxr-xr-x 2 root root 4096 Nov 14 19:42 video
drwxr-xr-x 2 root root 4096 Nov 14 19:42 videostab

谁能告诉我为什么会这样,我如何获得 imgcodecs.hppvideoio.hpp 模块? 我在 Arch Linux 上使用 OpenCV 2.4.10-2

最佳答案

好的,在@Micka 的帮助下,我终于意识到该文档适用于 OpenCV 3.0 beta,而不是 2.4.10。因此,在 this 中进行更改解决问题。

但是,我只是安装了 3.0 beta,并且运行良好。

Here是转换指南,对我来说很难找到(仍然不知道为什么!)。

关于c++ - 无法编译 OpenCV 代码 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30199086/

相关文章:

c++ - 在控制结构中定义变量

c++ - .dll header 中的全局

c++ - 当程序变得无响应时如何确定程序在做什么?

c++ - 使用依赖项 : how to get target dependencies on host? 交叉编译

c++ - OpenCV - 不能画长线

compilation - 谁能帮我在windows下编译ffmpeg?

c++ - WinAPI GetWindowText作为字符串

opencv - 密码本背景减法-一切都爆炸成白色

c++ - Ubuntu 12.10 - 编译 C++ 程序时找不到 -ltcl

ios - 尝试将代码加载到我的 ios 设备时出现调试问题