תוכן עניינים:

זיהוי צבע פשוט באמצעות OpenCV: 6 שלבים
זיהוי צבע פשוט באמצעות OpenCV: 6 שלבים

וִידֵאוֹ: זיהוי צבע פשוט באמצעות OpenCV: 6 שלבים

וִידֵאוֹ: זיהוי צבע פשוט באמצעות OpenCV: 6 שלבים
וִידֵאוֹ: למידה עמוקה: עבודה עם תמונות 2024, נוֹבֶמבֶּר
Anonim
זיהוי צבע פשוט באמצעות OpenCV
זיהוי צבע פשוט באמצעות OpenCV

היי! היום אני הולך להציג שיטה פשוטה לזיהוי צבע מסרטון חי באמצעות OpenCV ופייתון.

בעיקרון אני רק אבדוק את הצבע הדרוש שיש במסגרת הרקע או לא ושימוש במודולי OpenCV אסיח את האזור הזה ובמקביל להציג את המסגרת.

שלב 1: קבצי הכותרת

קבצי הכותרת
קבצי הכותרת

עכשיו הנה השתמשתי בשני קבצי כותרות כלומר cv2 ו- NumPy. בעיקרון cv2 היא ספריית OpenCV אשר טוענת את כל קבצי c ++ החשובים בעת שימוש בפקודות בקודים (היא מכילה את כל ההגדרות).

ו- Numpy היא ספריית פייתון שהיא חיונית לאחסון מערך רב ממדי. אנו נשתמש לאחסון קואורדינטות טווח הצבעים שלנו.

ו numpy as np בעצם עוזר לקוד שלנו לקצר מעט על ידי שימוש ב- np בכל פעם במקום ב- numpy.

שלב 2: צילום הווידאו

צילום הסרטון
צילום הסרטון

זה די פשוט בעת שימוש בפייתון. כאן אנחנו רק צריכים להפעיל את מקליט הווידאו כדי שיוכל להתחיל להקליט את המסגרות.

כעת הערך שבתוך VideoCapture מציין את המצלמה, במקרה שלי המצלמה מחוברת למחשב הנייד שלי, אז 0.

אתה יכול ללכת באופן דומה ל -1 עבור המצלמה המשנית וכן הלאה. VideoCapture יוצר עבורו את האובייקט.

שלב 3: לכידת מסגרת והגדרת צבע

לכידת מסגרת והגדרת צבע
לכידת מסגרת והגדרת צבע

עכשיו כאן עלינו לעשות משהו על מנת שנוכל לצלם את המסגרת המיידית של הסרטון אשר תעזור לנו לחלץ את התמונה ונוכל לעבוד על כך בהתאם לדרישה.

לולאת "while" תעזור לנו להריץ את הלולאה לזמן הדרישה שלנו. כעת "_, frame = cap.read ()" משמש לבדיקת תוקפו של המסגרת שנלכדה ומאחסנת אותה. "cap.read () הוא משתנה בוליאני ומחזיר נכון אם המסגרת נקראת כראוי ואם לא תקבל מסגרות היא לא תראה שום שגיאה, פשוט תקבל None.

כעת שורה 11 ושורה 12 בעצם מגדירים את טווח הצבעים שעלינו לזהות. לשם כך, השתמשתי בצבע כחול.

אתה יכול להמשיך עם כל צבע בשביל זה אתה רק צריך להקליד ערכי BGR עבור הצבע המסוים הזה. עדיף להגדיר שני מערכים באמצעות מערכי numpy כגילוי צבע מסוים בעולם האמיתי לא ישמש את מטרתנו אלא נגדיר טווח של צבע כחול כך שיזהה בתוך הטווח.

לשם כך הגדרתי שני משתנים המאחסנים את ערכי ה- BGR הנמוכים ואת ערכי ה- BGR העליונים.

שלב 4: מיסוך וחילוץ

מיסוך וחילוץ
מיסוך וחילוץ

עכשיו כאן מגיעה המשימה העיקרית של מיסוך המסגרת וחילוץ צבע המסגרת. השתמשתי בפקודות המוגדרות מראש הקיימות בספרייה ב- OpenCV לביצוע המיסוך. בעצם מיסוך הוא תהליך הסרת חלק מהמסגרת, כלומר, נסיר את הפיקסלים שערכי BGR של צבעיהם שאינם נמצאים בטווח הצבעים שהוגדר וזה נעשה על ידי cv2.inRange. לאחר מכן, אנו מיישמים את טווח הצבעים על התמונה הממוסכת בהתאם לערכי הפיקסלים ולשם כך נשתמש ב- cv2.bitwise_and, היא פשוט תקצה את הצבעים לאזור המסכה בהתאם לערכי המסכה וטווח הצבעים.

קישור ל- cv2. bitwise_and:

שלב 5: סוף סוף מוצג

סוף סוף מוצגים!
סוף סוף מוצגים!

כאן השתמשתי ב- cv2.imshow () הבסיסי להצגה עבור כל מסגרת כתמונה. מכיוון שיש לי את נתוני המסגרת המאוחסנים במשתנים אני יכול לאחזר אותם ב- imshow (). כאן הצגתי את כל שלושת המסגרות, מקוריות, רעולי פנים וצבעוניות.

כעת עלינו לצאת מלולאת ה- while. לשם כך, אנו יכולים פשוט ליישם את cv2.wait. Key (). בעצם זה מספר את זמן ההמתנה לפני שמגיבים. אז אם תעבור 0 הוא יחכה אינסופית ו- 0xFF יגיד שהארכיטקטורה היא 64 ביט. "ord ()" מציין את התו שכאשר לוחצים עליו יבצע את הפקודה break in if block והוא ייצא מהלולאה.

ואז cap.release () סוגר את מקליט הווידאו ו- cv2.destroyAllWindows () סוגר את כל החלונות שנפתחו.

אם יש לך בעיה, אנא יידע אותי.

קישור לקוד המקור:

מוּמלָץ: