কম্পিউটার

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


একটি পিক্সেল একটি ডিজিটাল চিত্রের ক্ষুদ্রতম উপাদান, প্রতিটি পিক্সেলে আলফা, লাল, সবুজ, নীল মানের মান রয়েছে। পিক্সেল মান (গুলি) একই ক্রমে ARGB মান (প্রতিটি 8 বিট) ধরে একটি 32-বিট মেমরি স্পেসে সংরক্ষণ করা হয়। অতএব, একটি চিত্রের রঙ পরিবর্তন করতে -

  • আপনাকে চিত্রের প্রতিটি পিক্সেলের মধ্য দিয়ে লুপ করতে হবে।

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

  • পিক্সেল মান থেকে ARGB মান পুনরুদ্ধার করুন।

  • RGB মানগুলিতে প্রয়োজনীয় পরিবর্তনগুলি সম্পাদন করুন৷

  • পরিবর্তিত RGB মান দিয়ে একটি নতুন পিক্সেল মান তৈরি করুন।

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

ARGB মান সেট করা হচ্ছে −

একটি প্যারামিটার হিসাবে পিক্সেল মান পাস করে কালার অবজেক্টটিকে ইনস্ট্যান্টিয়েট করুন। যথাক্রমে getRed(), getGreen() এবং getBlue() পদ্ধতি ব্যবহার করে লাল, সবুজ, নীল মানগুলি পান। পরিবর্তনের পরে মানগুলিকে আবার সেট করতে −

  • নতুন RGB মানগুলিকে প্যারামিটার হিসাবে বাইপাস করে একটি রঙিন বস্তু তৈরি করুন৷

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

  • setRGB() পদ্ধতিতে নতুন পিক্সেল মান সহ x এবং y অবস্থান পাস করে ছবিতে নতুন পিক্সেল মান সেট করুন।

উদাহরণ

import java.io.File;
import java.io.IOException;
import java.awt.Color;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
public class SetPixels {
   public static void main(String args[])throws IOException {
      //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();
            //Modifying the RGB values
            green = 150;
            blue = 150;
            //Creating new Color object
            color = new Color(red, green, blue);
            //Setting new Color object to the image
            img.setRGB(x, y, color.getRGB());
         }
      }
      //Saving the modified image
      file = new File("D:\\Images\\setting_pixels.jpg");
      ImageIO.write(img, "jpg", file);
      System.out.println("Done...");
   }
}

ইনপুট

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

আউটপুট

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

শিফট অপারেটর ব্যবহার করে ARGB মান সেট করা -

একটি পিক্সেল থেকে প্রতিটি মান পুনরুদ্ধার করার জন্য আপনাকে প্রতিটি রঙের শুরুর অবস্থানে ডানদিকে স্থানান্তর করতে হবে অর্থাৎ লাল ইত্যাদির জন্য আলফা 16 এর জন্য 24 এবং 0Xff এর সাথে বিটওয়াইজ এবং অপারেশন সম্পাদন করতে হবে। এটি ভেরিয়েবলটিকে শেষ 8 বিট ছেড়ে বাকি সমস্ত বিট উপেক্ষা করে।

আপনি ARGB-কে তাদের নিজ নিজ অবস্থানে বামে সরিয়ে একটি পিক্সেল পুনর্গঠন করতে পারেন এবং bitwise OR ব্যবহার করে তাদের সাথে যোগ দিতে পারেন।

//Set new RGB value
p = (a<<24) | (r<<16) | (g<<8) | b;
img.setRGB(x, y, p);

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

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

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

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