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

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


यदि आप 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
  1. Java OpenCV लाइब्रेरी का उपयोग करके रंगीन इमेज को सेपिया इमेज में कैसे बदलें? Java OpenCV लाइब्रेरी का उपयोग करके रंगीन इमेज को सेपिया इमेज में कैसे बदलें?

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

  1. Java OpenCV लाइब्रेरी का उपयोग करके नेगेटिव इमेज को पॉजिटिव इमेज में कैसे बदलें? Java OpenCV लाइब्रेरी का उपयोग करके नेगेटिव इमेज को पॉजिटिव इमेज में कैसे बदलें?

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

  1. Java OpenCV लाइब्रेरी का उपयोग करके रंगीन इमेज को ग्रेस्केल में कैसे बदलें? Java OpenCV लाइब्रेरी का उपयोग करके रंगीन इमेज को ग्रेस्केल में कैसे बदलें?

    Imgproc क्लास की cvtColor() मेथड इमेज के रंग को एक से दूसरे में बदलती है। यह मेथड तीन पैरामीटर्स स्वीकार करती है −src − स्रोत को दर्शाने वाला एक मैट्रिक्स ऑब्जेक्ट।dst − गंतव्य को दर्शाने वाला एक मैट्रिक्स ऑब्जेक्ट।code − गंतव्य इमेज के रंग को दर्शाने वाला एक पूर्णांक मान।रंगीन इमेज को ग्रेस्केल में