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

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

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

וִידֵאוֹ: זיהוי צבע בפייתון באמצעות OpenCV: 8 שלבים
וִידֵאוֹ: Computer Vision with Python! Grayscaling Images 2024, יולי
Anonim
Image
Image

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

להלן הפונקציות או נוכל לומר טכניקות שתלמד, 1. איך לקרוא תמונה

2. כיצד ליצור שורות מסלול

3. כיצד להתאים את הערך של גוון, רוויה וערך של תמונה באמצעות פסי מסלול

4. ואז יהיה הפלט הסופי שלך

אתה יכול לצפות בסרטון הפלט שצירפתי למטה.

אז בואו נתחיל

אספקה

  • פייתון 3
  • ספריית openCV
  • ספרייה ערמומית

שלב 1: ייבוא ספריות

ייבוא ספריות
ייבוא ספריות

התמונה היא של פרארי צהובה כפי שמוצג ואנו נתכנת לחלץ רק צבע צהוב מהתמונה הזו

השלב הראשון יהיה ייבוא הספריות שלנו

1. כולל ספריית openCV. זה נקרא בפיוטון cv2

2. כולל ספרייה מסוממת כ- np. ה"ככ "מאפשרים לנו לקהע כ- np ולכן אין צורך לכתוב קהות שוב ושוב

שלב 2: יצירת סרגלי מסלול

יצירת סרגלי מסלול
יצירת סרגלי מסלול

פסי מסלול נוצרים כדי להתאים את הערך של גוון, רוויה וערך בתמונה.

cv2.namedWindow ("TrackBars") שורת קוד זו משמשת ליצירת חלון פלט חדש ושם החלון ניתן כ- TrackBars (אתה יכול לתת כל שם שאתה רוצה)

cv2.resizeWindow ("TrackBars", 600, 250) פונקציה זו משמשת לשינוי גודל חלון. "TrackBars" הוא לאיזה חלון ברצונך לשנות את גודלו מכיוון שרציתי לשנות את גודל חלון TrackBars כתבתי את השם הזה. אחריהם שני מספרים שלמים. שני המספרים השלמים הם הרוחב והגובה. אתה יכול לשחק עם שני המספרים האלה כדי לשנות את הגודל

שלב 3: יצירת TrackBars לגוון, רוויה וערך

יצירת TrackBars לגוון, לרוויה ולערך
יצירת TrackBars לגוון, לרוויה ולערך
יצירת TrackBars לגוון, לרוויה ולערך
יצירת TrackBars לגוון, לרוויה ולערך

כעת ניצור בסך הכל 6 TrackBars לגוון, לרוויה ולערך. לכל אחד יהיו שניים כלומר 1 למינימום ואחד למקסימום. אנו נשתמש בפונקציה createTrackbar של openCV. ראשית נראה את התחביר של פונקציה זו.

cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). זה עלול לבלבל, אך אל דאגה נעבור על כל שלב. זכור דבר אחד כי בערכי openCV של גוון הוא 179, הרוויה היא 255 והערך הוא 255

1. יצירת TrackBar לדקות גוון:

cv2.createTrackbar ("גוון מיני", "TrackBars", 0, 179, ריק)

בדקה זו של גוון הוא שם המסלול, TrackBars הוא החלון הראשי, 0 הוא המיקום עליו יהיה המחוון שלנו ו 179 הוא הטווח פירושו שהמשקוף יזוז מ-0-179

2. יצירת TrackBar עבור גוון מקסימלי:

cv2.createTrackbar ("גוון מקסימלי", "TrackBars", 179, 179, ריק)

ב- Hue max זה שם סרגל המסלול, TrackBars הוא החלון הראשי, 179 הוא המיקום עליו יהיה המחוון שלנו ו 179 הוא הטווח המרבי שמשמעותו שהמשקוף יזוז מ-179-0

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

התמונה עם הרקע הלבן היא תמונת הפלט. כך ייראו פסי המסלול שלך

שלב 4: כיצד לקרוא ולשנות את התמונה

כיצד לקרוא ולשנות את התמונה
כיצד לקרוא ולשנות את התמונה

cv2.imread () מאפשר לך לקרוא את התמונה. חשוב לחשוב שאתה צריך לזכור שמיקום התמונה שלך חייב להיות באותה תיקייה שבה נשמרת התוכנית. נכניס לולאה בזמן שהיא צריכה לפעול עד שהיא קוראת את התמונה או שנוכל לומר עד שהתנאי נכון

