我想为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
答案 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>