ዝርዝር ሁኔታ:

OpenCV ን በመጠቀም በ Python ውስጥ የቀለም መለየት 8 ደረጃዎች
OpenCV ን በመጠቀም በ Python ውስጥ የቀለም መለየት 8 ደረጃዎች

ቪዲዮ: OpenCV ን በመጠቀም በ Python ውስጥ የቀለም መለየት 8 ደረጃዎች

ቪዲዮ: OpenCV ን በመጠቀም በ Python ውስጥ የቀለም መለየት 8 ደረጃዎች
ቪዲዮ: Computer Vision with Python! Grayscaling Images 2024, ህዳር
Anonim
Image
Image

ሰላም! ይህ አስተማሪ የ OpenCV ቤተ -መጽሐፍትን በመጠቀም በፓይዘን ውስጥ ካለው ምስል አንድ የተወሰነ ቀለም እንዴት ማውጣት እንደሚቻል ላይ ለመምራት ያገለግላል። ለዚህ ቴክኒክ አዲስ ከሆኑ ከዚያ አይጨነቁ ፣ በዚህ መመሪያ መጨረሻ ላይ የራስዎን የቀለም ማወቂያ ፕሮግራም ማዘጋጀት ይችላሉ።

የሚከተሉት ተግባራት ናቸው ወይም እርስዎ የሚማሩባቸውን ቴክኒኮች ማለት እንችላለን ፣

1. ምስልን እንዴት ማንበብ እንደሚቻል

2. የትራክ አሞሌዎችን እንዴት መፍጠር እንደሚቻል

3. የትራክ አሞሌዎችን በመጠቀም የ Hue ፣ ሙሌት እና የምስል እሴትን ዋጋ እንዴት ማስተካከል እንደሚቻል

4. እና ከዚያ የእርስዎ የመጨረሻ ውጤት ይኖራል

ከዚህ በታች ያያያዝኩትን የውጤት ቪዲዮ ማየት ይችላሉ።

ስለዚህ እንጀምር

አቅርቦቶች

  • ፓይዘን 3
  • openCV ቤተ -መጽሐፍት
  • ደነዘዘ ቤተ -መጽሐፍት

ደረጃ 1 ፦ ቤተመፃህፍትን ማስመጣት

ቤተመፃህፍት ማስመጣት
ቤተመፃህፍት ማስመጣት

እንደሚታየው ምስሉ ቢጫ ፌራሪ ነው እና ከዚያ ምስል ቢጫ ቀለም ብቻ ለማውጣት ፕሮግራም እናደርጋለን

የመጀመሪያው እርምጃ ቤተመፃህፍቶቻችንን ማስመጣት ይሆናል

1. የ OpenCV ቤተ -መጽሐፍትን ጨምሮ። በፓይዘን ውስጥ cv2 ይባላል

2. የደነዘዘ ቤተ -መጽሐፍት እንደ np። “እንደ” ደነዘዘንን እንደ np እኛን ይፈቅዱልናል ስለሆነም ደብዛዛን ደጋግመን መጻፍ አያስፈልገንም

ደረጃ 2 - የትራክ አሞሌዎችን መፍጠር

የትራክ አሞሌዎችን መፍጠር
የትራክ አሞሌዎችን መፍጠር

የትራክ አሞሌዎች በምስል ውስጥ የ Hue ፣ ሙሌት እና እሴት ዋጋን ለማስተካከል ይፈጠራሉ።

cv2.namedWindow (“TrackBars”) ይህ የኮድ መስመር አዲስ የውጤት መስኮት ለመፍጠር የሚያገለግል ሲሆን የመስኮቱ ስም እንደ ትራክቦር (የተሰጠ ማንኛውንም ስም መስጠት ይችላሉ)

