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

Java OpenCV लाइब्रेरी का उपयोग करके किसी छवि के पिक्सेल (RGB मान) कैसे प्राप्त करें?


डिजिटल छवि को पिक्सेल के 2D सरणी के रूप में संग्रहीत किया जाता है और एक पिक्सेल डिजिटल छवि का सबसे छोटा तत्व होता है।

प्रत्येक पिक्सेल में अल्फा, लाल, हरे, नीले मान के मान होते हैं और प्रत्येक रंग का मान 0 से 255 के बीच होता है जो 8 बिट (2^8) की खपत करता है।

ARGB मानों को स्मृति के 4 बाइट्स में उसी क्रम में (दाएं से बाएं) 0-7 बिट्स पर नीले मान के साथ, 8-15 बिट्स पर हरा मान, 16-23 बिट्स पर लाल मान और 24-31 पर अल्फा में संग्रहीत किया जाता है। बिट्स।

Java OpenCV लाइब्रेरी का उपयोग करके किसी छवि के पिक्सेल (RGB मान) कैसे प्राप्त करें?

छवि की पिक्सेल सामग्री (ARGB मान) प्राप्त करना -

छवि से पिक्सेल मान प्राप्त करने के लिए -

  • छवि में प्रत्येक पिक्सेल के माध्यम से लूप करें। यानी छवि की ऊंचाई और चौड़ाई को पार करते हुए नेस्टेड लूप चलाएं।

  • getRGB() विधि का उपयोग करके हर बिंदु पर पिक्सेल मान प्राप्त करें।

  • पिक्सेल मान को पैरामीटर के रूप में पास करके कलर ऑब्जेक्ट को इंस्टेंट करें।

  • क्रमशः getRed (), getGreen () और getBlue () विधियों का उपयोग करके लाल, हरा, नीला मान प्राप्त करें।

उदाहरण

जावा के बाद, उदाहरण एक छवि के प्रत्येक पिक्सेल की सामग्री को पढ़ता है और एक फ़ाइल में RGB मान लिखता है -

import java.io.File;
import java.io.FileWriter;
import java.awt.Color;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
public class GetPixels {
   public static void main(String args[])throws Exception {
      FileWriter writer = new FileWriter("D:\\Images\\pixel_values.txt");
      //Reading the image
      File file= new File("D:\\Images\\cat.jpg");
      BufferedImage img = ImageIO.read(file);
      for (int y = 0; y < img.getHeight(); y++) {
         for (int x = 0; x < img.getWidth(); x++) {
            //Retrieving contents of a pixel
            int pixel = img.getRGB(x,y);
            //Creating a Color object from pixel value
            Color color = new Color(pixel, true);
            //Retrieving the R G B values
            int red = color.getRed();
            int green = color.getGreen();
            int blue = color.getBlue();
            writer.append(red+":");
            writer.append(green+":");
            writer.append(blue+"");
            writer.append("\n");
            writer.flush();
         }
      }
      writer.close();
      System.out.println("RGB values at each pixel are stored in the specified file");
   }
}

आउटपुट

RGB values at each pixel are stored in the specified file

आप शिफ्ट ऑपरेटरों का उपयोग करके पिक्सेल से RGB मान भी प्राप्त कर सकते हैं -

ऐसा करने के लिए -

  • दाएं, प्रत्येक रंग की शुरुआती स्थिति में शिफ्ट करें यानी लाल रंग के लिए अल्फा 16 के लिए 24, आदि।

  • शिफ्ट राइट ऑपरेशन अन्य चैनलों के मूल्यों को प्रभावित कर सकता है, इससे बचने के लिए, आपको बिटवाइज़ और 0Xff के साथ संचालन करने की आवश्यकता है। यह वेरिएबल को अंतिम 8 बिट्स को छोड़कर बाकी सभी बिट्स को अनदेखा कर देता है।

int p = img.getRGB(x, y);
//Getting the A R G B values from the pixel value
int a = (p>>24)&0xff;
int r = (p>>16)&0xff;
int g = (p>>8)&0xff;
int b = p&0xff;

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

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

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

    एक पिक्सेल एक डिजिटल छवि का सबसे छोटा तत्व है, प्रत्येक पिक्सेल में अल्फा, लाल, हरे, नीले मान के मान होते हैं। पिक्सेल मान (मानों) को उसी क्रम में ARGB मान (प्रत्येक में 8 बिट) रखने वाले 32-बिट मेमोरी स्पेस में संग्रहीत किया जाता है। इसलिए, इमेज का रंग बदलने के लिए - आपको छवि के प्रत्येक पिक्सेल

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

    OpenCV लाइब्रेरी का उपयोग करके आप इमेज प्रोसेसिंग ऑपरेशन जैसे इमेज फिल्टरिंग, ज्योमेट्रिकल इमेज ट्रांसफॉर्मेशन, कलर स्पेस कन्वर्जन, हिस्टोग्राम आदि कर सकते हैं। इमेज लिखना जब भी आप Imgcodecs वर्ग की imread() पद्धति का उपयोग करके किसी छवि की सामग्री को पढ़ते हैं तो परिणाम मैट्रिक्स ऑब्जेक्ट में पढ़ा