Përmbajtje:

Projektet Bazë të OpenCV: 5 hapa
Projektet Bazë të OpenCV: 5 hapa

Video: Projektet Bazë të OpenCV: 5 hapa

Video: Projektet Bazë të OpenCV: 5 hapa
Video: 5 УДИВИТЕЛЬНЫХ ЖИЗНЕННЫХ ХАКОВ # 2 2024, Nëntor
Anonim
Projektet Themelore OpenCV
Projektet Themelore OpenCV

Në këtë projekt, ne eksplorojmë disa funksione themelore OpenCV përmes 4 projekteve të thjeshta që përfshijnë një transmetim të drejtpërdrejtë të videos. Këto janë njohja e fytyrës, heqja e sfondit, paraqitja e veçantë vizuale e skajeve dhe aplikimi i një efekti të turbullt në transmetimin e drejtpërdrejtë të videos. Qëllimi im kryesor për të provuar këto projekte ishte thjesht të lagja këmbët me ndërfaqen OpenCV, pasi kam në plan të thellohem më shumë në fushën e vizionit kompjuterik

Furnizimet

  • Kompjuteri që funksionon Python
  • Biblioteka e hapur CV, biblioteka Numpy, biblioteka tkinter, biblioteka sys
  • Kamera për t'u lidhur me kompjuterin (nëse kompjuteri nuk e përfshin atë tashmë)
  • Skedari python i programit (i përfshirë në këtë udhëzues)
  • haarcascade xml file (e përfshirë në këtë udhëzues)

Hapi 1: Funksioni FaceDetect

Funksioni FaceDetect
Funksioni FaceDetect
Funksioni FaceDetect
Funksioni FaceDetect

Ky funksion tregon videon e kamerës tuaj me katrorë të gjelbër në çdo faqe që ajo merr. Në kod, ne përdorim funksionin cv2. VideoCapture () për të ruajtur videon që po kapim në një objekt të quajtur "kapje". CAPTURE_INDEX është një numër i vendosur nga kompjuteri juaj që korrespondon me indeksin e kamerës suaj në listën e hyrjes së videove të kompjuterit. Nëse nuk keni një aparat të jashtëm të lidhur me kompjuterin tuaj, 0 ose 1 duhet të funksionojë.

Objekti face_cascade inicializohet duke përdorur funksionin cascadeClassifier dhe skedarin "haarcascade_frontalface_default.xml" që gjendet në githubin OpenCV. Ne e përdorim këtë objekt për të ruajtur fytyrat e zbuluara në listën "fytyra" si një hyrje me katër drejtime që mban fytyrat x koordinatë, koordinatë y, gjerësi dhe lartësi. Pastaj vizatojmë një drejtkëndësh që mbyll në mënyrë perfekte fytyrën duke përdorur funksionin cv2.rectangle

Nga kjo video, OpenCV kap shumë imazhe në lakin tonë duke përdorur capture.read () dhe ruajtjen e imazhit në një kornizë që ne e quajtëm "img". Çdo imazh më pas interpretohet dhe modifikohet sipas dëshirës. Për faceDetect, ne e bëjmë imazhin gri duke përdorur funksionin cvtColor që konverton çdo imazh që jepet në parametrin e parë në një lloj të veçantë të ngjyrës së figurës të specifikuar në parametrin e dytë. Lista e vlerave të pranueshme për parametrin e dytë mund të gjendet në internet. Ne pastaj shfaqim imazhin në një dritare të quajtur "Zbulimi i fytyrës" duke përdorur funksionin imshow () që merr një varg për emrin e dritares dhe kornizën e imazhit që do të shfaqet.

Më në fund presim që përdoruesi të fusë çelësin q duke përdorur funksionin cv2.waitKey (). Maska 0xFF përdoret si një konventë për kompjuterët 64 bit. Pasi përdoruesi të ketë përfunduar transmetimin e videos, funksioni faceDetect çliron objektin e kapjes dhe pastaj shkatërron çdo dritare tjetër të hapur nën ndërfaqen OpenCV. Të gjitha funksionet e tjera ndjekin një strukturë të ngjashme të projektimit.

Hapi 2: Funksioni BackgroundRemove

Funksioni BackgroundRemove
Funksioni BackgroundRemove
Funksioni BackgroundRemove
Funksioni BackgroundRemove

Ky funksion përpiqet të heqë pjesën e sfondit të videos sonë dhe të lërë vetëm imazhin e parë. Mund të mos funksionojë në disa kamera, pasi ato përdorin një funksion të rregullimit të ndriçimit që aktivizohet kur objekte/ vatra të ndryshme hyjnë në kornizë. Nëse funksioni juaj backgroundRemove nuk funksionon, mos u shqetësoni- mund të jetë thjesht kamera juaj!

Për të përdorur këtë funksion, largohuni nga korniza e kamerës dhe shtypni butonin "d" për të kapur imazhin e sfondit. Shtë e rëndësishme që të mos ketë objekte lëvizëse në sfondin që dëshironi të kapni. Pastaj, ne mund të kthehemi përsëri në kornizën e kamerës. Nëse funksioni funksionoi, përdoruesi duhet ta shohë veten vetëm në transmetimin e videos të funksionit. Çdo zhurmë/njolla të zeza në imazhin e parë mund të jetë rezultat i rregullimit të ndriçimit të kamerës. Për të kapur një sfond tjetër, shtypni butonin "r" për të rifilluar, pastaj shtypni përsëri "d".

Disa marrje kryesore të këtij funksioni është përdorimi i "flamurit" boolean që ngrihet sapo përdoruesi të shtypë butonin d. Kjo kap sfondin dhe na lejon ta heqim atë nga videoja që transmetohet nga funksioni. Ne synojmë të ruajmë imazhin e sfondit në ref_img në mënyrë që ta dallojmë atë nga imazhi i parë, i cili kap çdo objekt në lëvizje. Ne përdorim funksionin cv2.subtract () për të hequr imazhin e terrenit nga imazhi i sfondit dhe anasjelltas, pastaj anulojmë çdo ndryshim të vogël në dy imazhet menjëherë pas. Sfondi është nxirë.

Maska fg është bërë duke përdorur ndryshimin midis këtyre dy imazheve dhe më pas aplikohet në funksionet e transmetimit të videos duke përdorur funksionin OpenCV cv2.bitwise_and ().

Hapi 3: Funksioni VideoEdges

Funksioni VideoEdges
Funksioni VideoEdges
Funksioni VideoEdges
Funksioni VideoEdges

Ky funksion kthen një transmetim të drejtpërdrejtë të videos, por skajet e zbulueshme bëhen të bardha ndërsa gjithçka tjetër është errësuar. Ajo që e dallon këtë funksion nga funksionet e tjera është shndërrimi i videos sonë origjinale nga formati RBG në HSV, që nënkupton ngjyrimin, ngopjen dhe ndryshimin- një metodë e ndryshme e përpunimit të dritës dhe ngjyrës nga një video. Me këtë metodë, ne mund të dallojmë më lehtë skicat në video duke aplikuar një filtër (nga i kuq në të kuqe i lartë).

Canny Edge Detection përdoret për të zbuluar skajet në një imazh. Ai pranon një imazh të shkallës gri si hyrje dhe përdor një algoritëm me shumë faza.

Hapi 4: Funksioni VideoBlur

Funksioni VideoBlur
Funksioni VideoBlur
Funksioni VideoBlur
Funksioni VideoBlur

Ky funksion përdoret për të shtuar një efekt mjegullimi në transmetimin tonë të videos. Funksioni i thjeshtë thërret funksionin GaussianBlur cv2 në kornizën tonë. Informacione të mëtejshme mbi funksionin gaussianBlur mund të gjenden këtu:

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

Hapi 5: Përmirësimet

Funksioni më i ndjeshëm në këtë projekt është funksioni i heqjes së sfondit, pasi kërkon përdorimin e një kamere që nuk ka funksion të rregullimit të ndriçimit. Mund të ketë një grup më të mirë të funksioneve brenda bibliotekës OpenCV që mund të llogaritin këtë rregullim ndriçimi dhe të heqin pa probleme sfondin (i ngjashëm me një ekran të gjelbër).

Ne gjithashtu mund të përdorim funksione të tjera të zbulimit të fytyrës që mund të prodhojnë objekte me më shumë funksionalitete sesa thjesht kthimin (x, y) koordinatat. Ndoshta një program i njohjes së fytyrës me aftësinë për të kujtuar fytyrat nuk do të ishte shumë i vështirë për t'u zbatuar.

Funksioni i turbullimit mund të personalizohet më shumë nëpërmjet kontrollit intuitiv nga përdoruesi. Për shembull, përdoruesi mund të dëshirojë të rregullojë intensitetin e efektit të turbullimit ose të zgjedhë një zonë të caktuar brenda kornizës për tu mjegulluar.

Recommended: