calibrateCamera opencv函数不起作用
calibrateCamera opencv function does not work
我正在校准我的相机,以执行图像的不失真。为了实现这个目标,我使用了OpenCV库的校准相机功能。所以我使用棋盘来获取真实参考系统中的点来提取点。然后我用mm将这些点转换成真实的参考系。所以最后我得到两个点的向量:棋盘交叉点的向量,和以mm为单位的点的向量。
最后我尝试用calibrateCamera函数校准相机,以获得我的校准参数。标定相机功能定义如下:
calibrateCamera(pointsmm,points,Size(640,480),cameraMatrix,distCoeffs,rvec,tvec );
其中points和poinstmm定义如下:
vector<vector<Point2f>> points;
vector<vector<Point3f>> pointsmm;
和cameraMatrix, distCoeff, rvec, tvec为
vector <float>
.
得到向量点如下:
vector <Point2f> temp;
bool found = findChessboardCorners(md1,Size(nx,ny),temp);
if (found){
//cornerSubPix( md1_g, temp, Size(11,11), Size(-1,-1), TermCriteria( CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 30, 0.1 )); //(peggiora)
points.push_back(temp);
vector<Point3f> temp2;
for( int i = 0; i < ny; i++ )
for( int j = 0; j < nx; j++ )
temp2.push_back(Point3f(float((2*j + i % 2)*squaresize), float(i*squaresize), 220));
pointsmm.push_back(temp2);
}
//nx and ny are the size of the image
cv::drawChessboardCorners(md1, Size(nx,ny), Mat(temp), found);
这个操作对我所有的采集重复,所以点的大小和pointsmm,与采集的数量相对应。而向量的每个元素的大小对应于棋盘的预期大小。
我画的棋盘是ok的,点数对应。另外,我检查了pointsmm和points具有相同的大小。
当我在执行中调用校准函数时,我得到以下错误:在System.Runtime.InteropServices中没有管理异常。在BridgeLibrary.dll中的SEHException'外部组件抛出异常。调试软件,当我调用calibrateCamera函数时抛出异常。
我正在使用CLI/c++来桥接wpf与c++。我认为问题取决于我如何调用calibrateCamera函数。我也试着定义向量rvec和tvec作为向量,但它不起作用。我使用的是OpenCV 2.19版本
你用对了…
在我的项目中,我用同样的方法来校准相机的固定模式。
使用此链接获取更多帮助:
http://docs.opencv.org/doc/tutorials/calib3d/camera_calibration_square_chess/camera_calibration_square_chess.html相关文章:
- C++为什么尽管我调用了void函数,它却不起作用
- 仅包含可移动 std::map 的类的移动构造函数不起作用
- 通过构造函数创建一些值并尝试添加到文档中使用 rapidjson 不起作用
- 为什么我的数组双精度函数不起作用?
- 使用 va_arg 传递给函数va_list不起作用
- Windows.h 输入在函数之外不起作用
- 类和构造函数中的函数根本不起作用,并且不返回任何错误
- 类中的虚拟布尔函数参数不起作用
- getline 函数似乎在 C++ 中不起作用
- 将新放置与 std::函数一起使用不起作用
- binary_search() 函数在我的函数体中不起作用
- 为什么读取函数在 sha1 c++ 实现中不起作用?
- 在函数中声明的 ifStream 对象在发布模式下不起作用
- 指针变量在 cout 函数中不起作用
- std::函数不起作用,但普通的旧函数指针可以 - 为什么?
- C++ 函数,用于查找数组中四个最小最大元素的总和不起作用
- 为什么必须使用'*p=a',而使用'p=&a'在构造函数中不起作用
- C++ Arduino - 随机函数不起作用
- QObject::连接不起作用 - 使用函数语法找不到信号
- 函数在类中不起作用-函数调用缺少参数列表