Talaan ng mga Nilalaman:

Pagtuklas ng Kulay sa Python Gamit ang OpenCV: 8 Hakbang
Pagtuklas ng Kulay sa Python Gamit ang OpenCV: 8 Hakbang

Video: Pagtuklas ng Kulay sa Python Gamit ang OpenCV: 8 Hakbang

Video: Pagtuklas ng Kulay sa Python Gamit ang OpenCV: 8 Hakbang
Video: Face Detection using Haar Cascade Classifiers شرح عربي 2024, Hulyo
Anonim
Image
Image

Kamusta! Ang itinuturo na ito ay ginagamit upang gabayan kung paano kumuha ng isang tukoy na kulay mula sa isang imahe sa sawa gamit ang openCV library. Kung ang iyong bago sa diskarteng ito pagkatapos ay huwag magalala, sa pagtatapos ng gabay na ito magagawa mong i-program ang iyong sariling programa sa pagtuklas ng kulay.

Ang sumusunod ay ang mga pagpapaandar o masasabi namin ang mga diskarte na matututunan mo, 1. Paano basahin ang isang imahe

2. Paano lumikha ng Mga Track Bar

3. Paano ayusin ang halaga ng Hue, saturation at halaga ng isang imahe gamit ang mga track bar

4. At pagkatapos ay magkakaroon ng iyong huling output

Maaari mong panoorin ang video ng output na na-attach ko sa ibaba.

Kaya't magsimula tayo

Mga gamit

  • Python 3
  • library ng openCV
  • numpy library

Hakbang 1: Pag-import ng Mga Aklatan

Pag-import ng Mga Aklatan
Pag-import ng Mga Aklatan

Ang imahe ay dilaw na ferrari tulad ng ipinapakita at magpapoprogram kami upang makuha lamang ang kulay dilaw mula sa imaheng iyon

Ang unang hakbang ay ang pag-import ng aming mga aklatan

1. Kasama ang openCV library. Tinatawag itong cv2 sa sawa

2. Kabilang ang numpy library bilang np. Pinapayagan kami ng "as" na mag-numpy kami bilang np kaya't hindi na kailangang muling isulat ang numpy

Hakbang 2: Lumilikha ng Mga Track Bar

Lumilikha ng Mga Track Bar
Lumilikha ng Mga Track Bar

Ang mga Track Bar ay nilikha upang ayusin ang halaga ng Hue, saturation at Value sa isang imahe.

cv2.namedWindow ("TrackBars") Ang linya ng code na ito ay ginagamit upang lumikha ng isang bagong window ng output at ang pangalan ng window ay ibinibigay bilang TrackBars (Maaari kang magbigay ng anumang nais mong pangalan)

cv2.resizeWindow ("TrackBars", 600, 250) Ginagamit ang pagpapaandar na ito upang baguhin ang laki sa isang window. Ang "TrackBars" ay para sa kung aling window ang gusto mong baguhin ang laki dahil nais kong baguhin ang laki sa window ng TrackBars isinulat ko ang pangalang iyon. Sinusundan ng dalawang integer. Ang dalawang integer na iyon ay ang lapad at taas. Maaari mong i-play sa paligid ng dalawang mga numero upang baguhin ang laki

Hakbang 3: Lumilikha ng TrackBars para sa Hue, saturation at Halaga

Lumilikha ng TrackBars para sa Hue, saturation at Halaga
Lumilikha ng TrackBars para sa Hue, saturation at Halaga
Lumilikha ng TrackBars para sa Hue, saturation at Halaga
Lumilikha ng TrackBars para sa Hue, saturation at Halaga

Ngayon ay lilikha kami ng kabuuang 6 TrackBars para sa Hue, saturation at halaga. Ang bawat isa ay magkakaroon ng dalawa hal. 1 para sa minimum at 1 para sa maximum. Gagamitin namin ang function ng createTrackbar ng openCV. Una naming makikita ang syntax ng pagpapaandar na ito.

cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). Maaaring nakalilito ito ngunit huwag mag-alala madadaan namin ang bawat hakbang. Isaisip ang isang bagay na sa mga halaga ng openCV ng kulay ay 179, ang saturation ay 255 at ang halaga ay 255

1. Lumilikha ng TrackBar para sa kulay ng min:

cv2.createTrackbar ("Hue min", "TrackBars", 0, 179, walang laman)

Sa Hue min na ito ang pangalan ng trackbar, ang TrackBars ang pangunahing window, 0 ang posisyon kung saan magiging ang aming slider at 179 ang saklaw na nangangahulugang ang silder ay lilipat mula 0-179

2. Lumilikha ng TrackBar para sa max na kulay:

cv2.createTrackbar ("Hue max", "TrackBars", 179, 179, walang laman)

Sa Hue max na ito ang pangalan ng trackbar, ang TrackBars ang pangunahing window, 179 ang posisyon kung saan magiging ang aming slider at 179 ang maximum range na nangangahulugang ang silder ay lilipat mula 179-0

3. Katulad din ulitin ang mga hakbang para sa sat min, sat max, val min at val max tulad ng ipinakita sa imahe

Ang imahe na may puting background ay ang imahe ng output. Ito ang magiging hitsura ng iyong mga track bar

Hakbang 4: Paano Basahin at baguhin ang laki ng Imahe

Paano Basahin at baguhin ang laki ng Imahe
Paano Basahin at baguhin ang laki ng Imahe

Pinapayagan ka ng cv2.imread () na basahin ang imahe. Isang mahalagang iniisip na kailangan mong tandaan na ang lokasyon ng iyong imahe ay dapat nasa parehong folder kung saan nai-save ang programa. Ilalagay namin habang loop dahil dapat itong tumakbo hanggang sa pagbabasa ng imahe o maaari nating sabihin hanggang sa totoo ang kundisyon

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

  • Sa ito ay lumikha ako ng isang variable na pangalan na "img" kung saan itinatago ko ang imahe
  • Sa loob ng cv2.imread isulat ang pangalan ng imahe na may extension sa loob ng dobleng quote

Upang baguhin ang laki ng isang imahe gagamitin namin ang function na cv2.resize. Ang bahaging ito ay opsyonal, kung nais mong baguhin ang laki pagkatapos ay maaari mong gamitin ang pagpapaandar na ito

Sa loob ng cv2.resize unang isulat ang variable na pangalan kung saan nakaimbak ang imahe at pagkatapos ang lapad at taas nito

Hakbang 5: Basahin ang Mga Halaga ng Bar ng Bar upang mailapat Ito sa isang Imahe

Basahin ang Mga Halaga ng Bar ng Bar upang mailapat Ito sa isang Imahe
Basahin ang Mga Halaga ng Bar ng Bar upang mailapat Ito sa isang Imahe
Basahin ang Mga Halaga ng Bar ng Bar upang mailapat Ito sa isang Imahe
Basahin ang Mga Halaga ng Bar ng Bar upang mailapat Ito sa isang Imahe

Ok kaya ngayon babasahin namin ang mga halaga ng trackbar bar upang mailapat namin ito sa aming imahe. Makukuha namin ang mga halaga gamit ang function na cv2.getTrackbarPos ().

Magsimula tayo sa bahaging iyon …

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

Sa pahayag sa itaas ay lumilikha ako ng isang variable na pangalan na h_min kung saan iimbak ko ang halaga ng Hue min. Kaya sa loob ng cv2.getTrackbarPos 1st argument ay magiging "Hue min" dahil gusto ko ng mga halagang hue min (Ang spelling ay dapat na eksaktong kapareho ng ito ay ang pag-andar ng createTrackbar) at ang ika-2 na argumento ang magiging pangalan ng window ng trackbar na kinabibilangan nito.

  • Ulitin ang parehong proseso para sa h_max at natitirang mga pagpapaandar tulad ng ipinakita sa imahe sa itaas at pagkatapos ay i-print ang lahat ng mga halaga gamit ang print ()
  • Ang output ay ipinapakita sa pangalawang imahe. Ito ay pag-print ng mga halaga ng h_min, h_max, s_min, s_max, v_min, s_max

Hakbang 6: Pagpapakita ng Imahe at Pagtatakda ng Itaas at Mas mababang Limitasyon

Nagpapakita ng Imahe at Pagtatakda ng Itaas at Mas mababang Limitasyon
Nagpapakita ng Imahe at Pagtatakda ng Itaas at Mas mababang Limitasyon

Ngayon mayroon kaming min at max na halaga ng kulay, saturation at halaga na gagamitin namin ang halagang ito upang i-filter ang imahe upang maaari naming ang partikular na output ng kulay ng isang imahe.

Lilikha kami ng isang mask para sa paggamit ng cv2.inRange function. At bago ito ay itatakda namin ang itaas at mas mababang limitasyon ng kulay, saturation at halaga

Kaya lumikha ng isang variable na pangalan na "mas mababa" at gamit ang pag-andar ng numpy array itakda ang saklaw ng min para sa lahat ng 3 tulad ng sumusunod

mas mababa = np.array ([h_min, s_min, v_min])

Ulitin ang parehong hakbang para sa itaas

itaas = np.array ([h_max, s_max, v_max])

Ngayon ay lilikha kami ng isang mask bilang sumusunod

mask = cv2.inRange (baguhin ang laki, mas mababa, itaas) Sa loob ng cv2.inRang ang ika-1 na argumento ay ang variable na kung saan naka-imbak ang aking huling imahe, ang ika-2 na argumento ay magiging mas mababang limitasyon at ang ika-3 na argumento ay magiging mas mataas na limitasyon.

Ngayon ay ipapakita namin ang pangunahing imahe at mask. Upang ipakita gagamitin namin ang function na cv2.imshow ()

cv2.imshow ("img", baguhin ang laki) Ito ay upang ipakita ang pangunahing imahe. Ang 1st argument ay ang pangalan ng window na maaari mong ibigay ang anumang pangalan na gusto mo at ang 2nd argument ay variable kung saan naka-imbak ang aking pangunahing imahe na nais mong ipakita.

Gayundin ulitin ang mga hakbang para sa mask

cv2.imshow ("Output", mask)

Hakbang 7: Ngayon ang Pangwakas na Hakbang

Ngayon ang Pangwakas na Hakbang
Ngayon ang Pangwakas na Hakbang

Sa huling hakbang na ito ay kukuha kami ng kulay ng kotse at ipakita.

Lumikha ako ng isang resulta ng variable na pangalan. Muli maaari kang magbigay ng anumang pangalan na gusto mo. Sa gayon gagamitin namin ang function na cv2.bitwise_and () kung saan magdaragdag kami sa mga imahe nang magkasama at lumikha ng isang bagong imahe. At saanman naroroon ang mga pixel sa parehong imahe ay tatagal iyon bilang oo o "1".

resulta = cv2.bitwise_and (baguhin ang laki, baguhin ang laki, mask = mask)

  • Sa ito ang ika-1 na argumento ang magiging imahe namin
  • Ang ika-2 argument ay magiging aming orihinal na imahe ngunit sinusundan ng mask na inilapat na nilikha namin dati
  • At sa wakas ipakita lamang ang resulta gamit ang imshow function

Kopyahin lamang i-paste ang huling hakbang na ito ay isang pagkaantala lamang at maaari kang lumabas sa window ng output sa pamamagitan ng pagpindot sa "a" sa keyboard

Hakbang 8: Pangwakas na Mga Output

Inirerekumendang: