Python programozási oktatóanyagok
On november 29, 2021 by adminRajzolás és írás képre OpenCV Python oktatóanyag
Ebben az OpenCV és Python oktatóanyagban arról lesz szó, hogyan rajzolhatunk különböző alakzatokat a képekre és videókra. Elég gyakori, hogy az észlelt objektumokat valamilyen módon meg akarjuk jelölni, hogy mi, emberek könnyen láthassuk, hogy a programjaink úgy működnek-e, ahogyan azt reméljük. Erre példa lehet a korábban bemutatott képek egyike:
Ezzel az ideiglenes példával kapcsolatban a következő képet fogom használni:
Azt javasoljuk, hogy használd a saját képedet. A szokásos módon a kezdő kódunk lehet valami ilyesmi:
import numpy as npimport cv2img = cv2.imread('watch.jpg',cv2.IMREAD_COLOR)
Majd elkezdhetjük a rajzolást, például:
cv2.line(img,(0,0),(150,150),(255,255,255),15)cv2.imshow('image',img)cv2.waitKey(0)cv2.destroyAllWindows()
A cv2.line() a következő paramétereket veszi fel: where, kezdőkoordináták, végkoordináták, szín (bgr), vonalvastagság.
Az eredmény itt:
Jól van, király, kezdjünk el abszurdizálni még néhány alakzattal. Következzen egy téglalap:
cv2.rectangle(img,(15,25),(200,150),(0,0,255),15)
A paraméterek itt a kép, a bal felső koordináta, a jobb alsó koordináta, a szín és a vonalvastagság.
Hogyan tetszik egy kör?
cv2.circle(img,(100,63), 55, (0,255,0), -1)
A paraméterek itt a kép/keret, a kör középpontja, a sugár, a szín, majd a vastagság. Vegyük észre, hogy a vastagságra -1-et adunk meg. Ez azt jelenti, hogy az objektum ténylegesen ki lesz töltve, tehát egy kitöltött kört fogunk kapni.
A vonalak, téglalapok és körök menők, meg minden, de mi van, ha ötszöget, vagy nyolcszöget, vagy oktdekszöget akarunk?! Nem probléma!
Először is, nevezzük el a pts-t, a points rövidítése, mint numpy koordinátatömböt. Ezután a cv2.polylines segítségével megrajzoljuk a vonalakat. A paraméterek a következők: hova rajzoljuk az objektumot, a koordinátákat, “összekötjük”-e a végső és a kezdőpontot, a színt, és ismét a vastagságot.
Az utolsó dolog, amit érdemes lehet, hogy ráírunk a képre. Ez így történhet:
font = cv2.FONT_HERSHEY_SIMPLEXcv2.putText(img,'OpenCV Tuts!',(0,130), font, 1, (200,255,155), 2, cv2.LINE_AA)
A teljes kód eddig a pontig valami ilyesmi lenne:
Az eredmény:
A következő bemutatóban az alapvető képműveletekkel fogunk foglalkozni, amelyeket elvégezhetünk.
Vélemény, hozzászólás?