मेरे पास एक छवि है और इसमें कुछ आकार हैं। मैंने आटा लाइनों का उपयोग करने के साथ लाइनों का पता लगाया। मैं कैसे पता लगा सकता हूं कि कौन सी रेखाएं समानांतर हैं?पायथन ओपनसीवी समांतर रेखाओं का पता लगाता है
उत्तर
कार्तीय निर्देशांक में एक लाइन का समीकरण:
y = कश्मीर * x + b
दो लाइनें y = k1 * x + बी 1, y = k2 * x + b2 हैं समानांतर, अगर k1 = k2।
तो आपको प्रत्येक ज्ञात रेखा के लिए गुणांक की गणना करने की आवश्यकता है।
आदेश में के लिए विशिष्ट रूप एक लाइन आप दो अंक कि लाइन के हैं के निर्देशांक जानने की जरूरत के समीकरण की पहचान।
HoughLines (С ++) के साथ पाया लाइनों होने के बाद:
vector<Vec2f> lines;
HoughLines(dst, lines, 1, CV_PI/180, 100, 0, 0);
आप वेक्टर लाइनों, जो ध्रुवीय निर्देशांक में पता चला लाइनों के मापदंडों (आर, थीटा) संग्रहीत करता है। आप उन्हें कार्तीय निर्देशांक में स्थानांतरित करने की आवश्यकता: C++
यहाँ उदाहरण:
for(size_t i = 0; i < lines.size(); i++)
{
float rho = lines[i][0], theta = lines[i][1];
Point pt1, pt2;
double a = cos(theta), b = sin(theta);
double x0 = a*rho, y0 = b*rho;
pt1.x = cvRound(x0 + 1000*(-b)); //the first point
pt1.y = cvRound(y0 + 1000*(a)); //the first point
pt2.x = cvRound(x0 - 1000*(-b)); //the second point
pt2.y = cvRound(y0 - 1000*(a)); //the second point
}
के बाद एक लाइन के इन दो अंक मिले होने आप अपने समीकरण गणना कर सकते हैं।
हौफलाइन अपने परिणाम ध्रुवीय निर्देशांक में लौटाते हैं। तो बस कोण के लिए दूसरा मान देखें। इस, अजगर में किया जाता है के रूप में टैग में कहा गया है एक्स में बदलने का कोई ज़रूरत नहीं करने के लिए, वाई
def findparallel(lines):
lines1 = []
for i in range(len(lines)):
for j in range(len(lines)):
if (i == j):continue
if (abs(lines[i][1] - lines[j][1]) == 0):
#You've found a parallel line!
lines1.append((i,j))
return lines1
- 1. ओपनसीवी एमएसईआर टेक्स्ट क्षेत्रों का पता लगाता है - पायथन
- 2. ओपनसीवी समरूप चौराहे का पता लगाता है
- 3. ओपनसीवी हाथ का पता लगाने?
- 4. जावा हैशैप टकराव का पता लगाता है
- 5. पायथन: समांतर
- 6. पायथन, समांतर
- 7. पायथन ओपनसीवी के साथ हौफलाइन के साथ एक छवि में ऊर्ध्वाधर और क्षैतिज रेखाओं का पता लगाने के लिए कैसे?
- 8. ओपनसीवी-पायथन
- 9. RegularExpressionValidator खाली तारों का पता नहीं लगाता
- 10. एडीबी एंड्रॉइड डिवाइस का पता नहीं लगाता
- 11. पायथन और ओपनसीवी - मेरे लेन का पता लगाने एल्गोरिदम
- 12. पायथन ओपनसीवी - छोटे "छेद" (सर्कल) का पता लगाने में समस्या
- 13. आकृति का पता लगाने - ओपनसीवी
- 14. ओपनसीवी त्वचा का पता लगाने
- 15. जावास्क्रिप्ट का पता लगाता है कि इनपुट केंद्रित है
- 16. ओपनसीवी (पायथन)
- 17. व्यूपार्जर पता लगाता है कि उपयोगकर्ता
- 18. jQuery एनीमेशन एनिमेटिंग अगर पता लगाता है?
- 19. ओपनसीवी + पायथन
- 20. पायथन ओपनसीवी
- 21. ओपनसीवी-पायथन
- 22. ओपनसीवी पायथन
- 23. ओपनसीवी पायथन
- 24. ओपनसीवी/पायथन
- 25. ओपनसीवी/पायथन
- 26. जावा फाइल सिस्टम में परिवर्तन का पता लगाता है
- 27. आईओएस वाईफ़ाई हॉटस्पॉट या ब्लूटूथ डिवाइस का पता लगाता है
- 28. गिथब कैसे प्रतिबिंबित भंडारों का पता लगाता है?
- 29. एमकेपोलीलाइन स्वयं-अंतरण रेखा का पता लगाता है उद्देश्य C
- 30. वर्चुअलबॉक्स मेरे एंड्रॉइड डिवाइस का पता क्यों नहीं लगाता है?
, आप जो houghspace उत्पादन छवि प्रदान करता है houghlines की scipy संस्करण का उपयोग कर सकते हैं: यहाँ देखें] (http://scikit-image.org/docs/dev/auto_examples/plot_line_hough_transform.html)। फिर आप स्वतंत्र धुरी (थेटा या 'एक्स') और आश्रित अक्ष (rho या 'y') को फ्लिप कर सकते हैं जैसे कि थेटा अब निर्भर अक्ष है। इस हौ स्पेस छवि को थ्रेसहोल्ड करने के बाद (सबसे अधिक संभावना वाले रेखाओं के अनुरूप (rho, theta) के सबसे तीव्र धब्बे प्राप्त करने के लिए), आप डेटा पर एक क्षैतिज रेखा फिट कर सकते हैं: theta = constant (y = mx + b कोई ढलान नहीं)। आपके समाधान के लिए – chase