ক্যানি এজ ডিটেক্টরকে সর্বোত্তম ডিটেক্টর হিসাবে পরিচিত কারণ এটি শুধুমাত্র বিদ্যমান প্রান্তগুলি সনাক্ত করে, প্রতি পৃষ্ঠায় শুধুমাত্র একটি প্রতিক্রিয়া দেয় এবং প্রান্ত পিক্সেল এবং সনাক্ত করা পিক্সেলের মধ্যে দূরত্ব কমিয়ে দেয়৷
দ্য ক্যানি()৷ Imgproc ক্লাসের পদ্ধতি প্রদত্ত ছবিতে ক্যানি এজ ডিটেকশন অ্যালগরিদম প্রয়োগ করে। এই পদ্ধতি গ্রহণ করে -
-
উৎস এবং গন্তব্য চিত্রের প্রতিনিধিত্বকারী দুটি ম্যাট বস্তু।
-
থ্রেশহোল্ড মান ধরে রাখতে দুটি ডবল ভেরিয়েবল।
ক্যানি এজ ডিটেক্টর -
ব্যবহার করে একটি প্রদত্ত চিত্রের প্রান্ত সনাক্ত করতে-
imread() ব্যবহার করে উৎস চিত্রের বিষয়বস্তু পড়ুন Imgcodecs এর পদ্ধতি ক্লাস।
-
cvtColor() ব্যবহার করে এটিকে একটি ধূসর স্কেল ছবিতে রূপান্তর করুন Imgproc এর পদ্ধতি ক্লাস।
-
blur() ব্যবহার করে ফলস্বরূপ (ধূসর) ছবি অস্পষ্ট করুন Imgproc এর পদ্ধতি কার্নেল মান 3 সহ ক্লাস।
-
canny() ব্যবহার করে ঝাপসা ছবিতে ক্যানি প্রান্ত সনাক্তকরণ অ্যালগরিদম প্রয়োগ করুন Imgproc এর পদ্ধতি .
-
0 হিসাবে সমস্ত মান সহ একটি খালি ম্যাট্রিক্স তৈরি করুন।
-
copyTo() ব্যবহার করে শনাক্ত করা প্রান্ত যোগ করুন ম্যাটের পদ্ধতি ক্লাস।
উদাহরণ
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.Scalar; import org.opencv.core.Size; import org.opencv.highgui.HighGui; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; public class EdgeDetection extends Application { public void start(Stage stage) throws IOException { //Loading the OpenCV core library System.loadLibrary( Core.NATIVE_LIBRARY_NAME ); String file ="D:\\Images\\win2.jpg"; Mat src = Imgcodecs.imread(file); //Creating an empty matrices to store edges, source, destination Mat gray = new Mat(src.rows(), src.cols(), src.type()); Mat edges = new Mat(src.rows(), src.cols(), src.type()); Mat dst = new Mat(src.rows(), src.cols(), src.type(), new Scalar(0)); //Converting the image to Gray Imgproc.cvtColor(src, gray, Imgproc.COLOR_RGB2GRAY); //Blurring the image Imgproc.blur(gray, edges, new Size(3, 3)); //Detecting the edges Imgproc.Canny(edges, edges, 100, 100*3); //Copying the detected edges to the destination matrix src.copyTo(dst, edges); //Converting matrix to JavaFX writable image Image img = HighGui.toBufferedImage(dst); WritableImage writableImage= SwingFXUtils.toFXImage((BufferedImage) img, null); //Setting the image view ImageView imageView = new ImageView(writableImage); imageView.setX(10); imageView.setY(10); imageView.setFitWidth(575); imageView.setPreserveRatio(true); //Setting the Scene object Group root = new Group(imageView); Scene scene = new Scene(root, 595, 400); stage.setTitle("Gaussian Blur Example"); stage.setScene(scene); stage.show(); } public static void main(String args[]) { launch(args); } }
ইনপুট ছবি
আউটপুট
কার্যকর করার সময়, উপরেরটি নিম্নলিখিত আউটপুট তৈরি করে −