आप किसी दिए गए चित्र में Hough लाइन ट्रांसफ़ॉर्म का उपयोग करके सीधी रेखाओं का पता लगा सकते हैं। OpenCV में दो प्रकार के Hough Line Transforms उपलब्ध हैं, जैसे कि Standard Hough लाइन ट्रांसफ़ॉर्म और, Probabilistic Hough Line Transform.
आप संभाव्य हफ़ लाइन ट्रांसफ़ॉर्म apply लागू कर सकते हैं HoughLinesP() . का उपयोग करके Imgproc वर्ग की विधि, यह विधि निम्नलिखित मापदंडों को स्वीकार करती है -
-
स्रोत छवि और वेक्टर का प्रतिनिधित्व करने वाली दो मैट ऑब्जेक्ट्स जो लाइनों के पैरामीटर (आर, Φ) को स्टोर करती हैं।
-
पैरामीटर r (पिक्सेल) और Φ (रेडियन) के रिज़ॉल्यूशन का प्रतिनिधित्व करने वाले दो दोहरे चर।
-
एक पूर्णांक जो किसी रेखा को "पता लगाने" के लिए चौराहों की न्यूनतम संख्या को दर्शाता है।
उदाहरण
निम्नलिखित जावा उदाहरण OpenCV में संभाव्य हफ़ लाइन ट्रांसफ़ॉर्म का उपयोग करके एक छवि में लाइनों का पता लगाता है -
आयात करें javafx.scene.Scene आयात करें आयात करें सार्वजनिक शून्य प्रारंभ (चरण चरण) 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.HoughLinesP(किनारों, रेखाएं, 1, Math.PI/180, 50, 50, 10); for (int i =0; iइनपुट इमेज
आउटपुट
निष्पादित करने पर, उपरोक्त निम्नलिखित आउटपुट उत्पन्न करता है -