यदि आप OpenCV का उपयोग करके किसी छवि को पढ़ने का प्रयास करते हैं imread() विधि यह एक मैट ऑब्जेक्ट देता है। यदि आप जावाएफएक्स विंडो का उपयोग करके परिणामी मैट ऑब्जेक्ट की सामग्री प्रदर्शित करना चाहते हैं तो आपको मैट ऑब्जेक्ट को javafx.scene.image.WritableImage वर्ग के ऑब्जेक्ट में कनवर्ट करने की आवश्यकता है। ऐसा करने के लिए, आपको नीचे दिए गए चरणों का पालन करना होगा -
-
मैट को MatOfByte में एन्कोड करें - सबसे पहले, आपको मैट्रिक्स को बाइट के मैट्रिक्स में बदलना होगा। आप इसे imencode() . विधि का उपयोग करके कर सकते हैं Imgcodecs वर्ग के।
-
यह विधि एक स्ट्रिंग पैरामीटर (छवि प्रारूप निर्दिष्ट करना), एक मैट ऑब्जेक्ट (छवि का प्रतिनिधित्व करने वाला), एक MatOfByte ऑब्जेक्ट स्वीकार करती है।
-
MatOfByte ऑब्जेक्ट को बाइट ऐरे में बदलें - toArray() विधि का उपयोग करके MatOfByte ऑब्जेक्ट को बाइट सरणी में बदलें।
-
बाइटएरेइनपुटस्ट्रीम को तुरंत चालू करें - इसके एक कंस्ट्रक्टर को पिछले चरण में बनाए गए बाइट सरणी को पास करके ByteArrayInputStream क्लास को इंस्टेंट करें।
-
BufferedImage ऑब्जेक्ट बनाना - ImageIO क्लास के रीड () मेथड में पिछले स्टेप में बनाए गए इनपुट स्ट्रीम ऑब्जेक्ट को पास करें। यह एक BufferedImage ऑब्जेक्ट लौटाएगा।
-
अंत में, toFXImage() का आह्वान करें SingFXUtils . की विधि BufferedImage . पास करके कक्षा पिछले चरण में एक पैरामीटर के रूप में प्राप्त वस्तु।
उदाहरण
आयात करें org.opencv.core.Mat; आयात करें WritableImage Mat2WritableImage(Mat mat) IOException फेंकता है {// छवि एन्कोडिंग MatOfByte matOfByte =new MatOfByte (); Imgcodecs.imencode(.jpg", mat, matOfByte); // एन्कोडेड मैट को एक बाइट सरणी में संग्रहीत करना बाइट [] बाइटअरे =matOfByte.toArray (); // बफ़र्ड इमेज इनपुटस्ट्रीम तैयार करना =new ByteArrayInputStream(byteArray); BufferedImage bufImage =ImageIO.read (इन); System.out.println ("इमेज लोडेड"); WritableImage writableImage =SwingFXUtils.toFXImage(bufImage, null); वापसी योग्य छवि; } सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग args []) अपवाद फेंकता है {// OpenCV कोर पुस्तकालय लोड हो रहा है System.loadLibrary (Core.NATIVE_LIBRARY_NAME); // फ़ाइल से छवि पढ़ना स्ट्रिंग फ़ाइल ="C:/EXAMPLES/OpenCV/sample.jpg"; चटाई छवि =Imgcodecs.imread (फ़ाइल); WritableImage obj =Mat2WritableImage (छवि); System.out.println (obj); }}आउटपुट
Image Loadedjavafx.scene.image.WritableImage@142269f2