কম্পিউটার

কীভাবে ওপেনসিভি ম্যাট অবজেক্টকে জাভা ব্যবহার করে বাফারেড ইমেজ অবজেক্টে রূপান্তর করবেন?


আপনি যদি OpenCV imread() ব্যবহার করে একটি ছবি পড়ার চেষ্টা করেন পদ্ধতি এটি একটি ম্যাট বস্তু প্রদান করে। আপনি যদি AWT/Swings উইন্ডো ব্যবহার করে ফলাফলের ম্যাট অবজেক্টের বিষয়বস্তু প্রদর্শন করতে চান তাহলে আপনাকে ম্যাট অবজেক্টটিকে java.awt.image.BufferedImage ক্লাসের একটি অবজেক্টে রূপান্তর করতে হবে। এটি করার জন্য, আপনাকে নীচে দেওয়া পদক্ষেপগুলি অনুসরণ করতে হবে -

  • MatOfByte-এ ম্যাট এনকোড করুন − প্রথমত, আপনাকে ম্যাট্রিক্সকে একটি বাইটের ম্যাট্রিক্সে রূপান্তর করতে হবে। আপনি Imgcodecs ক্লাসের imencode() পদ্ধতি ব্যবহার করে এটি করতে পারেন।

    এই পদ্ধতিটি একটি স্ট্রিং প্যারামিটার (ছবির বিন্যাস নির্দিষ্ট করে), একটি ম্যাট অবজেক্ট (ছবির প্রতিনিধিত্ব করে), একটি MatOfByte অবজেক্ট গ্রহণ করে।

  • MatOfByte অবজেক্টকে বাইট অ্যারেতে রূপান্তর করুন − MatOfByte বস্তুটিকে একটি বাইট অ্যারেতে রূপান্তর করুন toArray() পদ্ধতি ব্যবহার করে।

  • ইনস্ট্যান্টিয়েট ByteArrayInputStream − পূর্ববর্তী ধাপে তৈরি করা বাইট অ্যারেটি এর একজন কনস্ট্রাক্টরের কাছে পাস করে ByteArrayInputStream ক্লাসটি চালু করুন৷

  • বাফারড ইমেজ অবজেক্ট তৈরি করা হচ্ছে − পূর্ববর্তী ধাপে তৈরি করা ইনপুট স্ট্রিম অবজেক্টটিকে 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{
      //Encoding the image
      MatOfByte matOfByte = new MatOfByte();
      Imgcodecs.imencode(".jpg", mat, matOfByte);
      //Storing the encoded Mat in a byte array
      byte[] byteArray = matOfByte.toArray();
      //Preparing the Buffered Image
      InputStream in = new ByteArrayInputStream(byteArray);
      BufferedImage bufImage = ImageIO.read(in);
      return bufImage;
   }
   public static void main(String args[]) throws Exception {
      //Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      //Reading the Image from the file
      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. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে কীভাবে আরজিবি ইমেজকে এইচএসভিতে রূপান্তর করবেন?

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

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

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