কম্পিউটার

জাভা ওপেনসিভি লাইব্রেরি ব্যবহার করে ইমেজ কনট্যুরস কীভাবে খুঁজে পাবেন?


কোনট্যুরগুলি একটি নির্দিষ্ট আকৃতির সীমানা বরাবর সমস্ত বিন্দুকে যুক্ত করা রেখা ছাড়া কিছুই নয়৷ এটি ব্যবহার করে আপনি −

করতে পারেন
  • একটি বস্তুর আকৃতি খুঁজুন।

  • একটি বস্তুর ক্ষেত্রফল গণনা করুন।

  • একটি বস্তু সনাক্ত করুন৷

  • একটি বস্তু চিনুন।

আপনি findContours() ব্যবহার করে একটি চিত্রের বিভিন্ন আকার, বস্তুর কনট্যুর খুঁজে পেতে পারেন পদ্ধতি এই পদ্ধতিটি নিম্নলিখিত পরামিতিগুলি গ্রহণ করে −

  • একটি বাইনারি ছবি।

  • MatOfPoint ধরনের একটি খালি তালিকা বস্তু কনট্যুর সংরক্ষণ করতে।

  • ইমেজ টপোলজি সঞ্চয় করার জন্য একটি খালি ম্যাট অবজেক্ট।

  • প্রদত্ত ছবির কনট্যুর খুঁজে বের করার জন্য মোড এবং পদ্ধতি নির্দিষ্ট করার জন্য দুটি পূর্ণসংখ্যার ভেরিয়েবল।

উদাহরণ

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint;
import org.opencv.core.Scalar;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class FindingContours {
   public static void main(String args[]) throws Exception {
      //Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      String file ="D:\\Images\\shapes.jpg";
      Mat src = Imgcodecs.imread(file);
      //Converting the source image to binary
      Mat gray = new Mat(src.rows(), src.cols(), src.type());
      Imgproc.cvtColor(src, gray, Imgproc.COLOR_BGR2GRAY);
      Mat binary = new Mat(src.rows(), src.cols(), src.type(), new Scalar(0));
      Imgproc.threshold(gray, binary, 100, 255, Imgproc.THRESH_BINARY_INV);
      //Finding Contours
      List<MatOfPoint> contours = new ArrayList<>();
      Mat hierarchey = new Mat();
      Imgproc.findContours(binary, contours, hierarchey, Imgproc.RETR_TREE,
      Imgproc.CHAIN_APPROX_SIMPLE);
      Iterator<MatOfPoint> it = contours.iterator();
      while(it.hasNext()) {
         System.out.println(it.next());
      }
      /*
      Mat draw = Mat.zeros(binary.size(), CvType.CV_8UC3);
      for (int i = 0; i < contours.size(); i++) {
         System.out.println(contours);
         Scalar color = new Scalar(0, 0, 255);
         //Drawing Contours
         Imgproc.drawContours(draw, contours, i, color, 2, Imgproc.LINE_8, hierarchey, 2, new Point() ) ;
      }
      HighGui.imshow("Contours operation", draw);
      HighGui.waitKey();
      */
   }
}

আউটপুট

Mat [ 29*1*CV_32SC2, isCont=true, isSubmat=false, nativeObj=0x19829510,
dataAddr=0x19826dc0 ]
Mat [ 58*1*CV_32SC2, isCont=true, isSubmat=false, nativeObj=0x19829580,
dataAddr=0x19826f00 ]
Mat [ 35*1*CV_32SC2, isCont=true, isSubmat=false, nativeObj=0x19828be0,
dataAddr=0x19827100 ]
Mat [ 117*1*CV_32SC2, isCont=true, isSubmat=false, nativeObj=0x19829190,
dataAddr=0x19827280 ]
Mat [ 1*1*CV_32SC2, isCont=true, isSubmat=false, nativeObj=0x198292e0,
dataAddr=0xba8280 ]
Mat [ 78*1*CV_32SC2, isCont=true, isSubmat=false, nativeObj=0x19829350,
dataAddr=0x19827680 ]
Mat [ 63*1*CV_32SC2, isCont=true, isSubmat=false, nativeObj=0x198289b0,
dataAddr=0x19827940 ]
Mat [ 120*1*CV_32SC2, isCont=true, isSubmat=false, nativeObj=0x19828e80,
dataAddr=0x19827b80 ]
Mat [ 4*1*CV_32SC2, isCont=true, isSubmat=false, nativeObj=0x19829430,
dataAddr=0xb84580 ]
Mat [ 4*1*CV_32SC2, isCont=true, isSubmat=false, nativeObj=0x19829120,
dataAddr=0xb84440 ]
Mat [ 136*1*CV_32SC2, isCont=true, isSubmat=false, nativeObj=0x19828ef0,
dataAddr=0x19827f80 ]
Mat [ 120*1*CV_32SC2, isCont=true, isSubmat=false, nativeObj=0x19828b00,
dataAddr=0x19828440 ]

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

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

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

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