কোনট্যুরগুলি একটি নির্দিষ্ট আকৃতির সীমানা বরাবর সমস্ত বিন্দুকে যুক্ত করা রেখা ছাড়া কিছুই নয়৷ এটি ব্যবহার করে আপনি −
করতে পারেন-
একটি বস্তুর আকৃতি খুঁজুন।
-
একটি বস্তুর ক্ষেত্রফল গণনা করুন।
-
একটি বস্তু সনাক্ত করুন৷
৷ -
একটি বস্তু চিনুন।
আপনি 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 ]