आप किसी दिए गए चित्र में हफ़ लाइन ट्रांसफ़ॉर्म का उपयोग करके सीधी रेखाओं का पता लगा सकते हैं। OpenCV में दो प्रकार के Hough लाइन ट्रांसफ़ॉर्म उपलब्ध हैं, जैसे कि Standard Hough लाइन ट्रांसफ़ॉर्म और, Probabilistic Hough Line Transform.
आप स्टैंडर्ड हफ़ लाइन ट्रांसफ़ॉर्म लागू कर सकते हैं HoughLines() . का उपयोग करके Imgproc वर्ग की विधि। यह विधि स्वीकार करती है -
-
स्रोत छवि और वेक्टर का प्रतिनिधित्व करने वाली दो मैट ऑब्जेक्ट्स जो लाइनों के पैरामीटर (आर, Φ) को स्टोर करती हैं।
-
पैरामीटर r (पिक्सेल) और Φ (रेडियन) के रिज़ॉल्यूशन का प्रतिनिधित्व करने वाले दो दोहरे चर।
-
एक पूर्णांक जो किसी रेखा को "पता लगाने" के लिए चौराहों की न्यूनतम संख्या को दर्शाता है।
आप संभाव्य हफ़ लाइन ट्रांसफ़ॉर्म . लागू कर सकते हैं HoughLinesP() . का उपयोग करके Imgproc वर्ग की विधि (समान पैरामीटर)
आप कैनी () . का उपयोग करके किसी दिए गए चित्र में किनारों का पता लगा सकते हैं Imgproc वर्ग की विधि। यह विधि स्वीकार करती है -
-
स्रोत और गंतव्य छवियों का प्रतिनिधित्व करने वाली दो मैट ऑब्जेक्ट।
-
थ्रेशोल्ड मान रखने के लिए दो दोहरे चर।
कैनी एज डिटेक्टर का उपयोग करके किसी दिए गए चित्र के किनारों का पता लगाने के लिए -
-
imread() . का उपयोग करके स्रोत छवि की सामग्री पढ़ें Imgcodecs . की विधि कक्षा।
-
cvtColor() . का इस्तेमाल करके इसे ग्रेस्केल इमेज में बदलें Imgproc . की विधि कक्षा।
-
धुंधला () . का उपयोग करके परिणामी (धूसर) छवि को धुंधला करें कर्नेल मान 3 के साथ Imgproc वर्ग की विधि।
-
canny() . का उपयोग करके धुंधली छवि पर कैनी एज डिटेक्शन एल्गोरिथम लागू करें Imgproc . की विधि ।
-
0 के रूप में सभी मानों के साथ एक खाली मैट्रिक्स बनाएं।
-
इसमें पाए गए किनारों को copyTo() . का उपयोग करके जोड़ें चटाई . की विधि कक्षा।
उदाहरण
आयात करें javafx.scene.Scene आयात करें आयात करें .Imgproc;पब्लिक क्लास HoughLineTransform एप्लिकेशन का विस्तार करता है {सार्वजनिक शून्य प्रारंभ (स्टेज चरण) IOException फेंकता है {// OpenCV कोर लाइब्रेरी लोड हो रहा है System.loadLibrary (Core.NATIVE_LIBRARY_NAME); स्ट्रिंग फ़ाइल ="D:\\Images\\road4.jpg"; मैट स्रोत =Imgcodecs.imread (फ़ाइल); // छवि को ग्रे मैट ग्रे =नई मैट () में परिवर्तित करना; Imgproc.cvtColor(src, धूसर, Imgproc.COLOR_RGBA2GRAY); // किनारों का पता लगाना मैट किनारों =नया मैट (); Imgproc.Canny (ग्रे, किनारों, 60, 60*3, 3, असत्य); // कैनी मैट कैनीकलर का रंग बदलना =नया मैट (); Imgproc.cvtColor (किनारों, cannyColor, Imgproc.COLOR_GRAY2BGR); // (कैनी) मैट लाइनों =नई मैट () से हफ़ लाइनों का पता लगाना; Imgproc.HoughLines(किनारों, रेखाएं, 1, Math.PI/180, 150); for (int i =0; iइनपुट छवि
आउटपुट
निष्पादित करने पर, उपरोक्त निम्नलिखित आउटपुट उत्पन्न करता है -