java - 将 3x3 OpenCV Mat 转换为 Android 矩阵

标签 java android opencv matrix

我有一个 OpenCV 格式的 3x3 矩阵 (org.opencv.core.Mat),我想将其复制到 android.graphics.Matrix 中。知道怎么做吗?

[编辑]

这是受 @elmiguelao 启发的最终版本。源矩阵来自 OpenCV,目标矩阵来自 Android。

static void transformMatrix(Mat src, Matrix dst) {

    int columns = src.cols();
    int rows = src.rows();

    float[] values = new float[columns * rows];
    int index = 0;
    for (int x = 0; x < columns; x++)
        for (int y = 0; y < rows; y++) {
            double[] value = src.get(x, y);
            values[index] = (float) value[0];

            index++;
        }

    dst.setValues(values);
}

最佳答案

大致如下:

cv.Mat opencv_matrix;
Matrix android_matrix;
if (opencv_matrix.isContiguous()) {
    android_matrix.setValues(cv.MatOfFloat(opencv_matrix.ptr()).toArray());
} else {
    float[] opencv_matrix_values = new float[9];
    // Undocumented .get(row, col, float[]), but seems to be bulk-copy.
    opencv_matrix.get(0, 0, opencv_matrix_values);
    android_matrix.setValues(opencv_matrix_values);
}

关于java - 将 3x3 OpenCV Mat 转换为 Android 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21784023/

相关文章:

Java用'(撇号/单引号)和\(反斜杠)一起替换问题

java - 最大回文积

Android 使用 AlarmManager 用闹钟替换 Thread.sleep

c++ - 初始化多 channel OpenCV Mat

java - 我怎样才能重新安排我的代码让雨和海报出现

java - 单个请求头长度超过配置的最大值

android - 任何方式获得-webkit-transform : rotateY to work on the Android browser?

android - registerMediaButtonEventReceiver 没有收到事件

opencv 2 - 如何只计算两个图像之间的平移和比例?

java - 将从网络摄像头获取的图像添加到现有的 JPanel