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.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
public class SimpleGUI extends JFrame
{
static String imagePath = "NASA_Astronauten.jpg";
private JLabel imageView = new JLabel();
public SimpleGUI(String title)
{
super(title);
initUI();
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
}
private void initUI()
{
JScrollPane sp = new JScrollPane(imageView);
sp.setPreferredSize(new Dimension(640, 480));
add(sp);
Mat imageMat = Imgcodecs.imread(imagePath);
if (imageMat.dataAddr() == 0)
{
System.out.println("Bilddatei konnte nicht geladen werden.");
System.exit(0);
}
else
loadImage(imageMat);
}
public void loadImage(Mat imageMat)
{
Image im = toBufferedImage(imageMat);
imageView.setIcon(new ImageIcon(im));
}
public Image toBufferedImage(Mat matrix)
{
int buffersize = matrix.channels() * matrix.cols() * matrix.rows();
byte[] buffer = new byte[buffersize];
matrix.get(0, 0, buffer);
BufferedImage bi = new BufferedImage(matrix.cols(), matrix.rows(), BufferedImage.TYPE_3BYTE_BGR);
final byte[] targetPixels = ((DataBufferByte) bi.getRaster().getDataBuffer()).getData();
System.arraycopy(buffer, 0, targetPixels, 0, buffer.length);
return bi;
}
public static void main(String[] args)
throws Exception
{
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
new SimpleGUI("SimpleGUI");
}
}