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

জাভা ব্যবহার করে ওপেনসিভিতে চিত্র কীভাবে ঘুরাবেন?


Imgproc ক্লাসের warpAffine() মেথড নির্দিষ্ট চিত্রে একটি অ্যাফাইন ট্রান্সফরমেশন প্রয়োগ করে। এই মেথড গ্রহণ করে:

  • তিনটি Mat অবজেক্ট যা সোর্স, ডেস্টিনেশন এবং ট্রান্সফরমেশন ম্যাট্রিক্স উপস্থাপন করে।

  • আউটপুট ইমেজের সাইজ উপস্থাপনকারী একটি ইন্টিজার ভ্যালু।

একটি ইমেজ ঘুরাতে একটি রোটেশন ম্যাট্রিক্স তৈরি করুন এবং অন্যান্য প্যারামিটারসহ এটিকে ট্রান্সফরমেশন ম্যাট্রিক্স হিসেবে এই মেথডে পাস করুন।

উদাহরণ

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javafx.application.Application;
import javafx.embed.swing.SwingFXUtils;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.ImageView;
import javafx.scene.image.WritableImage;
import javafx.stage.Stage;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Size;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class RotatingAnImage extends Application {
    public void start(Stage stage) throws IOException {
        // ওপেনসিভি কোর লাইব্রেরি লোড করা
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        
        // ইমেজ ডেটা পড়া
        String file = "D:\\Images\\elephant.jpg";
        Mat src = Imgcodecs.imread(file);
        
        // ডেস্টিনেশন ম্যাট্রিক্স তৈরি
        Mat dst = new Mat(src.rows(), src.cols(), src.type());
        
        // একটি Point অবজেক্ট তৈরি
        Point point = new Point(300, 200);
        
        // ট্রান্সফরমেশন ম্যাট্রিক্স তৈরি
        Mat rotationMatrix = Imgproc.getRotationMatrix2D(point, 30, 1);
        
        // Size ক্লাসের অবজেক্ট তৈরি
        Size size = new Size(src.cols(), src.cols());
        
        // প্রদত্ত ইমেজ ঘুরানো
        Imgproc.warpAffine(src, dst, rotationMatrix, size);
        
        // ম্যাট্রিক্সকে জাভाएফএক্স রাইটেবল ইমেজে রূপান্তর
        Image img = HighGui.toBufferedImage(dst);
        WritableImage writableImage = SwingFXUtils.toFXImage((BufferedImage) img, null);
        
        // ইমেজ ভিউ সেট করা
        ImageView imageView = new ImageView(writableImage);
        imageView.setX(10);
        imageView.setY(10);
        imageView.setFitWidth(575);
        imageView.setPreserveRatio(true);
        
        // Scene অবজেক্ট সেট করা
        Group root = new Group(imageView);
        Scene scene = new Scene(root, 595, 400);
        stage.setTitle("ইমেজ রোটেশন উদাহরণ");
        stage.setScene(scene);
        stage.show();
    }
    
    public static void main(String args[]) {
        launch(args);
    }
}

ইনপুট চিত্র

জাভা ব্যবহার করে ওপেনসিভিতে চিত্র কীভাবে ঘুরাবেন?

আউটপুট

উপরের প্রোগ্রাম এক্সিকিউট করার পর, এটি নিচের আউটপুট জেনারেট করে:

জাভা ব্যবহার করে ওপেনসিভিতে চিত্র কীভাবে ঘুরাবেন?


  1. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে চিত্রে মুখ সনাক্তকরণ

  2. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে চিত্র ফ্লিপ (Flip) করা

  3. জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে মিরর ইমেজ তৈরি

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