Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误:‘;cv::鱼眼’;尚未申报_C++_Opencv_Camera Calibration - Fatal编程技术网

C++ 错误:‘;cv::鱼眼’;尚未申报

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

我想写一个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的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”
。我建议使用绝对路径。