openCv java Mat和MatOfByte的之间的相互转换 (4)
原创
©著作权归作者所有:来自51CTO博客作者我是大头鸟的原创作品,请联系作者获取转载授权,否则将追究法律责任
因为opecncv是和图片打交道的,我个人觉得图片在计算机中存储的方式一般都是字节,Opecv中图片和矩阵之间是通过对象Mat产生的关联
我们很容易将图片转换成为Mat
Mat src = Imgcodecs.imread(path, 0);
这个是一种方式
如何将字节转换成为Mat
首先我们获取一个图片并且将图片转换成为byte
File file = new File("D:\\svnp\\MyYan\\res\\drawable\\chessboard.jpg");
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int len;
byte[] buffer = new byte[1024];
while ((len = fis.read(buffer)) != -1) {
baos.write(buffer, 0, len);
}
byte[] data = baos.toByteArray();
fis.close();
baos.close();
有了byte [] data 这个字节数组
我们能不能直接转换成为Mat
我们可以先转换成MatOfByte
MatOfByte matb = new MatOfByte(data);
我们获取到了MatOfByte的对象
Mat mat = Imgcodecs.imdecode(matb, Imgcodecs.IMREAD_UNCHANGED);
从MatOfByte转换为Mat,因为最初是一张图片,我们可以显示出来
HighGui.imshow("ces", mat);
HighGui.waitKey(5);
上面是从MatOfByte 转换为Mat
那么如何从Mat转换为MatOfByte
Mat mat2 = Imgcodecs.imdecode(mata, Imgcodecs.IMREAD_UNCHANGED);
当然从MatOfByte就可以转换为最开始的状态byte
byte [] b=mata.toArray();
刚开始学习opencv 基础做点笔记
希望对你有所帮助