2017-01-05 2 views
1

Я следую this tutorial, и я хочу использовать его в своем приложении для Android. Я преобразовал код до строки 60, и я хочу знать, как использовать M = cv2.getPerspectiveTransform(rect, dst) в OpenCV Java.OpenCV python to java

The dst является np array

dst = np.array([ 
    [0, 0], 
    [maxWidth - 1, 0], 
    [maxWidth - 1, maxHeight - 1], 
    [0, maxHeight - 1]], dtype = "float32") 

, и я понятия не имею, что тип данных следует использовать в моей Java коде.

+0

['Mat'] (http://docs.opencv.org/java/2.4.9/org/opencv/imgproc/Imgproc.html#getPerspectiveTransform (org.opencv.core.Mat,% 20org.opencv. core.Mat)), предположительно. –

+0

Но какими должны быть размеры и тип Мата? –

+0

4 строки, 2 столбца, по внешнему виду. Он представляет xy координаты четырех углов. –

ответ

1

В соответствии с данной ссылкой создается массив numpy размером 4x1 из dtype = float32. Так Это также может быть сделано в Java, как:

Mat dst = new Mat(4, 1, CvType.CV_32FC2); 

, приведенный выше фрагмент кода создает 2-канал Mat с 4 строк и 1 колонку, чтобы разместить 4 пункта 2, имеющие размеры (х и у).

+0

Я все еще немного смущен. Если у нас есть 2 измерения (x, y), почему нам нужен только 1 столбец. Разве это не должно быть 2? –

+0

В основном здесь у нас есть матрица «4 x 1 x 2», 4 и 1 - это число, столбцы и строки, 2 - «CV_32FC2». Таким образом, он определяет матрицу 4 х 1 с двумя каналами, которая аналогична определению матрицы 4 х 1 х 2 – ZdaR