Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

OpenCV Mat ऑब्जेक्ट को JavaFX WritableImage में कैसे बदलें?


यदि आप 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

  1. जावा ओपनसीवी लाइब्रेरी का उपयोग करके रंगीन छवि को नीली/हरी/लाल छवि में कैसे परिवर्तित करें?

    द cvtColor() Imgproc . की विधि वर्ग छवि के रंग को एक से दूसरे में बदलता/बदलता है। यह विधि तीन मापदंडों को स्वीकार करती है - स्रोत - स्रोत का प्रतिनिधित्व करने वाली एक मैट्रिक्स वस्तु। डीएसटी - गंतव्य का प्रतिनिधित्व करने वाली एक मैट्रिक्स वस्तु। कोड - एक पूर्णांक मान जो गंतव्य छवि के रंग को

  1. जावा ओपनसीवी लाइब्रेरी का उपयोग करके रंगीन छवि को ग्रेस्केल में कैसे परिवर्तित करें?

    cvtColor() Imgproc . की विधि वर्ग छवि के रंग को एक से दूसरे में बदलता/बदलता है। यह विधि तीन मापदंडों को स्वीकार करती है - स्रोत - स्रोत का प्रतिनिधित्व करने वाली एक मैट्रिक्स वस्तु। डीएसटी - गंतव्य का प्रतिनिधित्व करने वाली एक मैट्रिक्स वस्तु। कोड - एक पूर्णांक मान जो गंतव्य छवि के रंग को द

  1. एक छवि को एक PyTorch Tensor में कैसे बदलें?

    एक PyTorch टेंसर एक n-आयामी सरणी (मैट्रिक्स) है जिसमें एकल डेटा प्रकार के तत्व होते हैं। टेंसर एक सुन्न सरणी की तरह है। संख्यात्मक सरणियों और PyTorch टेंसर के बीच का अंतर यह है कि टेंसर संख्यात्मक गणनाओं को तेज करने के लिए GPU का उपयोग करते हैं। त्वरित गणना के लिए, छवियों को टेंसर में बदल दिया जाता