Java(opencv)窗体中显示图像
2017-11-03 15:47
351 查看
源代码下载:
Java(opencv)中显示图像
在textImageIO java项目中添加textImageIO包,在包中添加textImage.java
在tool包中添加tool.java
在窗体中添加一个Jlabel,
在textImage.java中添加一下程序:
注意:mat2BufferedImage.matToBufferedImage(source);这个方法是将Opencv中Mat格式的图像转换成Java Swing中的BufferedImage格式,因为在Swing中只支持BufferedImage格式图像显示。该方法是我们自己写的,又因为该方法我们以后一直要使用,因此,在testOpencv中新建一个tool包,然后在该包下新建一个mat2BufferedImage.java类,该类代码如下:
现在运行textImage.java
Java(opencv)中显示图像
在textImageIO java项目中添加textImageIO包,在包中添加textImage.java
在tool包中添加tool.java
在窗体中添加一个Jlabel,
在textImage.java中添加一下程序:
package textImageIO; import java.awt.EventQueue; import java.awt.image.BufferedImage; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.imgcodecs.Imgcodecs; import tool.mat2BufferedImage; public class textImage { private JFrame frame; /** * Launch the application. */ static{System.loadLibrary(Core.NATIVE_LIBRARY_NAME);} public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { textImage window = new textImage(); window.frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the application. */ public textImage() { initialize(); } /** * Initialize the contents of the frame. */ private void initialize() { frame = new JFrame(); frame.setBounds(100, 100, 800, 450); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setLayout(null); JLabel label = new JLabel(""); label.setBounds(0, 0, 800, 450); frame.getContentPane().add(label); Mat source=Imgcodecs.imread("F://Projects_opencv//12.jpg"); BufferedImage image=mat2BufferedImage.matToBufferedImage(source); label.setIcon(new ImageIcon(image)); } }
注意:mat2BufferedImage.matToBufferedImage(source);这个方法是将Opencv中Mat格式的图像转换成Java Swing中的BufferedImage格式,因为在Swing中只支持BufferedImage格式图像显示。该方法是我们自己写的,又因为该方法我们以后一直要使用,因此,在testOpencv中新建一个tool包,然后在该包下新建一个mat2BufferedImage.java类,该类代码如下:
package tool; import java.awt.image.BufferedImage; import org.opencv.core.Mat; public class mat2BufferedImage { public static BufferedImage matToBufferedImage(Mat matrix) { int cols=matrix.cols(); int rows=matrix.rows(); int elemSize=(int)matrix.elemSize(); byte[] data=new byte[cols*rows*elemSize]; int type; matrix.get(0 ,0,data); switch(matrix.channels()){ case 1: type=BufferedImage.TYPE_BYTE_GRAY; break; case 3: type=BufferedImage.TYPE_3BYTE_BGR; byte b; for(int i=0;i<data.length;i=i+3){ b=data[i]; data[i]=data[i+2]; data[i+2]=b; } break; default: return null; } BufferedImage image2=new BufferedImage(cols,rows,type); image2.getRaster().setDataElements(0, 0,cols,rows,data); return image2; } }
现在运行textImage.java
相关文章推荐
- 【Java Opencv系列】4.2在窗体中显示图像
- 【Java+OpenCV】图像的基本处理(读取,显示)
- Java OpenCV开发——使用JavaCV在窗口显示图像,并监听鼠标点击事件
- 用OpenCV显示一幅图像到指定的窗体
- OpenCV读入的图像如何显示在窗体上
- 在Windows窗体中显示OpenCV图像
- MFC+Opencv显示图像的几种方法
- 【OpenCV入门教程之三】 图像的载入,显示和输出 一站式完全解析
- kinect,openni,opencv 获取并显示深度与彩色图像
- OpenCV成长之路(1):图像的读写与显示
- 利用OpenCV显示一幅图像
- qt+opencv图像在控件上的显示 槽和信号的定义.
- opencv显示图像问题
- 在Android中用ndk层egl/opengl es显示java层打开的图像
- OpenCV Using Python——加载和显示图像
- 用opencv读取图像的每个像素值,鼠标点击获取每一个点,并显示像素
- 用OpenCV读取图像并且显示
- 【OpenCV 2.4.9 用户指南之一】图像读写、显示、基本操作
- opencv学习笔记——图像的载入、显示和输出
- java通过jni调用opencv处理图像的方法