java opencv 视频_基于OpenCv和swing的图片/视频展示Java实现

基于OpenCv和swing实现图片/视频的展示

图片的展示

swing展示图片,多为操作BufferedImage,这里要关注的核心是将Mat转为BufferedImage。

代码如下:

publicImage toBufferedImage(Mat matrix) {int type =BufferedImage.TYPE_BYTE_GRAY;if (matrix.channels() > 1) {

type=BufferedImage.TYPE_3BYTE_BGR;

}int bufferSize = matrix.channels() * matrix.cols() *matrix.rows();byte[] buffer = new byte[bufferSize];

matrix.get(0,0,buffer); //get all the pixels

BufferedImage image = newBufferedImage(matrix.cols(),matrix.rows(),type);final byte[] targetPixels =((DataBufferByte)image.getRaster().getDataBuffer()).getData();

System.arraycopy(buffer,0,targetPixels,0,buffer.length);returnimage;

}

comment 1:OpenCV Mat --> BufferedImage AWT , 创建一个byte array用以保存mat 矩阵的像素信息。数组大小为通道数和图片宽/高之积。其中,Mat.get()将所有的元素导入byte数组。最终,图片的光栅信息通过 getDataBuffer()和getDate()组成接收数组,并通过System.arraycopy方法完成填充。实现最终的类型与数据的转移。

comment 2:图片/视频,最终展示的都为BufferedImage,并在JFrame中展示,这里可将toBufferedImage与swing组件配置以展示的部分抽取为类ImageReader。如下:

importorg.opencv.core.Mat;import javax.swing.*;import java.awt.*;importjava.awt.image.BufferedImage;importjava.awt.image.DataBufferByte;/*** @Author: nya

*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值