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.
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.