কম্পিউটার

কিভাবে জাভা OpenCV লাইব্রেরি ব্যবহার করে একটি ছবির পিক্সেল (RGB মান) পেতে হয়?


একটি ডিজিটাল ছবি পিক্সেলের 2D অ্যারে হিসাবে সংরক্ষণ করা হয় এবং একটি পিক্সেল হল একটি ডিজিটাল চিত্রের ক্ষুদ্রতম উপাদান৷

প্রতিটি পিক্সেলে আলফা, লাল, সবুজ, নীল মানের মান রয়েছে এবং প্রতিটি রঙের মান 0 থেকে 255 এর মধ্যে থাকে যা 8 বিট (2^8) ব্যবহার করে।

ARGB মানগুলি একই ক্রমে (ডান থেকে বামে) মেমরির 4 বাইটে সংরক্ষিত হয় যার সাথে নীল মান 0-7 বিটে, সবুজ মান 8-15 বিটে, লাল মান 16-23 বিটে এবং আলফা 24-31 এ বিট।

কিভাবে জাভা OpenCV লাইব্রেরি ব্যবহার করে একটি ছবির পিক্সেল (RGB মান) পেতে হয়?

একটি ছবির পিক্সেল বিষয়বস্তু (ARGB মান) পুনরুদ্ধার করা −

একটি ছবি থেকে পিক্সেল মান পেতে -

  • ইমেজ প্রতিটি পিক্সেল মাধ্যমে লুপ. অর্থাৎ চিত্রের উচ্চতা এবং প্রস্থ অতিক্রম করে নেস্টেড লুপ চালান।

  • getRGB() পদ্ধতি ব্যবহার করে প্রতিটি পয়েন্টে পিক্সেল মান পান।

  • একটি প্যারামিটার হিসাবে পিক্সেল মান পাস করে কালার অবজেক্টকে ইনস্ট্যান্টিয়েট করুন।

  • যথাক্রমে getRed(), getGreen() এবং getBlue() পদ্ধতি ব্যবহার করে লাল, সবুজ, নীল মানগুলি পান৷

উদাহরণ

জাভা অনুসরণ করে, উদাহরণটি একটি চিত্রের প্রতিটি পিক্সেলের বিষয়বস্তু পড়ে এবং একটি ফাইলে আরজিবি মানগুলি লিখে −

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

আপনি শিফট অপারেটর ব্যবহার করে পিক্সেল থেকে আরজিবি মান পুনরুদ্ধার করতে পারেন -

তা করতে -

  • ডানদিকে, প্রতিটি রঙের প্রারম্ভিক অবস্থানে স্থানান্তর করুন যেমন লালের জন্য আলফা 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. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে কীভাবে একটি মিরর ইমেজ তৈরি করবেন?

  2. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে একটি নেতিবাচক চিত্রকে ইতিবাচক ছবিতে রূপান্তর করবেন কীভাবে?

  3. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে একটি চিত্রের পিক্সেল (আরজিবি মান) কীভাবে সেট/পরিবর্তন করবেন?

  4. কিভাবে জাভা OpenCV লাইব্রেরি ব্যবহার করে একটি ছবি লিখতে হয়?