विषयसूची:
- चरण 1: मान्यता प्राप्त वस्तु पर एक आयत बनाना
- चरण 2: उस पथ का पता लगाएं जिसमें वस्तु आगे बढ़ी है
- चरण 3: दोनों कोडों को एकीकृत करना
वीडियो: ओपनसीवी ऑब्जेक्ट ट्रैकिंग: 3 चरण
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:19
मूविंग ऑब्जेक्ट डिटेक्शन कंप्यूटर विज़न और इमेज प्रोसेसिंग में इस्तेमाल की जाने वाली तकनीक है। एक वीडियो से कई लगातार फ्रेम की तुलना विभिन्न तरीकों से की जाती है ताकि यह निर्धारित किया जा सके कि कोई चलती वस्तु का पता चला है या नहीं।
वीडियो निगरानी, गतिविधि पहचान, सड़क की स्थिति की निगरानी, हवाई अड्डे की सुरक्षा, समुद्री सीमा के साथ सुरक्षा की निगरानी आदि जैसे अनुप्रयोगों की विस्तृत श्रृंखला के लिए चलती वस्तुओं का पता लगाने का उपयोग किया गया है।
मूविंग ऑब्जेक्ट डिटेक्शन किसी दिए गए स्थान या क्षेत्र में किसी वस्तु की भौतिक गति को पहचानना है।[2] चलती वस्तुओं और स्थिर क्षेत्र या क्षेत्र के बीच कार्य विभाजन द्वारा, चलती वस्तुओं की गति को ट्रैक किया जा सकता है और इस प्रकार बाद में विश्लेषण किया जा सकता है। इसे प्राप्त करने के लिए, मान लें कि एक वीडियो एकल फ़्रेम पर निर्मित एक संरचना है, चलती वस्तु का पता लगाने के लिए अग्रभूमि चलती लक्ष्य (ओं) को खोजना है, या तो प्रत्येक वीडियो फ्रेम में या केवल जब चलती लक्ष्य वीडियो में पहली उपस्थिति दिखाता है।
मैं रंग के आधार पर वस्तुओं का पता लगाने और उन्हें ट्रैक करने के लिए Opnecv और Python संयोजन का उपयोग करने जा रहा हूँ
चरण 1: मान्यता प्राप्त वस्तु पर एक आयत बनाना
यदि आपके पीसी में अजगर या ओपनसीवी नहीं है तो कृपया नीचे दिए गए निर्देशों का पालन करें
यहाँ अजगर कोड है:
आयात cv2आयात numpy np. के रूप में
टोपी = cv2.वीडियो कैप्चर (0)
जबकि सच:
_, फ्रेम = कैप.रीड () hsv = cv2.cvtColor (फ्रेम, cv2. COLOR_BGR2HSV)
निचला_पीला = np.array ([२०, ११०, ११०])
अपर_येलो = एनपी.एरे ([४०, २५५, २५५])
येलो_मास्क = cv2.inरेंज (एचएसवी, लोअर_येलो, अपर_येलो)
(_, आकृति, _) = cv2.findContours(येलो_मास्क, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
समोच्च में समोच्च के लिए:
क्षेत्र = cv2.contourArea (समोच्च)
अगर (क्षेत्र> 800):
x, y, w, h = cv2.boundingRect(contour) फ्रेम = cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 0, 255), 10)
cv2.imshow ("ट्रैकिंग", फ्रेम)
k = cv2.waitKey(5) और 0XFF
अगर कश्मीर == 27: तोड़ो
cv2.destroyAllWindows ()
कैप.रिलीज ()
चरण 2: उस पथ का पता लगाएं जिसमें वस्तु आगे बढ़ी है
पथ का पता लगाने के लिए:
के लिए मैं श्रेणी में (1, लेन (center_points)): b = random.randint(230, 255) g = random.randint(100, 255) r = random.randint(100, 255) अगर math.sqrt(((center_points[i - 1][0] - center_points[0]) ** 2) + ((center_points[i - 1][1] - center_points[1]) ** 2)) <= 50: cv2.line (फ्रेम, केंद्र_बिंदु [i - 1], केंद्र_बिंदु , (बी, जी, आर), 4)
चरण 3: दोनों कोडों को एकीकृत करना
मैं दोनों कोड को एकीकृत करने जा रहा हूँ
आयात cv2आयात numpy np के रूप में संग्रह से यादृच्छिक आयात करें आयात deque
टोपी = cv2.वीडियो कैप्चर(1)
# उन सभी बिंदुओं पर नज़र रखने के लिए जहाँ ऑब्जेक्ट का दौरा किया गया था center_points = deque ()
जबकि सच:
# पढ़ें और फ्लिप करें फ्रेम _, फ्रेम = कैप। पढ़ें () फ्रेम = cv2.flip (फ्रेम, 1)
# फ्रेम को थोड़ा धुंधला करें
Blur_frame = cv2. GaussianBlur (फ़्रेम, (7, 7)), 0)
# बीजीआर से एचएसवी रंग प्रारूप में कनवर्ट करें
hsv = cv2.cvtColor (blur_frame, cv2. COLOR_BGR2HSV)
# पता लगाने के लिए एचएसवी रंग की निचली और ऊपरी सीमा को परिभाषित करें। यहाँ नीला
लोअर_ब्लू = एनपी.एरे ([१००, ५०, ५०]) अपर_ब्लू = एनपी.एरे ([१४०, २५५, २५५]) मास्क = cv2.inRange (एचएसवी, लोअर_ब्लू, अपर_ब्लू)
# अण्डाकार गिरी बनाएं
कर्नेल = cv2.getStructuringElement(cv2. MORPH_ELLIPSE, (15, 15))
# ओपनिंग मॉर्फ (कटाव के बाद फैलाव)
मुखौटा = cv2.morphologyEx (मुखौटा, cv2. MORPH_OPEN, कर्नेल)
# सभी रूपरेखा खोजें
आकृति, पदानुक्रम = cv2.findContours(mask.copy(), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE)[-2:]
अगर लेन (समोच्च)> 0:
# सबसे बड़ा समोच्च खोजें
# समोच्च के केंद्र का पता लगाएं और भरा हुआ वृत्त बनाएं
पल = cv2.moments(biggest_contour) center_of_contour = (int(moments['m10'] / पलों['m00']), int(moments['m01'] / पलों['m00'])) cv2.circle(फ्रेम, center_of_contour, 5, (0, 0, 255), -1)
# कंटूर को सर्कल से बांधें
अंडाकार = cv2.fitEllipse(biggest_contour) cv2.ellipse(फ्रेम, अंडाकार, (0, 255, 255), 2)
# समोच्च के केंद्र को बचाएं ताकि हम इसे ट्रैक करने वाली रेखा खींच सकें
center_points.appendleft(centre_of_contour)
# समोच्च के केंद्र बिंदुओं से रेखा खींचना
के लिए मैं श्रेणी में (1, लेन (center_points)): b = random.randint(230, 255) g = random.randint(100, 255) r = random.randint(100, 255) अगर math.sqrt(((center_points[i - 1][0] - center_points[0]) ** 2) + ((center_points[i - 1][1] - center_points[1]) ** 2)) <= 50: cv2.line (फ्रेम, केंद्र_बिंदु [i - 1], केंद्र_बिंदु , (बी, जी, आर), 4)
cv2.imshow ('मूल', फ्रेम)
cv2.imshow ('मुखौटा', मुखौटा)
k = cv2.waitKey(5) और 0xFF
अगर कश्मीर == 27: तोड़ो
cv2.destroyAllWindows ()
कैप.रिलीज ()
सिफारिश की:
माइक्रो: बिट एमयू विजन सेंसर - ऑब्जेक्ट ट्रैकिंग: 7 कदम
माइक्रो: बिट एमयू विज़न सेंसर - ऑब्जेक्ट ट्रैकिंग: तो इस निर्देशयोग्य में हम उस स्मार्ट कार की प्रोग्रामिंग शुरू करने जा रहे हैं जिसे हम इस निर्देश में बनाते हैं और हमने इस निर्देश में एक एमयू विज़न सेंसर स्थापित किया है। हम माइक्रो को प्रोग्राम करने जा रहे हैं: कुछ साधारण वस्तु ट्रैकिंग के साथ, तो वें
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग: शेप पंचर का उपयोग करके ऑब्जेक्ट लर्निंग / टीचिंग मेथड / तकनीक बनाना: 5 कदम
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग: शेप पंचर का उपयोग करके ऑब्जेक्ट लर्निंग / टीचिंग मेथड / तकनीक बनाना: ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के लिए नए छात्रों के लिए लर्निंग / टीचिंग मेथड। यह उन्हें कक्षाओं से वस्तुओं को बनाने की प्रक्रिया को देखने और देखने की अनुमति देने का एक तरीका है। भाग: १। एकटूल 2 इंच बड़ा पंच; ठोस आकार सबसे अच्छे हैं।२। कागज का टुकड़ा या सी
रास्पबेरी पाई - ओपनसीवी ऑब्जेक्ट ट्रैकिंग के साथ स्वायत्त मार्स रोवर: 7 कदम (चित्रों के साथ)
रास्पबेरी पाई - ओपनसीवी ऑब्जेक्ट ट्रैकिंग के साथ ऑटोनॉमस मार्स रोवर: रास्पबेरी पाई 3 द्वारा संचालित, ओपन सीवी ऑब्जेक्ट रिकग्निशन, अल्ट्रासोनिक सेंसर और गियर डीसी मोटर्स। यह रोवर किसी भी ऐसी वस्तु को ट्रैक कर सकता है जिसके लिए उसे प्रशिक्षित किया गया है और किसी भी इलाके में आगे बढ़ सकता है
ऑम्निडायरेक्शनल व्हील और ओपनसीवी पर आधारित कलर ट्रैकिंग रोबोट: 6 कदम
ऑम्निडायरेक्शनल व्हील और ओपनसीवी पर आधारित कलर ट्रैकिंग रोबोट: मैं अपने कलर ट्रैकिंग को लागू करने के लिए एक सर्वदिशात्मक व्हील चेसिस का उपयोग करता हूं, और मैं ओपनसीवीबॉट नामक एक मोबाइल सॉफ्टवेयर का उपयोग करता हूं। यहां सॉफ्टवेयर डेवलपर्स के लिए धन्यवाद, धन्यवाद। ओपनसीवी बॉट वास्तव में छवि प्रक्रिया के माध्यम से किसी भी रीयल-टाइम ऑब्जेक्ट का पता लगाता है या ट्रैक करता है
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग: कैंची का उपयोग करके ऑब्जेक्ट लर्निंग/टीचिंग मेथड/तकनीक बनाना: 5 कदम
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग: कैंची का उपयोग करके ऑब्जेक्ट लर्निंग / टीचिंग मेथड / तकनीक बनाना: ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के लिए नए छात्रों के लिए लर्निंग / टीचिंग मेथड। यह उन्हें कक्षाओं से वस्तुओं को बनाने की प्रक्रिया को देखने और देखने की अनुमति देने का एक तरीका है। भाग: 1. कैंची (कोई भी प्रकार करेगा)। 2. कागज या कार्डस्टॉक का टुकड़ा। 3. मार्कर।