Tartalomjegyzék:

OpenCV Basic Projects: 5 lépés
OpenCV Basic Projects: 5 lépés

Videó: OpenCV Basic Projects: 5 lépés

Videó: OpenCV Basic Projects: 5 lépés
Videó: ЖИТЬ 2024, Július
Anonim
OpenCV Basic projektek
OpenCV Basic projektek

Ebben a projektben az OpenCV alapvető funkcióit vizsgáljuk meg 4 egyszerű projekten keresztül, amelyekben élő videofolyam szerepel. Ezek az arcfelismerés, a háttér eltávolítása, az élek különleges vizuális megjelenítése és az elmosódott effektus alkalmazása az élő videófolyamban. Ezeknek a projekteknek a kipróbálásának fő célja az volt, hogy egyszerűen nedvesítsem a lábam az OpenCV interfésszel, mivel azt tervezem, hogy elmélyedek a számítógépes látás területén

Kellékek

  • Python futtató számítógép
  • Nyissa meg a CV könyvtárat, a Numpy könyvtárat, a tkinter könyvtárat, a sys könyvtárat
  • Fényképezőgép a számítógéphez való csatlakozáshoz (ha a számítógép még nem tartalmaz ilyet)
  • A program python fájlja (ez az utasítás tartalmazza)
  • haarcascade xml fájl (ez az utasítás tartalmazza)

1. lépés: FaceDetect funkció

FaceDetect funkció
FaceDetect funkció
FaceDetect funkció
FaceDetect funkció

Ez a funkció a fényképezőgép videóját zöld négyzetekkel jeleníti meg minden felvételen. A kódban a cv2. VideoCapture () függvényt használjuk az általunk rögzített videó "capture" nevű objektumban való tárolására. A CAPTURE_INDEX a számítógép által beállított szám, amely megfelel a számítógép videobemeneti listájában szereplő fényképezőgép indexének. Ha nincs külső kamera csatlakoztatva a számítógéphez, akkor a 0 -nak vagy az 1 -nek kell működnie.

A face_cascade objektum inicializálása a cascadeClassifier függvény és az OpenCV githubban található "haarcascade_frontalface_default.xml" fájl segítségével történik. Ezzel az objektummal tároljuk a listában "arcok" -ban észlelt arcokat, mint egy négyirányú sorszámú bejegyzést, amely tartalmazza az arcokat x koordináta, y koordináta, szélesség és magasság. Ezután rajzolunk egy téglalapot, amely tökéletesen körülveszi az arcot a cv2.rectangle függvény használatával

Ebből a videóból az OpenCV sok képet rögzít a mi ciklusunkban a capture.read () használatával, és a képet egy "img" nevű keretben tárolja. Ezután minden képet a kívánt módon értelmezünk és módosítunk. A faceDetect esetében a képet szürkére tesszük a cvtColor függvény használatával, amely az első paraméterben megadott képet átalakítja a második paraméterben meghatározott típusú képszínre. A második paraméter elfogadható értékeinek listája megtalálható az interneten. Ezután megjelenítjük a képet az "Arc felismerése" nevű ablakban az imshow () függvény használatával, amely karakterláncot vesz fel az ablak nevére és a megjelenítendő képkeretre.

Végül várjuk, hogy a felhasználó írja be a q gombot a cv2.waitKey () függvénnyel. A 0xFF maszkot konvencióként használják 64 bites számítógépeken. Miután a felhasználó befejezte a videófolyamot, a faceDetect funkció felszabadítja a rögzítési objektumot, majd megsemmisíti az OpenCV interfész alatt megnyitott összes ablakot. Az összes többi funkció hasonló tervezési struktúrát követ.

2. lépés: BackgroundRemove függvény

BackgroundRemove függvény
BackgroundRemove függvény
BackgroundRemove függvény
BackgroundRemove függvény

Ez a funkció megpróbálja eltávolítani videónk háttérrészét, és csak az előtérképet hagyja meg. Előfordulhat, hogy egyes fényképezőgépeken nem működik, mivel olyan világítási beállítást alkalmaznak, amely akkor aktiválódik, amikor különböző tárgyak/ fókuszok lépnek be a keretbe. Ha a backgroundRemove funkciója nem működik, ne aggódjon- ez csak a fényképezőgép lehet!

A funkció használatához lépjen el a kamera keretétől, és nyomja meg a "d" gombot a háttérkép rögzítéséhez. Fontos, hogy ne legyen mozgó tárgy a háttérben, amelyet rögzíteni szeretne. Ezután visszamehetünk a kamera keretébe. Ha a funkció működött, a felhasználó csak saját magát láthatja a funkció video -adatfolyamán. Bármilyen zaj/fekete folt az előtérben a fényképezőgép megvilágításának beállítása miatt következhet be. Egy másik háttér rögzítéséhez nyomja meg az "r" gombot az újraindításhoz, majd nyomja meg ismét a "d" gombot.

Ennek a funkciónak néhány kulcsfontosságú eszköze a "flag" logikai érték használata, amely akkor jelenik meg, amikor a felhasználó megnyomja a d gombot. Ez rögzíti a hátteret, és lehetővé teszi, hogy eltávolítsuk azt a funkció által közvetített videóból. Célunk, hogy a háttérképet a ref_img fájlban tároljuk, hogy meg tudjuk különböztetni azt az előtérképtől, amely bármilyen mozgó tárgyat rögzít. A cv2.subtract () függvénnyel kivonjuk az előföldi képet a háttérképből, és fordítva, majd azonnal töröljük a két kép minden apró eltérését. A háttér elsötétült.

Az fgmask a két kép közötti különbség felhasználásával készül, majd az OpenCV cv2.bitwise_and () függvényével alkalmazzák a függvények videófolyamára.

3. lépés: VideoEdges funkció

VideoEdges funkció
VideoEdges funkció
VideoEdges funkció
VideoEdges funkció

Ez a funkció visszaadja az élő videó streamünket, de az észlelhető élek fehérek, míg minden más el van sötétítve. Ami megkülönbözteti ezt a funkciót a többi funkciótól, az az, hogy eredeti videónkat RBG formátumból HSV-vé alakítottuk át, amely a színárnyalatot, a telítettséget és a variációt jelenti- egy másik módszer a fény és a szín feldolgozására a videótól. Ezzel a módszerrel könnyebben meg tudjuk különböztetni a videó körvonalait egy szűrő alkalmazásával (red_low to red_high).

A Canny Edge Detection a kép éleinek észlelésére szolgál. Szürkeárnyalatos képet fogad be bemenetként, és többlépcsős algoritmust használ.

4. lépés: VideoBlur funkció

VideoBlur funkció
VideoBlur funkció
VideoBlur funkció
VideoBlur funkció

Ezzel a funkcióval elmosódó hatást adhatunk a videófolyamunkhoz. Az egyszerű függvény a keretünk GaussianBlur cv2 függvényét hívja meg. További információk a gaussianBlur funkcióról itt találhatók:

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

5. lépés: Javítások

Ebben a projektben a legérzékenyebb funkció a háttér eltávolítása, mivel olyan fényképezőgép használatát igényli, amely nem rendelkezik világítás -beállítási funkcióval. Lehet, hogy az OpenCV könyvtáron belül van egy jobb funkciókészlet, amely figyelembe veszi ezt a megvilágítást és simán eltávolítja a hátteret (hasonlóan a zöld képernyőhöz).

Használhatnánk más arcfelismerési funkciókat is, amelyek az (x, y) koordinátákon kívül több funkcióval rendelkező objektumokat is előállíthatnak. Talán egy arcfelismerő programot, amely képes emlékezni az arcokra, nem lenne túl nehéz megvalósítani.

Az elmosódási funkció személyre szabható a felhasználó intuitív vezérlésével. Például a felhasználó beállíthatja az elmosódási hatás intenzitását, vagy kiválaszthat egy bizonyos területet a keretben az elmosódáshoz.

Ajánlott: