Az Önhöz hasonló olvasók támogatják a MUO-t. Amikor a webhelyünkön található linkek használatával vásárol, társult jutalékot kaphatunk. Olvass tovább.

Egy gyönyörű vázlat elkészítése sok időt és erőfeszítést igényel. Szerencsére a programozás fejlődött, így már könnyedén átalakíthatja a képeket és gyönyörű terveket készíthet. Az egyik lenyűgöző technika, amelyet végrehajthat, a kép digitális vázlattá alakítása.

Bár egy mechanikus vázlat nem fog pontosan úgy kinézni, mint a saját ceruzarajza, a kimenettel mégis érdemes kísérletezni. Tanulja meg, hogyan kell programozni egy ilyen alkalmazást az OpenCV modul segítségével a szuperbarát Python nyelven.

Az OpenCV modul

Az OpenCV egy Intel által kifejlesztett és karbantartott, nyílt forráskódú könyvtár a képfeldolgozáshoz és számítógépes látáshoz használt számítógépes látásmódszerekkel. Lehetővé teszi a felhasználók számára az optimalizált alkalmazások létrehozását, valós időben való interakciót a képekkel és videókkal, valamint az igényeiknek megfelelő ideális algoritmus kiválasztását.

instagram viewer

Néhány népszerű alkalmazása a Az OpenCV arcfelismerést is tartalmaz, automatikus arckövetés a moziban, közösségi média szűrők, autó rendszám felismeréseés CCTV megfigyelés. Az OpenCV modul Pythonban való használatához nyissa meg a terminált, és írja be a következő parancsot:

pip install opencv-python

Hogyan lehet bármilyen képet vázlattá konvertálni Python segítségével

Ha kedvenc képét digitális vázlattá szeretné konvertálni, először helyezze el ugyanabba a mappába, mint egy új Python-programmal, az egyszerű hivatkozás érdekében. Ezután kezdje el a program felépítését a következő lépésekkel.

Ez a példakód elérhető a GitHub adattár és az MIT licence alapján ingyenesen használható.

Az első lépés az OpenCV modul importálása a környezetbe. Amint az OpenCV elérhető, funkcióit különféle feladatok elvégzésére használhatja. Adja át a képfájl elérési útját a imread() funkció betöltéséhez. Tárolja képét egy változóban – az úgynevezett kép1 itt – későbbi hivatkozás céljából.

Tárolja az ablak címét egy nevű változóban ablak_neve. Ez akkor lehet hasznos, ha úgy dönt, hogy a képet a imshow() funkció. Ez a funkció két paramétert igényel: a címet és a megjeleníteni kívánt képet.

import cv2

kép1 = cv2.imread("kép.jpg")
ablak_neve = "Valóságos kép"
cv2.imshow (ablaknév, kép1)

Miután megvan a kívánt kép, öt műveletet kell végrehajtania, hogy vázlattá alakítsa. Először konvertálja a színes képet szürkeárnyalatossá. Ezt megteheti a cvtColor() funkció. Ez a funkció beveszi azt a képet, amelynek színeit módosítani szeretné, és egy konverziós kódot, mint pl COLOR_BGR2GRAY.

gray_img = cv2.cvtColor (kép1, cv2.COLOR_BGR2GRAY)

Ha megvan a szürkeárnyalatos kép, fordítsa meg a színeit. Ezen a ponton meg kell értened, hogy a számítógép hogyan alkot képet. Egy kép sok apró pixelből áll, változó intenzitással. Egy színes képen minden pixel piros, zöld és kék komponenseket tartalmaz, amelyek intenzitása 0 és 255 között változik.

A szürkeárnyalatos képen csak a szürke árnyalatai vannak, így egy pixel intenzitása 0 és 1 között változik. A kép pixelintenzitásának megfordításához adja át a szürkeárnyalatos képet a bitwise_not() funkció.

Ahogy a neve is sugallja, ez a függvény az egyes pixelek értékét a kiegészítő megfelelőjére fordítja. Minden 0-nál nagyobb képpont 0-ra, a 0-val egyenlő képpont 255-re van állítva.

invert = cv2.bitwise_not (grey_img)

A pixelintenzitás megfordítása után a Gaussian Blur segítségével simítható a kép. A Gauss-elmosás folyamat Gauss-szűrőt használ. A Gauss-szűrő egy aluláteresztő szűrő, amely csak alacsony frekvenciákat enged át, eltávolítva a jel vagy kép magas frekvenciájú összetevőit.

OpenCV-k GaussianBlur() függvény négy paramétert fogad el. Ezek egy mátrix objektum, amely a forrásképként működik, a ksize (a kernel mérete) és a sigmaX (a Gauss-kernel szórása).

Tegyük fel, hogy van egy fizikai fénykép a kezében. Ha el szeretné homályosítani, viasz- vagy pergamenpapírdarabkákat kenhet rá. Elképzelheti a kernelt átlátszó papírdarabként. Digitálisan ez egy kicsit másképp történik. A digitális kép elmosásához, élesítéséhez és egyéb effektusok alkalmazásához meg kell szorozni a mátrixot a kép pixeleinek intenzitásával.

A ksize mindig pozitív páratlan szám. A kernel méretének növelésével az elmosódás növekszik. A sigmaX megértéséhez feltételezzük, hogy viaszt viszünk fel egy papírra. A viasz felhordásakor a papír egyenletesen áttetszővé válik. Hasonlóképpen, a kernel értékeit egy adott pont (átlag) közelében kell tartani. A sigmaX érték a kép képpontjainak átlagos és egyéb értékei közötti különbséget határozza meg.

Adja át az invertált képet, a magméretet (21, 21) és a 0 szórást a Gauss-elmosás függvénynek:

blur = cv2.GaussianBlur (invert, (21, 21), 0)

Adja át az elmosódott képet a bitwise_not() függvénynek, hogy megfordítsa:

invertedblur = cv2.bitwise_not (elmosás)

Végül használja a feloszt() funkció, valamint a szürkeárnyalatos képtömb és az invertált elmosódott képtömb elemenkénti felosztása 256-os skálával.

vázlat = cv2.divide (grey_img, invertedblur, scale=256.0)

A funkció lényegében a következő műveletet hajtja végre:

deffeloszt(grey_img, b, invertedblur=256.0):
Visszatérés (grey_img * skála) / invertedblur

Tárolja az eredményt egy vázlat nevű változóban. A végső kép mentéséhez adjon nevet a kimeneti fájlnak és a vázlatképnek imwrite() funkció. Ennek ellenőrzésére az imread() függvény segítségével betöltheti a mentett vázlatképet, megadhatja az ablak címét és megjelenítheti az imshow() függvény segítségével.

Használja a várj kulcs() funkciót a 0 átadásával az eredeti képablak és a generált vázlatablak megjelenítéséhez, amíg meg nem nyom egy gombot.

cv2.imwrite("sketch.jpeg", vázlat)
image = cv2.imread("sketch.jpeg")
ablak_neve ="Vázlatkép"
cv2.imshow (ablaknév, kép)
cv2.waitKey(0)

Hozza össze az összes kódot, és máris kész a program.

Példakimenet egy kép vázlattá konvertálásához a Python program használatával

Kiválaszthat egy gyönyörű tájképet, és futtathatja azt a programon, hogy elkészítse ezt a lenyűgöző digitális vázlatot.

Portréképen a program a következő digitális vázlatot állítja elő.

A funkció paramétereivel tetszés szerint kísérletezhet a kívánt digitális vázlat létrehozásához.

Képfeldolgozás és számítógépes látás

A képfeldolgozás és a számítógépes látás a technológia két, egymással szorosan összefüggő területe. Mindkettő magában foglalja a digitális képek megváltoztatását a kívánt eredmények elérése érdekében. A képfeldolgozás a kép javítására összpontosít, míg a számítógépes látás mintákat és tárgyakat keres a képen, hogy megértse azt.

A Scikit-image egy másik Python-könyvtár, amely képfeldolgozási funkciók széles skáláját kínálja. Számos előre lefordított modult, szűrőt, réteget, transzformációt és egyebeket tartalmaz. Ha olyan modult keres, amelyet mély tanulási modellekhez (például CNN és ​​RNN) használhat, érdemes lehet felfedezni a Torchvisiont.