में सुधार मुझे एक वीडियो से सड़क लेन का पता लगाने की आवश्यकता होगी। इसे करने का मेरा तरीका यहां है।पायथन और ओपनसीवी - मेरे लेन का पता लगाने एल्गोरिदम
- ब्याज (आरओआई) के क्षेत्र का निर्धारण छवि (मध्य भाग ध्यान केंद्रित)
- ग्रेस्केल आरओआई
- Equalized
cv2.equalizeHist
- साथ grayscaled लागत पर लाभ के लिए (3) गाऊसी कलंक लागू करने की क्रिया के द्वारा
- थ्रेसहोल्ड (4) द्वारा
skimage.morphology.skeletonize
- का उपयोग कर लागू 012,323 से
cv2.adaptiveThreshold
- छोटे से छोटा करना (5) का उपयोग करते हुए(6)
cv2.HoughLines
के लिए पर, मैं इतना की स्थापना की है कि:
- तो
rho
सकारात्मक है (जिसका अर्थ है सीधी रेखा सही (नीचे-ऊपर) के लिए झुका हुआ है, यह होगा केवल लाइन को खींचें यदि यह कुछ कोणों पर है (मैंने कोण की सीमा निर्धारित की है)) - यदि
rho
नकारात्मक है (सीधी रेखा बाईं ओर (नीचे-ऊपर) ढलान है, तो यह केवल रेखा को खींच लेगी कुछ कोणों पर है)
यह लाइनों ड्राइंग के लिए मेरे कोड है:
lines = cv2.HoughLines(image_bin, 1, np.pi/180, 50)
try:
range = lines.shape[0]
except AttributeError:
range = 0
for i in xrange(range):
for rho, theta in lines[i]:
if rho > 0 and (np.pi*1/10 < theta < np.pi*4/10):
a = np.cos(theta)
b = np.sin(theta)
x0 = a * rho
y0 = b * rho
x1 = int(x0 + 1000 * (-b))
y1 = int(y0 + 1000 * (a))
x2 = int(x0 - 1000 * (-b))
y2 = int(y0 - 1000 * (a))
cv2.line(roi, (x1, y1), (x2, y2), (0, 255, 0))
if rho < 0 and (np.pi*7/10 < theta < np.pi*9/10):
a = np.cos(theta)
b = np.sin(theta)
x0 = a * rho
y0 = b * rho
x1 = int(x0 + 1000 * (-b))
y1 = int(y0 + 1000 * (a))
x2 = int(x0 - 1000 * (-b))
y2 = int(y0 - 1000 * (a))
cv2.line(roi, (x1, y1), (x2, y2), (0, 255, 0))
अगर मैं क्या मैं सिर्फ cv2.HoughLines
समारोह के लिए ऊपर किया नहीं किया, मेरा मानना है कि तैयार की अनावश्यक लाइनों का एक बहुत होगा।
पैरामीटर को समायोजित करने के बाद और मुझे, मुझे काफी अच्छा परिणाम मिला लेकिन यह केवल एक तस्वीर के लिए है। मुझे नहीं लगता कि यह एक ऐसे वीडियो के लिए अच्छा होगा जो बदलता रहेगा। मुझे आवश्यक लाइनों (जो सड़क लेन है) ड्राइंग के लिए मेरे एल्गोरिदम के बारे में सबसे ज्यादा परेशान करता है। क्या कोई बेहतर तरीका है? मेरे से कम से कम बेहतर।
यह मेरा परिणाम है:
Equalized हिस्टोग्राम, thresholded, और लागत पर लाभ की skeletonized छवि:
मैं लाइनों को कैसे सिलाई कर सकता हूं? क्षमा करें, अभी भी प्रोग्रामिंग और छवि प्रसंस्करण दोनों में एक शुरुआत है। – Hilman
मैंने कुछ नोट्स जोड़े। कोई कोड प्रदान नहीं करने के लिए खेद है। यह सी ++ में है, और विशेष कार्यान्वयन आपके से बहुत अलग है - मूल रूप से, मेरे पास आपके आवेदन के लिए इसे अनुकूलित करने के लिए पर्याप्त समय नहीं है। – Aenimated1