Talaan ng mga Nilalaman:

Pangunahing Mga Proyekto ng OpenCV: 5 Mga Hakbang
Pangunahing Mga Proyekto ng OpenCV: 5 Mga Hakbang

Video: Pangunahing Mga Proyekto ng OpenCV: 5 Mga Hakbang

Video: Pangunahing Mga Proyekto ng OpenCV: 5 Mga Hakbang
Video: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, Hulyo
Anonim
Mga Pangunahing Proyekto ng OpenCV
Mga Pangunahing Proyekto ng OpenCV

Sa proyektong ito, natutuklasan namin ang ilang pangunahing pagpapaandar ng OpenCV sa pamamagitan ng 4 na simpleng mga proyekto na nagsasangkot ng isang live na stream ng video. Ito ang pagkilala sa mukha, pag-aalis sa background, espesyal na visual rendering ng mga gilid, at paglalapat ng isang malabo na epekto sa live na stream ng video. Aking mga pangunahing layunin para sa pagsubok ang mga proyektong ito ay upang makakuha lamang ang aking mga paa basa sa OpenCV interface, bilang Plano ko upang hanaping mabuti mas malalim sa larangan ng computer vision

Mga gamit

  • Nagpapatakbo ng Python sa computer
  • Buksan ang CV library, Numpy library, tkinter library, sys library
  • Camera upang kumonekta sa computer (kung ang computer ay hindi kasama ang isa na)
  • Ang file ng python ng programa (kasama sa itinuturo na ito)
  • haarcascade xml file (kasama sa itinuturo na ito)

Hakbang 1: Pag-andar ng FaceDetect

Pag-andar ng FaceDetect
Pag-andar ng FaceDetect
Pag-andar ng FaceDetect
Pag-andar ng FaceDetect

Ipinapakita ng pagpapaandar na ito ang video ng iyong camera na may berdeng mga parisukat sa anumang mga mukha na kinukuha nito. Sa code, gagamitin namin ang mga cv2. VideoCapture () function na upang mag-imbak ang video na kami ay pagkuha sa isang bagay na may pangalang "capture". Ang CAPTURE_INDEX ay isang numero set sa pamamagitan ng iyong computer na tumutugon sa index ng iyong camera sa listahan ng video ng computer input. Kung wala kang isang panlabas na camera na nakakonekta sa iyong computer, 0 o 1 ang dapat gumana.

Ang bagay na face_cascade ay naisugod gamit ang pagpapaandar ng cascadeClassifier at ang "haarcascade_frontalface_default.xml" na file na natagpuan sa OpenCV github. Ginagamit namin ang bagay na ito upang maiimbak ang mga mukha na napansin sa listahan ng "mga mukha" bilang isang entry na apat na paraan na tuple na humahawak sa mga mukha x coordinate, y coordinate, lapad at taas. Pagkatapos ay gumuhit kami ng isang rektanggulo na perpektong naisasara ang mukha gamit ang pagpapaandar ng cv2.rectangle

Mula sa video na ito, nakukuha ng OpenCV ang maraming mga imahe sa aming habang loop gamit ang capture.read () at pagtatago ng imahe sa isang frame na pinangalanan naming "img". Ang bawat imahe ay na-interpret at binago ayon sa nais namin. Para sa faceDetect, ginagawa naming grey ang imahe gamit ang pagpapaandar ng cvtColor na nagko-convert ng anumang imahe na ibinigay sa unang parameter sa isang partikular na uri ng kulay ng imahe na tinukoy sa pangalawang parameter. Ang listahan ng mga katanggap-tanggap na halaga para sa pangalawang parameter ay matatagpuan sa online. Pagkatapos ay ipinapakita namin ang imahe sa isang window na pinangalanang "Pagtuklas sa mukha" gamit ang pagpapaandar na imshow () na tumatagal ng isang string para sa window name at maipakita ang frame ng imahe.

Sa wakas hinihintay namin ang user na ipasok ang q key gamit ang function na cv2.waitKey (). Ang mask na 0xFF ay ginagamit bilang isang kombensyon para sa 64 bit na mga computer. Matapos ang gumagamit ay natapos na ang video stream, ang FaceDetect function na frees ang pagkuha object pagkatapos destroys anumang iba pang mga bintana binuksan sa ilalim ng OpenCV interface. Ang lahat ng iba pang mga pagpapaandar ay sumusunod sa isang katulad na istraktura ng disenyo.

Hakbang 2: BackgroundRemove Function

BackgroundRemove Function
BackgroundRemove Function
BackgroundRemove Function
BackgroundRemove Function

Sinusubukan ng pagpapaandar na ito na alisin ang bahagi ng background ng aming video at iwanan lamang ang harapan na imahe. Hindi ito maaaring trabaho sa ilang mga camera, habang ang mga ito ayusin ang isang ilaw adjustment pag-andar na ay aktibo kapag iba't ibang mga bagay / foci ipasok ang frame. Kung ang iyong backgroundRemove function ay hindi gumagana, huwag mag-alala- maaari lamang itong ang iyong camera!

Upang magamit ang pagpapaandar na ito, lumayo mula sa frame ng camera at pindutin ang "d" key upang makuha ang larawan sa background. Mahalaga na walang mga gumagalaw na bagay sa background na nais mong makuha. Pagkatapos, maaari kaming bumalik sa frame ng camera. Kung gumana ang pagpapaandar, dapat lamang makita ng gumagamit ang kanilang sarili sa stream ng video ng pagpapaandar. Anumang ingay / itim na bloke sa harapan ng imahe ay maaaring isang resulta ng pagsasaayos ng ilaw ng camera. Upang makuha ang isa pang background, pindutin ang "r" key upang muling simulan, pagkatapos ay pindutin muli ang "d".

Ang ilang mga key tumagal-aways para sa function na ito ay ang paggamit ng "bandila" boolean na itinaas ang mga instant na mga gumagamit presses ang d button. Kinukuha nito ang background at pinapayagan kaming alisin ito mula sa video na na-stream ng pagpapaandar. Nilalayon naming itabi ang larawan sa background sa ref_img upang maaari naming makilala ito mula sa harapan ng imahe, na kumukuha ng anumang gumagalaw na bagay. Ginagamit namin ang pagpapaandar ng cv2.subtract () upang ibawas ang naunang ground image mula sa background na imahe at kabaliktaran, pagkatapos ay kanselahin ang anumang mga pagkakaiba sa minuscule sa dalawang imahe kaagad pagkatapos. Ang background ay naitim.

Ang fgmask ay ginawa gamit ang pagkakaiba sa pagitan ng dalawang imaheng ito at pagkatapos ay inilapat sa mga function ng video stream gamit ang OpenCV cv2.bitwise_and () function.

Hakbang 3: Pag-andar ng VideoEdges

Pag-andar ng VideoEdges
Pag-andar ng VideoEdges
Pag-andar ng VideoEdges
Pag-andar ng VideoEdges

Ang function na ito ay nagbabalik ng isang aming live video stream, ngunit ang detectable mga gilid ay nai-render puti habang lahat ng iba pa ay blacked out. Ang nakikilala sa pagpapaandar na ito mula sa iba pang mga pagpapaandar ay ang pag-convert ng aming orihinal na video mula sa format na RBG patungong HSV, na nangangahulugang kulay, saturation at pagkakaiba-iba - isang iba't ibang paraan ng pagpoproseso ng ilaw at kulay mula sa isang video. Sa pamamaraang ito, mas madali nating makikilala ang mga balangkas sa video sa pamamagitan ng paglalapat ng isang filter (red_low to red_high).

Ginagamit ang Canny Edge Detection upang makita ang mga gilid sa isang imahe. Tumatanggap ito ng isang kulay-abo na imahe ng scale bilang input at gumagamit ito ng isang multistage algorithm.

Hakbang 4: Pag-andar ng VideoBlur

Pag-andar ng VideoBlur
Pag-andar ng VideoBlur
Pag-andar ng VideoBlur
Pag-andar ng VideoBlur

Ginagamit ang pagpapaandar na ito upang magdagdag ng malabong epekto sa aming video stream. Tinatawag ng simpleng pagpapaandar ang pagpapaandar ng GaussianBlur cv2 sa aming frame. Ang karagdagang impormasyon sa pagpapaandar ng gaussianBlur ay matatagpuan dito:

opencv-python-tutroals.readthedocs.io/en/l…

Hakbang 5: Mga Pagpapabuti

Ang pinaka-sensitibong pag-andar sa proyektong ito ay ang pag-andar sa pag-alis ng background, dahil nangangailangan ito ng paggamit ng isang camera na walang pag-andar sa pag-aayos ng ilaw. Maaaring mayroong isang mas mahusay na hanay ng mga pag-andar sa loob ng library ng OpenCV na maaaring account para sa pagsasaayos ng ilaw na ito at maayos na alisin ang background (katulad ng isang berdeng screen).

maaari rin naming gamitin ang iba pang mga function face detection na maaaring makabuo ng mga bagay na may higit pang pag-andar maliban lang bumabalik (x, y) coordinates. Marahil ang isang programa sa pagkilala sa mukha na may kakayahang maalala ang mga mukha ay hindi magiging mahirap na ipatupad.

Ang pag-andar ng blur ay maaaring gawing mas maraming pagpapasadya sa pamamagitan ng intuitive control ng gumagamit. Halimbawa, maaaring nais ng gumagamit na ayusin ang tindi ng blurring na epekto o pumili ng isang tukoy na lugar sa loob ng frame upang lumabo.

Inirerekumendang: