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

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


CascadeClassifier ক্লাস ক্লাসিফায়ার ফাইল লোড করতে এবং চিত্রে প্রাযন্তিক অবজেক্ট সনাক্ত করতে ব্যবহৃত হয়।

এই ক্লাসের detectMultiScale() মেথড বিভিন্ন আকারের একাধিক অবজেক্ট সনাক্ত করে। এই মেথড নিম্নলিখিত প্যারামিটার গ্রহণ করে:

  • Mat ক্লাসের একটি অবজেক্ট যা ইনপুট চিত্র ধারণ করে।

  • MatOfRect ক্লাসের একটি অবজেক্ট যা সনাক্ত করা মুখগুলি সংরক্ষণ করে।

চিত্রে মুখের সংখ্যা জানতে:

  • CascadeClassifier ক্লাস ব্যবহার করে lbpcascade_frontalface.xml ফাইল লোড করুন।

  • detectMultiScale() মেথড আহ্বান করুন।

  • MatOfRect অবজেক্টকে অ্যারেতে রূপান্তর করুন।

  • অ্যারের দৈর্ঘ্য হলো চিত্রে মুখের সংখ্যা।

উদাহরণ

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;

public class FaceDetection {
    public static void main(String[] args) {
        // ওপেনসিভি কোর লাইব্রেরি লোড করা হচ্ছে
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        
        // ফাইল থেকে ইমেজ পড়া হচ্ছে
        String file = "D:\\Images\\faces.jpg";
        Mat src = Imgcodecs.imread(file);
        
        // CascadeClassifier ইনস্ট্যানশিয়েট করা হচ্ছে
        String xmlFile = "lbpcascade_frontalface.xml";
        CascadeClassifier classifier = new CascadeClassifier(xmlFile);
        
        // স্ন্যাপশটে মুখ সনাক্ত করা হচ্ছে
        MatOfRect faceDetections = new MatOfRect();
        classifier.detectMultiScale(src, faceDetections);
        System.out.println(String.format("সনাক্ত করা মুখের সংখ্যা: %s", faceDetections.toArray().length));
        
        // বক্স আঁকা হচ্ছে
        for (Rect rect : faceDetections.toArray()) {
            Imgproc.rectangle(
                src,
                new Point(rect.x, rect.y),
                new Point(rect.x + rect.width, rect.y + rect.height),
                new Scalar(0, 0, 255),
                3
            );
        }
        
        // ইমেজ লেখা হচ্ছে
        Imgcodecs.imwrite("D:\\Images\\face_Detection.jpg", src);
        System.out.println("Image Processed");
    }
}

ইনপুট

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

আউটপুট

সনাক্ত করা মুখের সংখ্যা: 3

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

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

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

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