ImageIcon क्लास Icon इंटरफेस का एक कार्यान्वयन है जो छवियों से आइकन पेंट करता है। आप इस क्लास का उपयोग करके Swing विंडो पर छवियों को प्रदर्शित कर सकते हैं, इस क्लास का कंस्ट्रक्टर पैरामीटर के रूप में एक BufferedImage ऑब्जेक्ट स्वीकार करता है।
इसलिए Swing विंडो का उपयोग करके Mat ऑब्जेक्ट में संग्रहीत OpenCV छवि को प्रदर्शित करने के लिए, आपको इसे BufferedImage ऑब्जेक्ट में परिवर्तित करना होगा और इसे ImageIcon मेथड में पैरामीटर के रूप में पास करना होगा।
उदाहरण
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import javax.imageio.ImageIO;
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.core.MatOfByte;
import org.opencv.imgcodecs.Imgcodecs;
public class DisplayingImagesUsingSwings {
public static void main(String args[]) throws Exception {
// OpenCV कोर लाइब्रेरी लोड करना
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// फ़ाइल से छवि पढ़ना
String file = "D:\\images\\tree.jpg";
Mat image = Imgcodecs.imread(file);
// छवि एन्कोड करना
MatOfByte matOfByte = new MatOfByte();
Imgcodecs.imencode(".jpg", image, matOfByte);
// एन्कोडेड Mat को बाइट सरणी में संग्रहीत करना
byte[] byteArray = matOfByte.toArray();
// Buffered Image तैयार करना
InputStream in = new ByteArrayInputStream(byteArray);
BufferedImage bufImage = ImageIO.read(in);
// JFrame इंस्टेंटिएट करना
JFrame frame = new JFrame();
// JFrame में कंटेंट सेट करना
frame.getContentPane().add(new JLabel(new ImageIcon(bufImage)));
frame.pack();
frame.setVisible(true);
System.out.println("Image Loaded");
}
}
आउटपुट
उपरोक्त प्रोग्राम निष्पादित करने पर निम्नलिखित आउटपुट उत्पन्न होता है -
