2016-10-06 3 views
0

Я пытаюсь использовать openCV.NET для чтения отсканированных форм. Проблема в том, что иногда позиции соответствующих регионов, представляющих интерес, и выравнивание могут различаться в зависимости от того, какой принтер был напечатан, и как пользователь просматривал форму.aruco.net - Как найти ориентацию маркера

Так что я думал, что могу использовать маркер ArUco в качестве ориентира, так как есть библиотеки (ArUco.NET), уже созданные для их распознавания. Я надеялся выяснить, насколько много кода ArUco повернут, а затем поверните форму назад на эту величину, чтобы убедиться, что текст прямой. Затем я могу использовать центр кода ArUco в качестве ориентира для использования OCR в определенных регионах формы.

Я использую следующий код, чтобы получить 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(); 


        } 

       } 
      } 

ответ

0

Похоже, что вы не инициализировали параметры своей камеры. cameraMatrix и distortion являются внутренними параметрами вашей камеры. Вы можете использовать OpenCV, чтобы найти их.

Это VOR OpenCV 2.4, но и поможет вам понять основы: http://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html

Если вы нашли их, вы должны быть в состоянии получить параметры.