img = cv2.imread ("ferrari.jpg")

  • בזה יצרתי שם משתנה "img" שבו אני מאחסן את התמונה
  • בתוך cv2.imread כתוב את שם התמונה עם הסיומת שלה בתוך ציטוט כפול

כדי לשנות את גודל התמונה נשתמש בפונקציה cv2.resize. חלק זה הוא אופציונלי, אם ברצונך לשנות את גודל, תוכל להשתמש בפונקציה זו

בתוך cv2.resize כתוב תחילה את שם המשתנה שבו מאוחסנת התמונה ולאחר מכן רוחב וגובה שלה

שלב 5: קריאת ערכי סרגל מסלול כדי להחיל אותו על תמונה

קריאת ערכי סרגל מסלול כדי להחיל אותו על תמונה
קריאת ערכי סרגל מסלול כדי להחיל אותו על תמונה
קריאת ערכי סרגל מסלול כדי להחיל אותו על תמונה
קריאת ערכי סרגל מסלול כדי להחיל אותו על תמונה

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

נתחיל עם החלק הזה…

h_min = cv2.getTrackbarPos ("גוון מיני", "TrackBars")

בהצהרה לעיל אני יוצר שם משתנה h_min שבו אחסן את הערך של גוון min. אז בתוך cv2.getTrackbarPos הארגומנט הראשון יהיה "גוון מיני" כי אני רוצה ערכים של גוון מיני (הכתיב חייב להיות זהה בדיוק לזה שהוא הפונקציה createTrackbar) והארגומנט השני יהיה שם חלון סרגל המסלול שאליו הוא משתייך.

  • חזור על אותו תהליך עבור h_max ושאר הפונקציות כפי שמוצג בתמונה למעלה ולאחר מכן הדפס את כל הערכים באמצעות print ()
  • הפלט מוצג בתמונה השנייה. הוא מדפיס את הערכים של h_min, h_max, s_min, s_max, v_min, s_max

שלב 6: הצגת תמונה והגדרת גבול עליון ותחתון

הצגת תמונה והגדרת גבול עליון ותחתון
הצגת תמונה והגדרת גבול עליון ותחתון

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

ניצור מסכה לשם כך באמצעות הפונקציה cv2.inRange. ולפני כן נקבע את הגבול העליון והתחתון של גוון, רוויה וערך

אז צור שם משתנה "נמוך יותר" ובאמצעות פונקציית מערך numpy הגדר את טווח הדקות לכל 3 כדלקמן

נמוך יותר = np.array ([h_min, s_min, v_min])

חזור על אותו שלב עבור העליון

עליון = np.array ([h_max, s_max, v_max])

כעת ניצור מסכה כדלקמן

mask = cv2.inRange (שינוי גודל, תחתון, עליון) בתוך cv2.inRang הארגומנט הראשון יהיה המשתנה שבו התמונה הסופית שלי מאוחסנת, הארגומנט השני יהיה הגבול התחתון והארגומנט השלישי יהיה הגבול העליון.

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

cv2.imshow ("img", שינוי גודל) זה כדי להציג את התמונה הראשית. הארגומנט הראשון הוא שם החלון שאתה יכול לתת כל שם שאתה רוצה והטיעון השני הוא משתנה בו מאוחסנת התמונה הראשית שלי שברצונך להציג.

באופן דומה חזור על שלבים למסכה

cv2.imshow ("פלט", מסכה)

שלב 7: עכשיו השלב האחרון

עכשיו השלב האחרון
עכשיו השלב האחרון

בשלב האחרון נשלוף את צבע המכונית והתצוגה.

יצרתי תוצאה של שם משתנה. שוב אתה יכול לתת כל שם שאתה רוצה. אז נשתמש בפונקציה cv2.bitwise_and () שבה נוסיף לתמונות יחד וניצור תמונה חדשה. ובכל מקום בו הפיקסלים בשתי התמונה קיימים זה ייקח את זה כן או "1".

תוצאה = cv2.bitwise_and (שינוי גודל, שינוי גודל, מסכה = מסכה)

  • בכך הטענה הראשונה תהיה הדימוי שלנו
  • הטיעון השני יהיה גם התמונה המקורית שלנו אך אחריו תחול מסכה שיצרנו קודם לכן
  • ולבסוף רק הצג את התוצאה באמצעות פונקציית imshow

פשוט העתק והדבק את השלב האחרון זה רק עיכוב ותוכל לצאת מחלון הפלט על ידי לחיצה על "a" במקלדת

שלב 8: יציאות סופיות

מוּמלָץ: