Talaan ng mga Nilalaman:

Simpleng Pagtuklas ng Kulay Gamit ang OpenCV: 6 na Hakbang
Simpleng Pagtuklas ng Kulay Gamit ang OpenCV: 6 na Hakbang

Video: Simpleng Pagtuklas ng Kulay Gamit ang OpenCV: 6 na Hakbang

Video: Simpleng Pagtuklas ng Kulay Gamit ang OpenCV: 6 na Hakbang
Video: Face Detection using Haar Cascade Classifiers شرح عربي 2024, Hunyo
Anonim
Simpleng Pagtuklas ng Kulay Gamit ang OpenCV
Simpleng Pagtuklas ng Kulay Gamit ang OpenCV

Hi! Ngayon ay magpapakita ako ng isang simpleng pamamaraan ng pagtuklas ng isang kulay mula sa isang live na video gamit ang OpenCV at sawa.

Karaniwan ay susubukan ko lamang ang kinakailangang kulay na naroroon sa background frame o hindi at gamit ang mga module ng OpenCV ay tatakpan ko ang rehiyon na iyon at sabay na ipinapakita ang frame.

Hakbang 1: Ang Mga File ng Header

Ang Mga File ng Header
Ang Mga File ng Header

Ngayon narito na ginamit ko ang dalawang mga file ng header na cv2 at NumPy. Talaga cv2 ay ang OpenCV library na naglo-load ng lahat ng mga c ++ file na mahalaga habang ginagamit ang mga utos sa mga code (naglalaman ito ng lahat ng mga kahulugan).

At ang Numpy ay isang python library na mahalaga para sa pag-iimbak ng isang multidimensional array. Gagamitin namin upang maiimbak ang aming mga co-ordinate sa hanay ng kulay.

At ang numpy bilang np ay karaniwang tumutulong sa aming code upang paikliin ang kaunti sa pamamagitan ng paggamit ng np sa bawat oras sa halip na numpy.

Hakbang 2: Pagkuha ng Video

Nakukuha ang Video
Nakukuha ang Video

Ito ay medyo simple habang gumagamit ng sawa. Dito kailangan lang naming i-on ang video recorder upang masimulan itong mag-record ng mga frame.

Ngayon ang halaga sa loob ng VideoCapture ay nagpapahiwatig ng camera, sa aking kaso ang camera ay konektado sa aking laptop, kaya 0.

Maaari kang pumunta nang katulad sa 1 para sa pangalawang camera at iba pa. Lumilikha ang VideoCapture ng object para dito.

Hakbang 3: Pagkuha ng Frame at Pagtukoy sa Kulay

Pagkuha ng Frame at Pagtukoy sa Kulay
Pagkuha ng Frame at Pagtukoy sa Kulay

Ngayon narito kailangan nating gumawa ng isang bagay upang makuha natin ang instant na frame ng video na makakatulong sa amin na makuha ang imahe at maaari naming itong paganahin ayon sa kinakailangan.

"habang" loop ay makakatulong sa amin upang patakbuhin ang loop sa aming oras ng kinakailangan. Ngayon ang "_, frame = cap.read ()" ay ginagamit upang suriin ang bisa ng Frame na nakuha at iniimbak ito. Ang "cap.read () ay isang variable ng boolean at nagbabalik ng totoo kung basahin nang tama ang frame at kung hindi ka makakakuha ng mga frame hindi ito magpapakita ng anumang error, makakakuha ka lang ng Wala.

Ngayon ang linya 11 at linya 12 ay karaniwang tumutukoy sa saklaw ng kulay na kailangan nating tuklasin. Para sa mga ito, nakasanayan ko na ang asul na kulay.

Maaari kang magpatuloy sa anumang kulay para sa kailangan mong i-type lamang ang mga halaga ng BGR para sa partikular na kulay. Mas mahusay na tukuyin ang dalawang mga pag-array gamit ang mga numpy arrays tulad ng pagtuklas ng isang partikular na kulay sa totoong mundo ay hindi magsisilbi sa aming layunin sa halip ay tutukuyin namin ang isang hanay ng asul na kulay upang makita nito sa loob ng saklaw.

Para sa mga ito, tinukoy ko ang dalawang variable na nag-iimbak ng mas mababang mga halaga ng BGR at mas mataas na mga halaga ng BGR.

Hakbang 4: Masking at Extracting

Masking at Extracting
Masking at Extracting

Ngayon narito ang pangunahing gawain ng masking frame at pagkuha ng kulay ng frame. Ginamit ko ang paunang natukoy na mga utos na naroroon sa library sa OpenCV upang gawin ang masking. Karaniwan ang masking ay ang proseso ng pag-alis ng ilang bahagi ng frame, ie aalisin namin ang mga pixel na ang kulay na mga halaga ng BGR na hindi namamalagi sa tinukoy na saklaw ng kulay at ginagawa ito ng cv2.inRange. Pagkatapos, inilalapat namin ang saklaw ng kulay sa naka-mask na imahe depende sa mga halaga ng pixel at para dito, gagamitin namin ang cv2.bitwise_and, Itatalaga lang nito ang mga kulay sa masked na rehiyon depende sa mga halaga ng mask at saklaw ng kulay.

Link para sa cv2. bitwise_and:

Hakbang 5: Sa wakas Ipinapakita

Sa wakas Ipinapakita!
Sa wakas Ipinapakita!

Dito ko ginamit ang pangunahing cv2.imshow () para sa pagpapakita para sa bawat frame bilang isang imahe. Dahil mayroon akong data ng frame na nakaimbak sa mga variable na maaari kong makuha ang mga ito sa imshow (). Dito ko naipakita ang lahat ng tatlong mga frame, orihinal, nakamaskara, at may kulay.

Ngayon kailangan nating lumabas mula sa habang loop. Para sa mga ito, maaari naming ipatupad nang simple ang cv2.wait. Key (). Karaniwang sinasabi nito ang oras ng paghihintay bago tumugon. Kaya't kung pumasa ka sa 0 maghihintay ito nang walang hanggan at sinabi ng 0xFF na ang arkitektura ay 64bit. Tinutukoy ng "ord ()" ang character na kapag pinindot ay isasagawa ang break command kung block at lalabas ito sa loop.

Pagkatapos ay isara ng cap.release () ang recorder ng video at cv2.destroyAllWindows () isara ang lahat ng binuksan na mga bintana.

Kung mayroon kang anumang isyu, mangyaring ipaalam sa akin.

Link sa source code:

Inirerekumendang: