Ask Your Question

How to display image on JAVA release

asked 2013-02-26 23:52:02 -0500

wolvican gravatar image

Hi everyone,

In new release OpenCV 2.4.4, how can I display image ( Mat ) on window using JAVA. I couldn't find the JAVA method from API?

edit retag flag offensive close merge delete

2 answers

Sort by ยป oldest newest most voted

answered 2013-02-27 05:54:43 -0500

Window management from OpenCV highgui module is no wrapper to Java yet. You need to use some Java UI frameworks like SWING or wrap it to Java manually using JNI.

edit flag offensive delete link more

answered 2014-04-22 11:33:33 -0500

rafaoc gravatar image

updated 2014-04-22 11:34:36 -0500

You can use the next code to transform a cvMat element into a java element: BufferedImage or Image:

    public BufferedImage Mat2BufferedImage(Mat m){
// source:
// Fastest code
// The output can be assigned either to a BufferedImage or to an Image

    int type = BufferedImage.TYPE_BYTE_GRAY;
    if ( m.channels() > 1 ) {
        type = BufferedImage.TYPE_3BYTE_BGR;
    int bufferSize = m.channels()*m.cols()*m.rows();
    byte [] b = new byte[bufferSize];
    m.get(0,0,b); // get all the pixels
    BufferedImage image = new BufferedImage(m.cols(),m.rows(), type);
    final byte[] targetPixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
    System.arraycopy(b, 0, targetPixels, 0, b.length);  
    return image;


And then display it with:

    public void displayImage(Image img2)
    //BufferedImage File("/HelloOpenCV/lena.png"));
    ImageIcon icon=new ImageIcon(img2);
    JFrame frame=new JFrame();
    frame.setLayout(new FlowLayout());        
    frame.setSize(img2.getWidth(null)+50, img2.getHeight(null)+50);     
    JLabel lbl=new JLabel();

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2013-02-26 23:52:02 -0500

Seen: 6,903 times

Last updated: Apr 22 '14