在Java OpenCV中从字节数组创建CV_16UC1 Mat

时间:2019-11-20 11:51:26

标签: java opencv

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

在C ++ OpenCV中,这有点琐碎,因为Mat构造函数可以使用(void *)指向数据的指针,但是我可以在Java OpenCV中做到这一点而无需嵌套循环并从两个字节构造每个uint16吗?

1 个答案:

答案 0 :(得分:0)

因此,我最终通过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本机解决方案。