@@ -140,7 +140,7 @@ public void CalibrateCameraByMat()
140140
141141 using var objectPoints = Mat < Point3f > . FromArray ( objectPointsArray ) ;
142142 using var imagePoints = Mat < Point2f > . FromArray ( imagePointsArray ) ;
143- using var cameraMatrix = new Mat < double > ( Mat . Eye ( 3 , 3 , MatType . CV_64FC1 ) ) ;
143+ using var cameraMatrix = Mat . EyeMat ( 3 , 3 , MatType . CV_64FC1 ) ;
144144 using var distCoeffs = new Mat < double > ( ) ;
145145 var rms = Cv2 . CalibrateCamera ( [ objectPoints ] , [ imagePoints ] , image . Size ( ) , cameraMatrix ,
146146 distCoeffs , out var rotationVectors , out var translationVectors ,
@@ -165,7 +165,7 @@ public void FishEyeCalibrate()
165165
166166 using var objectPoints = Mat < Point3f > . FromArray ( objectPointsArray ) ;
167167 using var imagePoints = Mat < Point2f > . FromArray ( imagePointsArray ) ;
168- using var cameraMatrix = new Mat < double > ( Mat . Eye ( 3 , 3 , MatType . CV_64FC1 ) ) ;
168+ using var cameraMatrix = Mat . EyeMat ( 3 , 3 , MatType . CV_64FC1 ) ;
169169 using var distCoeffs = new Mat < double > ( ) ;
170170 var rms = Cv2 . FishEye . Calibrate ( [ objectPoints ] , [ imagePoints ] , image . Size ( ) , cameraMatrix ,
171171 distCoeffs , out var rotationVectors , out var translationVectors ) ;
@@ -327,8 +327,8 @@ public void SolvePnPTestByMat()
327327
328328 using var objPtsMat = Mat . FromPixelData ( objPts . Length , 1 , MatType . CV_32FC3 , objPts ) ;
329329 using var imgPtsMat = Mat . FromPixelData ( imgPts . Length , 1 , MatType . CV_32FC2 , imgPts ) ;
330- using var cameraMatrixMat = Mat . Eye ( 3 , 3 , MatType . CV_64FC1 ) ;
331- using var distMat = Mat . Zeros ( 5 , 0 , MatType . CV_64FC1 ) ;
330+ using var cameraMatrixMat = Mat . EyeMat ( 3 , 3 , MatType . CV_64FC1 ) ;
331+ using var distMat = Mat . ZerosMat ( 5 , 0 , MatType . CV_64FC1 ) ;
332332 using var rvecMat = new Mat ( ) ;
333333 using var tvecMat = new Mat ( ) ;
334334 Cv2 . SolvePnP ( objPtsMat , imgPtsMat , cameraMatrixMat , distMat , rvecMat , tvecMat ) ;
@@ -496,7 +496,7 @@ public void RecoverPoseWithTriangulatedPoints()
496496
497497 using var points1m = Mat < double > . FromArray ( points1 ) ;
498498 using var points2m = Mat < double > . FromArray ( points2 ) ;
499- using var K = Mat . Eye ( 3 , 3 , MatType . CV_64F ) ;
499+ using var K = Mat . EyeMat ( 3 , 3 , MatType . CV_64F ) ;
500500 using var inliers = new Mat ( ) ;
501501 using var E = Cv2 . FindEssentialMat ( points1m , points2m , K , EssentialMatMethod . LMedS , 0.99 , 1.0 , inliers ) ;
502502
@@ -575,6 +575,72 @@ public void FindHomographyUsac()
575575 });*/
576576 }
577577
578+ [ Fact ]
579+ public void StereoCalibrateByInputArray ( )
580+ {
581+ var patternSize = new Size ( 10 , 7 ) ;
582+
583+ using var image = LoadImage ( "calibration/00.jpg" ) ;
584+ Cv2 . FindChessboardCorners ( image , patternSize , out var cornerPoints ) ;
585+
586+ var objectPointsArray = Create3DChessboardCorners ( patternSize , 1.0f ) . ToArray ( ) ;
587+
588+ using var opIA = InputArray . Create ( objectPointsArray ) ;
589+ using var ip1IA = InputArray . Create ( cornerPoints ) ;
590+ using var ip2IA = InputArray . Create ( cornerPoints ) ;
591+
592+ using var cameraMatrix1 = Mat . EyeMat ( 3 , 3 , MatType . CV_64FC1 ) ;
593+ using var distCoeffs1 = new Mat < double > ( ) ;
594+ using var cameraMatrix2 = Mat . EyeMat ( 3 , 3 , MatType . CV_64FC1 ) ;
595+ using var distCoeffs2 = new Mat < double > ( ) ;
596+ using var R = new Mat ( ) ;
597+ using var T = new Mat ( ) ;
598+ using var E = new Mat ( ) ;
599+ using var F = new Mat ( ) ;
600+
601+ var rms = Cv2 . StereoCalibrate (
602+ new [ ] { opIA } , new [ ] { ip1IA } , new [ ] { ip2IA } ,
603+ cameraMatrix1 , distCoeffs1 ,
604+ cameraMatrix2 , distCoeffs2 ,
605+ image . Size ( ) , R , T , E , F ,
606+ CalibrationFlags . UseIntrinsicGuess ) ;
607+
608+ Assert . False ( double . IsNaN ( rms ) ) ;
609+ Assert . False ( double . IsInfinity ( rms ) ) ;
610+ }
611+
612+ [ Fact ]
613+ public void StereoCalibrateByMat ( )
614+ {
615+ var patternSize = new Size ( 10 , 7 ) ;
616+
617+ using var image = LoadImage ( "calibration/00.jpg" ) ;
618+ Cv2 . FindChessboardCorners ( image , patternSize , out var cornerPoints ) ;
619+
620+ var objectPointsArray = Create3DChessboardCorners ( patternSize , 1.0f ) . ToArray ( ) ;
621+
622+ using var objectPoints = Mat < Point3f > . FromArray ( objectPointsArray ) ;
623+ using var imagePoints = Mat < Point2f > . FromArray ( cornerPoints ) ;
624+ using var cameraMatrix1 = Mat . EyeMat ( 3 , 3 , MatType . CV_64FC1 ) ;
625+ using var distCoeffs1 = new Mat ( ) ;
626+ using var cameraMatrix2 = Mat . EyeMat ( 3 , 3 , MatType . CV_64FC1 ) ;
627+ using var distCoeffs2 = new Mat ( ) ;
628+ using var R = new Mat ( ) ;
629+ using var T = new Mat ( ) ;
630+ using var E = new Mat ( ) ;
631+ using var F = new Mat ( ) ;
632+
633+ var rms = Cv2 . StereoCalibrate (
634+ new [ ] { objectPoints } , new [ ] { imagePoints } , new [ ] { imagePoints } ,
635+ cameraMatrix1 , distCoeffs1 ,
636+ cameraMatrix2 , distCoeffs2 ,
637+ image . Size ( ) , R , T , E , F ,
638+ CalibrationFlags . UseIntrinsicGuess ) ;
639+
640+ Assert . False ( double . IsNaN ( rms ) ) ;
641+ Assert . False ( double . IsInfinity ( rms ) ) ;
642+ }
643+
578644 private static IEnumerable < Point3f > Create3DChessboardCorners ( Size boardSize , float squareSize )
579645 {
580646 for ( var y = 0 ; y < boardSize . Height ; y ++ )
0 commit comments