תוכן עניינים:
וִידֵאוֹ: מעקב אחר אובייקטים של Opencv: 3 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:12
זיהוי עצמים נעים הוא טכניקה המשמשת בראייה ממוחשבת ועיבוד תמונות. מספר פריימים עוקבים מסרטון מושווים בשיטות שונות כדי לקבוע אם מזוהה אובייקט נע כלשהו.
זיהוי אובייקטים נעים שימש למגוון רחב של יישומים כמו מעקב וידאו, זיהוי פעילות, ניטור מצב הכביש, בטיחות שדות תעופה, ניטור הגנה לאורך הגבול הימי ועוד.
זיהוי אובייקט נע הוא לזהות את התנועה הפיזית של אובייקט במקום או באזור נתון. [2] על ידי הפעלת פילוח בין עצמים נעים ואזור או אזור נייח, ניתן לעקוב אחר תנועת האובייקטים הנעים וכך ניתן לנתח אותם מאוחר יותר. כדי להשיג זאת, שקול כי סרטון הוא מבנה הבנוי על מסגרות בודדות, זיהוי אובייקטים נעים הוא למצוא את היעדים הנעים בחזית, או בכל מסגרת וידאו או רק כאשר היעד הנע מציג את המראה הראשון בסרטון.
אני הולך להשתמש בשילוב של Opnecv ו- Python כדי לזהות את האובייקטים ולצפות עליהם בהתאם לצבע
שלב 1: ציור מלבן על האובייקט המוכר
אם למחשב שלך אין פייתון או opencv אנא עקוב אחר ההוראות שלהלן
הנה קוד הפיתון:
יבוא cv2import numpy כמו np
כובע = cv2. VideoCapture (0)
בעוד שזה נכון:
_, frame = cap.read () hsv = cv2.cvtColor (frame, cv2. COLOR_BGR2HSV)
lower_yellow = np.array ([20, 110, 110])
צהוב עליון = np.array ([40, 255, 255])
צהוב_מסכה = cv2.inRange (hsv, צהוב תחתון, צהוב עליון)
(_, קווי מתאר, _) = cv2.findContours (צהוב_מסכה, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
למתאר בקווי מתאר:
שטח = cv2.contourArea (מתאר)
אם (שטח> 800):
x, y, w, h = cv2.boundingRect (קונטור) מסגרת = cv2. מלבן (מסגרת, (x, y), (x+w, y+h), (0, 0, 255), 10)
cv2.imshow ("מעקב", מסגרת)
k = cv2.waitKey (5) & 0XFF
אם k == 27: הפסקה
cv2.destroyAllWindows ()
cap.release ()
שלב 2: עקוב אחר הנתיב שאליו נע החפץ
כדי לעקוב אחר הנתיב:
עבור i בטווח (1, len (center_points)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) אם math.sqrt ((((נקודות מרכז [i - 1] [0] - נקודות_מרכז [0]) ** 2) + ((נקודות_מרכז [i - 1] [1] - נקודות מרכז [1]) ** 2)) <= 50: cv2.line (מסגרת, נקודות_מרכז [i - 1], נקודות_מרכז , (b, g, r), 4)
שלב 3: שילוב שני הקודים
אני הולך לשלב את שני הקוד
יבוא cv2import numpy כ- np יבוא אקראי מאוסף יבוא קובץ
כובע = cv2. VideoCapture (1)
# כדי לעקוב אחר כל הנקודות בהן אובייקט ביקר במרכז_נקודות = deque ()
בעוד שזה נכון:
# קרא והפוך מסגרת _, frame = cap.read () frame = cv2.flip (מסגרת, 1)
# טשטשו מעט את המסגרת
blur_frame = cv2. GaussianBlur (מסגרת, (7, 7), 0)
# המר מ BGR לפורמט צבע HSV
hsv = cv2.cvtColor (blur_frame, cv2. COLOR_BGR2HSV)
# הגדר טווח תחתון ועליון של צבע hsv לזיהוי. כחול כאן
כחול נמוך = np.array ([100, 50, 50]) upper_blue = np.array ([140, 255, 255]) mask = cv2.inRange (hsv, lower_blue, upper_blue)
# הפוך גרעין אליפטי
kernel = cv2.getStructuringElement (cv2. MORPH_ELLIPSE, (15, 15))
# מורף פתיחה (שחיקה ואחריה הרחבה)
mask = cv2.morphologyEx (מסכה, cv2. MORPH_OPEN, גרעין)
# מצא את כל קווי המתאר
קווי מתאר, היררכיה = cv2.findContours (mask.copy (), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE) [-2:]
אם len (קווי מתאר)> 0:
# מצא את המתאר הגדול ביותר_contour_contour = max (קווי מתאר, מפתח = cv2.contourArea)
# מצא את מרכז המתאר וצייר עיגול מלא
רגעים = cv2.moments (big_contour) centre_of_contour = (int (רגעים ['m10'] / רגעים ['m00']), int (רגעים ['m01'] / רגעים ['m00'])) cv2.circle (מסגרת, מרכז_קונטור, 5, (0, 0, 255), -1)
# כרוך את המתאר במעגל
אליפסה = cv2.fitEllipse (contour_contest) cv2.ellipse (מסגרת, אליפסה, (0, 255, 255), 2)
# שמור את מרכז המתאר כך שנצייר קו עוקב אחריו
center_points.appendleft (center_of_contour)
# צייר קו מנקודות המתאר המרכזיות
עבור i בטווח (1, len (center_points)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) אם math.sqrt ((((נקודות מרכז [i - 1] [0] - נקודות_מרכז [0]) ** 2) + ((נקודות_מרכז [i - 1] [1] - נקודות מרכז [1]) ** 2)) <= 50: cv2.line (מסגרת, נקודות_מרכז [i - 1], נקודות_מרכז , (b, g, r), 4)
cv2.imshow ('מקורי', מסגרת)
cv2.imshow ('מסכה', מסכה)
k = cv2.waitKey (5) & 0xFF
אם k == 27: הפסקה
cv2.destroyAllWindows ()
cap.release ()
מוּמלָץ:
חיישן מיקרו: bit MU Vision - מעקב אחר אובייקטים: 7 שלבים
חיישן מיקרו: bit MU Vision - מעקב אחר אובייקטים: אז במדריך זה אנו מתחילים לתכנת את המכונית החכמה שאנו בונים במדריך זה ושהתקנו עליו חיישן ראיית MU במדריך זה. אנו הולכים לתכנת את המיקרו: קצת עם מעקב אחר אובייקטים פשוטים, כך ש
חיישן מיקרו: bit MU Vision - מעקב אחר אובייקטים: 6 שלבים
חיישן מיקרו: ביט MU Vision - אובייקטים למעקב: זהו המדריך הרביעי שלי לחיישן ראיית MU עבור המיקרו: ביט. כאן אעבור כיצד לעקוב אחר אובייקטים בעזרת המיקרו: ביט ואכתוב את הקואורדינטות למסך OLED. במדריכים האחרים שלי עברתי כיצד לחבר את המיקרו: ביט ל
מעקב אחר אובייקטים מבוססי זיהוי צבעים: 10 שלבים
מעקב אחר אובייקטים מבוססי זיהוי צבעים: סיפור עשיתי את הפרויקט הזה כדי ללמוד עיבוד תמונות באמצעות פטל PI ולפתוח קורות חיים. כדי להפוך את הפרויקט למעניין יותר השתמשתי בשני מנועי סרוו SG90 ועליו מצלמת הר. מנוע אחד נהג לנוע אופקית ומנוע שני נהג לתנועה אנכית
Raspberry Pi - רובר מאדים אוטונומי עם מעקב אחר אובייקטים של OpenCV: 7 שלבים (עם תמונות)
Raspberry Pi - רובר מאדים אוטונומי עם מעקב אחר אובייקטים OpenCV: מופעל על ידי Raspberry Pi 3, זיהוי אובייקט CV פתוח, חיישנים אולטראסוניים ומנועי DC מכוונים. רובר זה יכול לעקוב אחר כל אובייקט שאליו הוא מאומן ולנוע בכל שטח
מחוון מצלמות מעקב אחר אובייקטים עם ציר סיבוב. מודפס בתלת מימד ובנוי על בקר מנועי DC RoboClaw & Arduino: 5 שלבים (עם תמונות)
מחוון מצלמות מעקב אחר אובייקטים עם ציר סיבוב. מודפס בתלת-ממד ובנוי על בקר מנועי DC RoboClaw & Arduino: פרויקט זה היה אחד הפרויקטים האהובים עלי מאז שזכיתי לשלב את העניין שלי ביצירת וידאו עם DIY. תמיד הסתכלתי ורציתי לחקות את הצילומים הקולנועיים האלה בסרטים שבהם מצלמה נעה על פני מסך תוך כדי צילום כדי לעקוב אחר