यदि आप OpenCV imread() मेथड का उपयोग करके इमेज पढ़ने का प्रयास करते हैं तो यह एक Mat ऑब्जेक्ट लौटाता है। यदि आप AWT/Swing विंडो का उपयोग करके परिणामी Mat ऑब्जेक्ट की सामग्री प्रदर्शित करना चाहते हैं तो आपको Mat ऑब्जेक्ट को java.awt.image.BufferedImage क्लास के ऑब्जेक्ट में कनवर्ट करना होगा। ऐसा करने के लिए, आपको नीचे दिए गए चरणों का पालन करना होगा -
Mat को MatOfByte में एनकोड करें - सबसे पहले, आपको मैट्रिक्स को बाइट की मैट्रिक्स में कनवर्ट करना होगा। आप Imgcodecs क्लास के imencode() मेथड का उपयोग करके ऐसा कर सकते हैं।
यह मेथड एक स्ट्रिंग पैरामीटर (इमेज फॉर्मेट निर्दिष्ट करने वाला), एक Mat ऑब्जेक्ट (इमेज का प्रतिनिधित्व करने वाला), एक MatOfByte ऑब्जेक्ट स्वीकार करता है।
MatOfByte ऑब्जेक्ट को बाइट एरे में कनवर्ट करें - toArray() मेथड का उपयोग करके MatOfByte ऑब्जेक्ट को बाइट एरे में कनवर्ट करें।
ByteArrayInputStream इंस्टेंटिएट करें - पिछले चरण में बनाए गए बाइट एरे को इसके कंस्ट्रक्टर्स में से एक में पास करके ByteArrayInputStream क्लास को इंस्टेंटिएट करें।
BufferedImage ऑब्जेक्ट बनाएं - पिछले चरण में बनाए गए इनपुट स्ट्रीम ऑब्जेक्ट को ImageIO क्लास के read() मेथड में पास करें। यह एक BufferedImage ऑब्जेक्ट लौटाएगा।
उदाहरण
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfByte;
import org.opencv.imgcodecs.Imgcodecs;
public class Mat2BufferedImage {
public static BufferedImage Mat2BufferedImage(Mat mat) throws IOException {
// इमेज एनकोड करना
MatOfByte matOfByte = new MatOfByte();
Imgcodecs.imencode(".jpg", mat, matOfByte);
// एन्कोडेड Mat को बाइट एरे में स्टोर करना
byte[] byteArray = matOfByte.toArray();
// Buffered Image तैयार करना
InputStream in = new ByteArrayInputStream(byteArray);
BufferedImage bufImage = ImageIO.read(in);
return bufImage;
}
public static void main(String args[]) throws Exception {
// OpenCV कोर लाइब्रेरी लोड करना
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// फाइल से इमेज पढ़ना
String file = "C:/EXAMPLES/OpenCV/sample.jpg";
Mat image = Imgcodecs.imread(file);
BufferedImage obj = Mat2BufferedImage(image);
System.out.println(obj);
}
}
आउटपुट
BufferedImage@579bb367: type = 5 ColorModel: #pixelBits = 24 numComponents = 3 color space = java.awt.color.ICC_ColorSpace@1de0aca6 transparency = 1 has alpha = false isAlphaPre = false ByteInterleavedRaster: width = 500 height = 360 #numDataElements 3 dataOff[0] = 2