cv2.resizeWindow ("TrackBars" ፣ 600, 250) ይህ ተግባር የመስኮትን መጠን ለመለወጥ ያገለግላል። የትራክ አሞሌዎች መስኮት መጠኑን ለመለወጥ ስለምፈልግ “TrackBars” ለየትኛው መስኮት መጠኑን መለወጥ እንደሚፈልጉ ነው ያንን ስም የፃፍኩት። በሁለት ኢንቲጀሮች ተከታትሏል። እነዚያ ሁለት ኢንቲጀሮች ስፋት እና ቁመት ናቸው። መጠኑን ለመቀየር በእነዚህ ሁለት ቁጥሮች ዙሪያ መጫወት ይችላሉ

ደረጃ 3 - የትራክ አሞሌዎችን ለ hue ፣ ሙሌት እና እሴት መፍጠር

የትራክ አሞሌዎችን ለ hue ፣ ሙሌት እና እሴት መፍጠር
የትራክ አሞሌዎችን ለ hue ፣ ሙሌት እና እሴት መፍጠር
የትራክ አሞሌዎችን ለ hue ፣ ሙሌት እና እሴት መፍጠር
የትራክ አሞሌዎችን ለ hue ፣ ሙሌት እና እሴት መፍጠር

አሁን ሁዌ ፣ ሙሌት እና እሴት አጠቃላይ 6 የትራክ አሞሌዎችን እንፈጥራለን። እያንዳንዳቸው ሁለት ማለትም 1 ለዝቅተኛ እና 1 ለከፍተኛው ይኖራቸዋል። እኛ የ OpenCV የመፍጠር ትራክባር ተግባርን እንጠቀማለን። በመጀመሪያ የዚህን ተግባር አገባብ እናያለን።

cv2.createTrackbar ("WINDOWNAME" ፣ "MAINWINDOWNAME" ፣ "RANGE")። ይህ ግራ የሚያጋባ ሊሆን ይችላል ነገር ግን አይጨነቁ እኛ እያንዳንዱን እርምጃ እናሳልፋለን። በክፍት ሲቪ እሴቶች ውስጥ 179 ፣ ሙሌት 255 እና እሴቱ 255 መሆኑን አንድ ነገር ያስታውሱ

1. TrackBar ለ hue min በመፍጠር ላይ

cv2.createTrackbar ("Hue min", "TrackBars", 0, 179, ባዶ)

በዚህ ሁን ደቂቃ ውስጥ የትራክ አሞሌው ስም ነው ፣ ትራክባርስ ዋናው መስኮት ነው ፣ 0 ተንሸራታችን የሚገኝበት ቦታ ነው እና 179 ክልል ማለት ብር ከ 0-179 ይንቀሳቀሳል ማለት ነው።

2. TrackBar ለ hue max መፍጠር -

cv2. Treckbar (“Hue max” ፣ “TrackBars” ፣ 179 ፣ 179 ፣ ባዶ)

በዚህ ሁዌ max ውስጥ የትራክ አሞሌ ስም ፣ የትራክ አሞሌዎች ዋናው መስኮት ነው ፣ 179 ተንሸራታችን የሚገኝበት እና 179 ከፍተኛው ክልል ማለት ብር ከ 179-0 ይንቀሳቀሳል ማለት ነው።

3. በተመሳሳይ ሁኔታ በምስሉ ላይ እንደሚታየው ለሳታ ደቂቃ ፣ ለሳታ ከፍተኛ ፣ ለቫል ደቂቃ እና ለቫል ማክስ ደረጃዎቹን ይድገሙ

ነጭው ዳራ ያለው ምስል የውጤት ምስል ነው። የትራክ አሞሌዎችዎ እንዴት እንደሚታዩ

ደረጃ 4: ምስልን እንዴት ማንበብ እና መጠን መቀየር እንደሚቻል

ምስሉን እንዴት እንደሚያነቡ እና እንደሚቀይሩ
ምስሉን እንዴት እንደሚያነቡ እና እንደሚቀይሩ

cv2.imread () ምስሉን እንዲያነቡ ያስችልዎታል። አንድ አስፈላጊ አስተሳሰብ የምስልዎ ሥፍራ ፕሮግራሙ በሚቀመጥበት በተመሳሳይ አቃፊ ውስጥ መሆን እንዳለበት ማስታወስ አለብዎት። እኛ ምስሉን እስኪያነብ ድረስ መሮጥ ስላለበት ወይም ሁኔታው እውነት እስኪሆን ድረስ መናገር ስንችል loop ሳለን እናስገባለን

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

  • በዚህ ውስጥ እኔ ምስሉን የማከማችበትን ተለዋዋጭ ስም "img" ፈጥረዋል
  • በ cv2.imread ውስጥ በእጥፍ ጥቅስ ውስጥ የቅጥያውን በመጠቀም የምስሉን ስም ይፃፉ

የምስል መጠንን ለመለወጥ እኛ የ cv2.resize ተግባርን እንጠቀማለን። ይህ ክፍል እንደ አማራጭ ነው ፣ መጠኑን መለወጥ ከፈለጉ ይህንን ተግባር መጠቀም ይችላሉ

በ cv2.resize መጀመሪያ ምስሉ የተከማቸበትን ተለዋዋጭ ስም ከዚያም ስፋቱን እና ቁመቱን ይፃፉ።

ደረጃ 5 በምስል ላይ ለመተግበር የትራክ አሞሌ እሴቶችን ማንበብ

በምስል ላይ ለመተግበር የትራክ አሞሌ እሴቶችን ማንበብ
በምስል ላይ ለመተግበር የትራክ አሞሌ እሴቶችን ማንበብ
በምስል ላይ ለመተግበር የትራክ አሞሌ እሴቶችን ማንበብ
በምስል ላይ ለመተግበር የትራክ አሞሌ እሴቶችን ማንበብ

እሺ ስለዚህ አሁን በምስላችን ላይ ተግባራዊ ለማድረግ የትራክ አሞሌ አሞሌ እሴቶችን እናነባለን። Cv2.getTrackbarPos () ተግባርን በመጠቀም እሴቶቹን እናገኛለን።

በዚያ ክፍል እንጀምር…

h_min = cv2.getTrackbarPos ("Hue min", "TrackBars")

ከላይ ባለው ዓረፍተ ነገር እኔ ሁዌ ደቂቃን የማከማችበትን ተለዋዋጭ ስም h_min እፈጥራለሁ። ስለዚህ በ cv2.getTrackbarPos 1 ኛ ክርክር የ hue min እሴቶችን ስለምፈልግ (የፊደል አጻጻፉ ልክ እንደ tratbarbar ተግባር በትክክል አንድ መሆን አለበት) እና 2 ኛ ክርክር የሚመለከተው የትራክ አሞሌ መስኮት ስም ይሆናል።

  • ከላይ ባለው ምስል እንደሚታየው ለ h_max እና ለተቀሩት ተግባራት ተመሳሳይ ሂደቱን ይድገሙ እና ከዚያ ህትመትን () በመጠቀም ሁሉንም እሴቶች ያትሙ
  • ውጤቱ በሁለተኛው ምስል ላይ ይታያል። የ h_min ፣ h_max ፣ s_min ፣ s_max ፣ v_min ፣ s_max እሴቶችን እያሳተመ ነው

ደረጃ 6 - ምስልን ማሳየት እና የላይ እና የታችኛው ወሰን ማዘጋጀት

ምስል ማሳየት እና የላይኛው እና የታችኛው ወሰን ማቀናበር
ምስል ማሳየት እና የላይኛው እና የታችኛው ወሰን ማቀናበር

አሁን የምስል ፣ የቀለም ሙሌት እና ከፍተኛው እሴት አለን ፣ እኛ የአንድን ምስል የተወሰነ የቀለም ውፅዓት እናገኝ ዘንድ ምስሉን ለማጣራት ይህንን እሴት እንጠቀማለን።

