【问题标题】:Create CV_16UC1 Mat from byte array in java opencv从 java opencv 中的字节数组创建 CV_16UC1 Mat
【发布时间】:2019-11-20 11:51:26
【问题描述】:

我有一个 java 程序,需要从 1D 字节数组(宽度和高度已知)创建 16UC1 类型的 OpenCV 2D Mat。字节数组的大小为 W*H*2,每个像素应由数组中的两个连续字节构成。

在 C++ OpenCV 中这有点微不足道,因为 Mat 构造函数可以采用 (void*) 指针指向数据,但我可以在没有嵌套循环并从两个字节构造每个 uint16 的 Java OpenCV 中做到这一点吗?

【问题讨论】:

    标签: java opencv


    【解决方案1】:

    所以,我最终通过 java.nio ByteBuffer 和 ShortBuffer 将 java byte[] 转换为 short[]。

    byte v[] = {0,0, 1,0, -1,0,     0,1,    1,1,   -1,1,    0,-1,  1,-1,  -1,-1 };
    short s[] = new short[v.length/2];
    ByteBuffer.wrap(v).asShortBuffer().get(s);
    Mat m = new Mat(3,3, CvType.CV_16UC1);
    m.put(0, 0, s);
    

    不过,仍在寻找 OpenCV 原生解决方案。

    【讨论】:

      猜你喜欢
      • 2012-11-15
      • 2015-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多