从java opencv中的字节数组创建CV_16UC1 Mat

从java opencv中的字节数组创建CV_16UC1 Mat,java,opencv,Java,Opencv,我有一个java程序,需要从1D字节数组(宽度和高度已知)创建类型为16UC1的OpenCV 2D Mat。字节数组的大小为W*H*2,每个像素应由数组中的两个连续字节构成 在C++的OpenCV中,这是一个有点微不足道的事情,因为MAT构造函数可以带一个(空*)指针到数据,但是我可以在没有OpenStf的java opencv中完成它,并且从两个字节构造每个UTIT16?< /P> < P>,所以我最终通过java.nio ByteBuffer和ShortBuffer将java字节[]转换成S

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


在C++的OpenCV中,这是一个有点微不足道的事情,因为MAT构造函数可以带一个(空*)指针到数据,但是我可以在没有OpenStf的java opencv中完成它,并且从两个字节构造每个UTIT16?< /P> < P>,所以我最终通过java.nio ByteBuffer和ShortBuffer将java字节[]转换成St[]。
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本机解决方案