我想写一个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相关的工作一样。
有没有人能帮我解决这个问题?这将是非常好的使用鱼眼校准,因为宽视场和它的改进计算视差图。
干杯hGen
发布于 2015-04-26 14:17:10
您是否使用这些编译选项?
-I/pathto/opencv/include -L/pathto/library lopencv_core发布于 2015-04-28 19:47:07
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>
https://stackoverflow.com/questions/29330771
复制相似问题