openCv java Mat和MatOfByte的之间的相互转换 (4)

因为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);

 

openCv java Mat和MatOfByte的之间的相互转换 (4)_第1张图片

上面是从MatOfByte 转换为Mat

那么如何从Mat转换为MatOfByte

Mat mat2 = Imgcodecs.imdecode(mata, Imgcodecs.IMREAD_UNCHANGED);

当然从MatOfByte就可以转换为最开始的状态byte

byte [] b=mata.toArray();

刚开始学习opencv 基础做点笔记

希望对你有所帮助

 

你可能感兴趣的:(opencv,opencv,java,MatOfByte,Mat)