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

Java का उपयोग करके OpenCV Mat ऑब्जेक्ट को BufferedImage ऑब्जेक्ट में कैसे बदलें?


यदि आप OpenCV का उपयोग करके किसी छवि को पढ़ने का प्रयास करते हैं imread() विधि यह एक मैट ऑब्जेक्ट देता है। यदि आप परिणामी मैट ऑब्जेक्ट की सामग्री को एडब्ल्यूटी/स्विंग्स विंडो का उपयोग करके प्रदर्शित करना चाहते हैं तो आपको मैट ऑब्जेक्ट को java.awt.image.BufferedImage वर्ग के ऑब्जेक्ट में कनवर्ट करने की आवश्यकता है। ऐसा करने के लिए, आपको नीचे दिए गए चरणों का पालन करना होगा -

  • मैट को MatOfByte में एन्कोड करें - सबसे पहले, आपको मैट्रिक्स को बाइट के मैट्रिक्स में बदलना होगा। आप इसे Imgcodecs वर्ग की imencode() विधि का उपयोग करके कर सकते हैं।

    यह विधि एक स्ट्रिंग पैरामीटर (छवि प्रारूप निर्दिष्ट करना), एक मैट ऑब्जेक्ट (छवि का प्रतिनिधित्व करने वाला), एक MatOfByte ऑब्जेक्ट स्वीकार करती है।

  • MatOfByte ऑब्जेक्ट को बाइट ऐरे में बदलें - toArray() विधि का उपयोग करके MatOfByte ऑब्जेक्ट को बाइट सरणी में बदलें।

  • बाइटएरेइनपुटस्ट्रीम को तुरंत चालू करें - इसके एक कंस्ट्रक्टर को पिछले चरण में बनाए गए बाइट सरणी को पास करके ByteArrayInputStream क्लास को इंस्टेंट करें।

  • BufferedImage ऑब्जेक्ट बनाना - ImageIO क्लास के रीड () मेथड में पिछले स्टेप में बनाए गए इनपुट स्ट्रीम ऑब्जेक्ट को पास करें। यह एक BufferedImage ऑब्जेक्ट लौटाएगा।

उदाहरण

आयात करें org.opencv.core.Mat;import org.opencv.core.MatOfByte;import org.opencv.imgcodecs.Imgcodecs;सार्वजनिक वर्ग Mat2BufferedImage {सार्वजनिक स्थैतिक BufferedImage Mat2BufferedImage(Mat mat) IOException फेंकता है {// छवि को एन्कोडिंग MatOfByte matOfByte =new मैटऑफबाइट (); Imgcodecs.imencode(.jpg", mat, matOfByte); // एन्कोडेड मैट को एक बाइट सरणी में संग्रहीत करना बाइट [] बाइटअरे =matOfByte.toArray (); // बफ़र्ड इमेज इनपुटस्ट्रीम तैयार करना =new ByteArrayInputStream(byteArray); BufferedImage bufImage =ImageIO.read (इन); बफ इमेज लौटाएं; } सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग args []) अपवाद फेंकता है {// OpenCV कोर पुस्तकालय लोड हो रहा है System.loadLibrary (Core.NATIVE_LIBRARY_NAME); // फ़ाइल से छवि पढ़ना स्ट्रिंग फ़ाइल ="C:/EXAMPLES/OpenCV/sample.jpg"; चटाई छवि =Imgcodecs.imread (फ़ाइल); BufferedImage obj =Mat2BufferedImage (छवि); System.out.println (obj); }}

आउटपुट

BufferedImage@579bb367:type =5 ColorModel:#pixelBits =24 numComponents =3color space =java.awt.color.ICC_ColorSpace@1de0aca6 पारदर्शिता =1 में अल्फा =झूठा isAlphaPre =false ByteInterleavedRaster:चौड़ाई =500 ऊंचाई =360#numDataElements 3 डेटाऑफ़[0] =2

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

    रंगीन छवि को सेपिया में बदलने के लिए एल्गोरिथम - प्रत्येक पिक्सेल का लाल हरा नीला मान प्राप्त करें इन 3 रंगों का औसत प्राप्त करें। गहराई और तीव्रता के मानों को परिभाषित करें (आदर्श रूप से 20, और 30)। मानों को − . के रूप में संशोधित करें लाल =लाल + (गहराई*2)। हरा =हरा +गहराई। नील

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

    एक नकारात्मक छवि को सकारात्मक में बदलने के लिए - ImageIO.read() विधि का उपयोग करके आवश्यक छवि पढ़ें। छवि की ऊंचाई और चौड़ाई प्राप्त करें। लूप के लिए नेस्टेड का उपयोग करना छवि में प्रत्येक पिक्सेल से होकर गुजरता है। getRGB() विधि का उपयोग करके पिक्सेल मान प्राप्त करें। एक पिक्सेल से प्

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

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