እኛ cv2.inRange ተግባርን በመጠቀም ለዚህ ጭምብል እንፈጥራለን። እናም ከዚያ በፊት የላይኛው እና የታችኛውን የ hue ፣ ሙሌት እና እሴት ገደብ እናዘጋጃለን

ስለዚህ ተለዋዋጭ ስም “ታች” ይፍጠሩ እና የቁጥብ ድርድር ተግባርን በመጠቀም ለ 3 ቱም የ min ን ክልል እንደሚከተለው ያዘጋጁ

ታች = np.array ([h_min ፣ s_min ፣ v_min])

ለላይኛው ተመሳሳይ እርምጃ ይድገሙ

የላይኛው = np.array ([h_max ፣ s_max ፣ v_max])

አሁን እንደሚከተለው እንከተላለን

ጭንብል = cv2.inRange (መጠን ፣ ታች ፣ የላይኛው) ውስጥ cv2.inRang የ 1 ኛ ክርክር የእኔ የመጨረሻ ምስል የተከማቸበት ተለዋዋጭ ይሆናል ፣ 2 ኛ ክርክር ዝቅተኛ ወሰን እና 3 ኛ ክርክር የላይኛው ገደብ ይሆናል።

አሁን ዋናውን ምስል እና ጭምብል እናሳያለን። ለማሳየት የ cv2.imshow () ተግባርን እንጠቀማለን

cv2.imshow ("img" ፣ መጠን) ይህ ዋናውን ምስል ለማሳየት ነው። 1 ኛ ክርክር እርስዎ የሚፈልጉትን ማንኛውንም ስም መስጠት የሚችሉበት የመስኮቱ ስም ነው እና 2 ኛ ክርክር እርስዎ ለማሳየት የሚፈልጉት ዋናው ምስሌ የተከማቸበት ተለዋዋጭ ነው።

በተመሳሳይ ጭምብል ለማድረግ እርምጃዎችን ይድገሙ

cv2.imshow (“ውፅዓት” ፣ ጭንብል)

ደረጃ 7: አሁን የመጨረሻው ደረጃ

አሁን የመጨረሻው ደረጃ
አሁን የመጨረሻው ደረጃ

በዚህ የመጨረሻ ደረጃ ላይ የመኪናውን ቀለም አውጥተን እናሳያለን።

እኔ ተለዋዋጭ የስም ውጤት ፈጥረዋል። እንደገና የሚፈልጉትን ማንኛውንም ስም መስጠት ይችላሉ። ስለዚህ እኛ ምስሎችን በአንድ ላይ የምንጨምርበት እና አዲስ ምስል የምንፈጥርበትን የ cv2.bitwise_and () ተግባር እንጠቀማለን። እና በሁለቱም ምስል ውስጥ ያሉት ፒክሰሎች ባሉበት ቦታ ያንን እንደ አዎ ወይም “1” ይወስዳል።

ውጤት = cv2.bitwise_and (መጠኑን ፣ መጠኑን ፣ ጭምብል = ጭምብል)

  • በዚህ ውስጥ 1 ኛ ክርክር የእኛ ምስል ይሆናል
  • 2 ኛ ክርክር እንዲሁ የእኛ የመጀመሪያ ምስል ይሆናል ግን ከዚህ በፊት የፈጠርነው ጭምብል ተተግብሯል
  • እና በመጨረሻም የኢሜይሽን ተግባርን በመጠቀም ውጤቱን ያሳዩ

ይህንን የመጨረሻ ደረጃ ለጥፍ ብቻ ይቅዱ መዘግየት ብቻ ነው እና በቁልፍ ሰሌዳው ላይ “ሀ” ን በመጫን ከውጤት መስኮቱ መውጣት ይችላሉ

ደረጃ 8 የመጨረሻ ውጤቶች

የሚመከር: