Skip navigation

Üres képmátrix létrehozása és rajzolás

Numpy mátrix létrehozása

Az előző példaprogramokban a képeket külső képfájlokból olvastuk be, aminek a reprezentációja egy Numpy tömb. Természetesen saját új mátrixokat is létrehozhatunk, és képmátrixként használhatunk.

Első lépésként szükséges a Numpy csomag importálása a programunkba.

import numpy as np

A Numpy ndarray() függvényvel hozható létre új, n-dimenzió mátrix, aminek az elemtípusát is meg kell adnunk. Például egy 200 sorból, 300 oszlopból álló, előjel nélküli 8 bites egész értékekkel reprezentált 3 csatornás kép létrehozása az alábbi:

img = np.ndarray((200, 320, 3), np.uint8)

A mátrix dimenzióit Python tuple típusként kell átadni, ami zárójelek között, vesszőkkel elválasztott értékeket jelent. Ami fontos, hogy ez egy darab paraméter objektumként értelmeződik, vagyis a fenti függvényhívás 2 paramétert kap meg. A típusokkal később foglalkozunk.

Innentől az img változó egy Numpy objektum lesz, amelynek elérhetjük a függvényeit. Pl. a fill() segítségével minden csatorna minden eleme a függvényparaméter értékét kapja.

OpenCV rajzoló függvények

Az OpenCV lehetőséget biztosít képmátrixba egyszerű raszteres grafikus elemek, mint például kör, vonal, szöveg elhelyezésére.

Példa kör rajzolásra:

cv2.circle(img, (50, 100), 40, (0, 0, 192), -1)

Ez az img képmátrixban helyez el kört (50, 100) középponttal, 40 pixel sugárral, 192 fényességértékű vörös színnel, alapértelmezett vonalvastagsággal.

További rajzoló függvények (angol nyelvű dokumentáció):

02_03_ocv_draw_circle.py

# OpenCV2 képmátrix létrehozása, megjelenítés és fájlba mentése
# OpenCV online dokumentáció: https://docs.opencv.org/3.4.0/

# Modul definíciók importálása
import numpy as np

import cv2

# 320x200x3 méretű Numpy tömb létrehozása RGB színes képnek
img = np.ndarray((200,320,3), np.uint8)

# Feltöltés 192 (világosszürke) színnel
img.fill(192)

# Kör rajzolása az (50, 100) középponttal, 40 sugárral, vörös színnel
cv2.circle(img, (50, 100), 40, (0, 0, 192), -1)

# További rajzoló függvények:
# https://docs.opencv.org/3.4.0/dc/da5/tutorial_py_drawing_functions.html

# Kép megjelenítése ablakban
cv2.imshow('image', img)

cv2.waitKey(0)

# Kép mentése fájlba
cv2.imwrite('ocv_test1_out.png', img)


# Összes ablak bezárása
cv2.destroyAllWindows()

Eredmény

Feladat

Rajzoljunk további elemeket, és írjunk szöveget a képmátrixba!