কম্পিউটার টিউটোরিয়াল

Java OpenCV লাইব্রেরি ব্যবহার করে ইমেজের পিক্সেল (RGB মান) পাওয়ার পদ্ধতি

একটি ডিজিটাল ইমেজ পিক্সেলের একটি ২D অ্যারে হিসেবে স্টোর থাকে এবং একটি পিক্সেল হলো একটি ডিজিটাল ইমেজের সবচেয়ে ছোট এলিমেন্ট।

প্রতিটি পিক্সেলে আলফা, রেড, গ্রিন, ব্লু মান থাকে এবং প্রতিটি রঙের মান ০ থেকে ২৫৫ পর্যন্ত থাকে যা ৮ বিট (2^8) কনসাম করে।

ARGB মানগুলো ৪ বাইট মেমরিতে একই ক্রমে (রাইট টু লেফ্ট) স্টোর থাকে: ব্লু মান ০-৭ বিটে, গ্রিন মান ৮-১৫ বিটে, রেড মান ১৬-২৩ বিটে এবং আলফা ২৪-৩১ বিটে।

Java OpenCV লাইব্রেরি ব্যবহার করে ইমেজের পিক্সেল (RGB মান) পাওয়ার পদ্ধতি

ইমেজের পিক্সেল কন্টেন্ট (ARGB মান) রিট্রিভ করা

একটি ইমেজ থেকে পিক্সেল মান পাওয়ার জন্য:

  • ইমেজের প্রতিটি পিক্সেলের মাধ্যমে লুপ করুন। অর্থাৎ নেস্টেড লুপ চালান ইমেজের হাইট এবং প্রস্থ ট্রাভার্স করতে।
  • প্রতিটি পয়েন্টে getRGB() মেথড ব্যবহার করে পিক্সেল মান পান।
  • পিক্সেল মান পাস করে Color অবজেক্ট ইনস্ট্যানশিয়েট করুন।
  • 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");
        
        // ইমেজ পড়া
        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++) {
                // পিক্সেলের কন্টেন্ট রিট্রিভ
                int pixel = img.getRGB(x, y);
                
                // পিক্সেল মান থেকে Color অবজেক্ট তৈরি
                Color color = new Color(pixel, true);
                
                // R G B মান রিট্রিভ
                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 মান রিট্রিভ করতে পারেন:

তা করতে:

  • প্রতিটি রঙের শুরুর পজিশনে রাইট শিফট করুন: আলফার জন্য ২৪, রেডের জন্য ১৬, ইত্যাদি।
  • রাইট শিফট অপারেশন অন্য চ্যানেলের মান প্রভাবিত করতে পারে, এটিই এড়াতে আপনাকে 0Xff দিয়ে বিটওয়াইজ AND অপারেশন করতে হবে। এটি ভেরিয়েবলকে মাস্ক করে, শেষ ৮ বিট ছাড়া সব বিট ইগনোর করে।
int p = img.getRGB(x, y); // পিক্সেল মান থেকে A R G B মান পাওয়া
int a = (p>>24)&0xff;
int r = (p>>16)&0xff;
int g = (p>>8)&0xff;
int b = p&0xff;
  1. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে মিরর ইমেজ তৈরি

  2. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে 네가েটিভ চিত্রকে পজিটিভ চিত্রে রূপান্তর

  3. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে চিত্রের পিক্সেল (RGB মান) সেট/মডিফাই করা

  4. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে চিত্র লিখা/সংরক্ষণ