opencvjava显示mat对象的方法

opencvjava显示mat对象的方法


直接ctrl+c,ctrl+v创建对象调用imgshow方法即可

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;

import org.opencv.core.Mat;

public class ShowImages{
	Mat mat;
	JLabel imageView;
	public ShowImages(Mat mat){
		//接收图片
		this.mat=mat;
	}
	public void imshow() { 
		  
		 Image loadedImage = toBufferedImage(mat);
		 JFrame frame = createJFrame(mat.width(), mat.height()); 
		 imageView.setIcon(new ImageIcon(loadedImage)); 
		 frame.pack(); 
		 frame.setLocationRelativeTo(null);
		 frame.setVisible(true); 
		
		 
	 }
	private JFrame createJFrame( int width, int height) { 
		JFrame frame = new JFrame();
		imageView = new JLabel();
		final JScrollPane imageScrollPane = new JScrollPane(imageView);
		imageScrollPane.setPreferredSize(new Dimension(width, height)); 
		frame.add(imageScrollPane, BorderLayout.CENTER); 
		return frame; 
		}
	
	private Image 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); 
		// 获取所有的像素点
		BufferedImage image = new BufferedImage(matrix.cols(), matrix.rows(), type);
		final byte[] targetPixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData(); 
		System.arraycopy(buffer, 0, targetPixels, 0, buffer.length);
		return image; 
		}
	 
	 
	

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用 OpenCV 的 `Java2DFrameConverter` 和 `BufferedImageToMat` 类来实现 `Mat` 转 `BufferedImage` 和 `BufferedImage` 转 `Mat` 的转换。 下面是将 `Mat` 转换为 `BufferedImage` 的示例代码: ```java import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.CvType; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; import org.opencv.videoio.VideoCapture; import org.opencv.videoio.Videoio; import org.opencv.imgcodecs.Imgcodecs; import java.awt.image.BufferedImage; import javax.swing.*; import org.bytedeco.javacv.Java2DFrameConverter; public class MatToBufferedImageExample { public static void main(String[] args) { // 加载OpenCV本地库 System.loadLibrary(Core.NATIVE_LIBRARY_NAME); // 加载图像到Mat对象 Mat mat = Imgcodecs.imread("path/to/image.jpg"); // 创建Java2DFrameConverter对象 Java2DFrameConverter converter = new Java2DFrameConverter(); // 转换Mat为BufferedImage对象 BufferedImage image = converter.convertToBufferedImage(mat); // 显示图像 JFrame frame = new JFrame("Image"); frame.getContentPane().add(new JLabel(new ImageIcon(image))); frame.pack(); frame.setVisible(true); } } ``` 下面是将 `BufferedImage` 转换为 `Mat` 的示例代码: ```java import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.CvType; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; import org.opencv.videoio.VideoCapture; import org.opencv.videoio.Videoio; import org.opencv.imgcodecs.Imgcodecs; import java.awt.image.BufferedImage; import javax.swing.*; import org.bytedeco.javacv.BufferedImageToMat; public class BufferedImageToMatExample { public static void main(String[] args) { // 加载OpenCV本地库 System.loadLibrary(Core.NATIVE_LIBRARY_NAME); // 加载图像到BufferedImage对象 BufferedImage image = ImageIO.read(new File("path/to/image.jpg")); // 创建BufferedImageToMat对象 BufferedImageToMat converter = new BufferedImageToMat(); // 转换BufferedImage为Mat对象 Mat mat = converter.convert(image); // 显示图像 Imgcodecs.imwrite("path/to/output_image.jpg", mat); } } ``` 这些示例代码需要使用到 OpenCVJavaCV 的库,请确保您已经成功安装了这些库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值