错误:'cv :: fisheye'尚未声明

时间:2015-03-29 15:07:31

标签: c++ opencv camera-calibration

我想为140度鱼眼镜头编写相机校准。 由于opencv的正常校准不适用于这些镜头,我发现在calib3d软件包中似乎有一个cv :: fisheye模块。

但是每当我尝试编译代码时,g ++就会说:

error: ‘cv::fisheye’ has not been declared

问题是opencv 2.4.11的文档包含方法和附加命名空间。

我的c ++文件中包含以下内容:

//OPENCV Stuff
#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/features2d/features2d.hpp"

该函数的调用如下:

double rmsL = cv::fisheye::calibrate(objectPoints, imagePointsLeft, imagesize, cameraMatrices[LEFT], distCoeffs[LEFT], rvecs, tvecs);

我正在使用pkg-config

的包含路径进行编译
OPENCV = `pkg-config opencv --cflags --libs`

事实上,正常的校准工作正常,以及任何其他opencv相关的东西。

有人能帮我解决这个问题吗? 使用鱼眼校准会很安静,因为广泛的fov及其对计算视差图的改进。

干杯hGen

2 个答案:

答案 0 :(得分:1)

您是否使用这些编译选项?

-I/pathto/opencv/include -L/pathto/library lopencv_core

答案 1 :(得分:1)

error: ‘cv::fisheye’ has not been declared是编译错误。不是链接器错误。这意味着,您的编译器无法查找cv::fisheye的定义。

要么尝试给出明确的路径。

#include "path/to/opencv2/.....h"

-I开关中提供包含路径。

g++ -I<path to opencv2> *.cpp -l <path to opencv2 lib> -o <target-name>