私は、スキャンしたフォームを読むためにopenCV.NETを使用しようとしています。問題は、関連する関心領域と位置合わせの位置が、印刷されたプリンタとユーザがフォームを走査した方法によって異なる場合があることである。aruco.net - マーカーの向きを見つける方法
私はArucoマーカーを参照ポイントとして使用できると思っていました.ArUcoマーカーを認識するために既に構築されたライブラリ(ArUco.NET)があるためです。私は、Arukcoコードがどのくらい回転しているのかを調べ、テキストがまっすぐであることを確認するためにその量だけフォームを後方に回転させたいと考えていました。次に、フォーム上の特定の領域でOCRを使用するために、Arucoコードの中心を参照ポイントとして使用することができます。
次のコードを使用してOpenGL modelViewMatrixを取得しています。しかし、Arucoコードがどの角度に回転しても、常に同じ数字になるようです。私はこれらのライブラリを始めたばかりですが、modelViewMatrixはマーカーの回転に応じて異なる値を与えてくれると思いました。なぜそれはいつも同じだろうか?
Mat cameraMatrix = new Mat(3, 3, Depth.F32, 1);
Mat distortion = new Mat(1, 4, Depth.F32, 1);
using (Mat image2 = OpenCV.Net.CV.LoadImageM("./image.tif", LoadImageFlags.Grayscale))
{
using (var detector = new MarkerDetector())
{
detector.ThresholdMethod = ThresholdMethod.AdaptiveThreshold;
detector.Param1 = 7.0;
detector.Param2 = 7.0;
detector.MinSize = 0.01f;
detector.MaxSize = 0.5f;
detector.CornerRefinement = CornerRefinementMethod.Lines;
var markerSize = 10;
IList<Marker> detectedMarkers = detector.Detect(image2, cameraMatrix, distortion);
foreach (Marker marker in detectedMarkers)
{
Console.WriteLine("Detected a marker top left at: " + marker[0].X + @" " + marker[0].Y);
//Upper 3x3 matrix of modelview matrix (0,4,8,1,5,9,2,6,10) is called rotation matrix.
double[] modelViewMatrix = marker.GetGLModelViewMatrix();
}
}
}