C++ 错误:‘;cv::鱼眼’;尚未申报
我想写一个140度鱼眼镜头的相机校准。 由于opencv的正常校准不适用于这些镜头,我发现calib3d包中似乎有一个cv::fisheye模块 但每次我试图编译代码时,g++都会声明:C++ 错误:‘;cv::鱼眼’;尚未申报,c++,opencv,camera-calibration,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
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的include路径进行编译
OPENCV = `pkg-config opencv --cflags --libs`
事实上,正常的校准工作与其他opencv相关工作一样正常
有人能帮我解决这个问题吗?
使用鱼眼校准会非常好,因为它的视场很宽,并且在计算视差图时有所改进
干杯hGen您使用这些编译选项吗
-I/pathto/opencv/include -L/pathto/library lopencv_core
错误:尚未声明“cv::fisheye”
是一个编译错误。不是链接器错误。这意味着,编译器无法查找cv::fisheye
的定义
或者尝试给出显式路径
#包括“path/to/opencv2/…h”
或
在-I
开关中提供包含路径
g++-I*.cpp-l-o
它工作正常吗?禁用opencv新增的破损鱼眼不失真图像测试-cv::鱼眼命名空间“出现”的机制是什么?fisheye.hpp和fisheye.cpp确实有此校准方法,但它们是内部的。它们应该由calib3d提供吗?这就是我读这篇文章的方式:是的,我认为它是calib3d库的一部分。问题是,如果您手工构建库,它就可以使用。否则,通过“apt get”、“brew”或其他软件包管理器,fisheye名称空间根本不可用。我设法使其运行,但仅使用OpenCV 3.0,名称空间中的函数也无法正常工作。当使用任何一种功能时,都会出现SEGFULTS等故障。对于OpenCV 2.4.x,我需要添加#包括“modules/calib3d/src/fisheye.hpp”
。我建议使用绝对路径。