我在OpenCvSharp
解决方案中使用C#
,并且我想使用Cv2.CalibrateCamera
方法来校准摄像机。要使用此功能,我需要创建一些类型为OpenCvSharp.InputOutputArray
的对象。但是,似乎OpenCvSharp.InputOutputArray
类没有构造函数。我也尝试了InputOutputArray.Create()
方法,但是它返回了OutputArray
对象。如何创建此类的实例?
最佳答案
InputOutputArray
的CalibrateCamera
参数是输出值cameraMatrix
和distCoeffs
。您可以为这些参数使用空的初始化Mat
。 OpenCV将调整它们的大小并用返回值填充它们。本示例显示了语法。 (当然,您需要在调用image
之前用实际数据填充objectPoints
,imagePoints
和CalibrateCamera
。)
此示例将List<Mat>
用于objectPoints
和imagePoints
,但它们可以是实现IEnumerable
的任何集合类型(例如Mat[]
)。
Mat image;
List<Mat> objectPoints; // input to CalibrateCamera
List<Mat> imagePoints; // input to CalibrateCamera
Mat cameraMatrix = new Mat(); // output from CalibrateCamera
Mat distCoeffs = new Mat(); // output from CalibrateCamera
Mat[] rvecs; // output from CalibrateCamera
Mat[] tvecs; // output from CalibrateCamera
CalibrationFlags flags = CalibrationFlags.FixAspectRatio;
//Populate image, objectPoints, and imagePoints with real data before calling CalibrateCamera
Cv2.CalibrateCamera(objectPoints, imagePoints, image.Size(), cameraMatrix, distCoeffs, out rvecs, out tvecs, flags);
关于opencv - 如何在OpenCvSharp中从InputOutputArray创建对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58918221/