Átméretezés (OpenCV)
dst = cv2.resize(src, dsize, dst, fx=0, fy=0, interpolation=INTER_LINEAR)
dst | Célkép. Nem lehet azonos a forrással! (Függvény paraméterként átadhatunk None értéket helyette, ha visszatérési értéket használjuk.) |
src | Forráskép. |
dsize | Eredmény kép mérete. Tuple objektumként kell megadni, például dsize = (200, 100). Az első érték a szélesség, a második a magasság! Ha None méretet adunk át, akkor az OpenCV számolja ki, ekkor kell viszont az fx és fy paraméter: dsize = (round(fx * src.shape[1]), round(fy * src.shape[0])) |
fx | Skálázás mértéke X-tengely mentén. Ha 0, akkor az OpenCV számolja ki a két képmátrix szélességének arányából: fx = dsize[0] / src.shape[1] |
fy | Skálázás mértéke Y-tengely mentén. Ha 0, akkor az OpenCV számolja ki a két kép magasságának arányából: fy = dsize[1] / src.shape[0] |
interpolation | INTER_NEAREST: legközelebbi szomszéd INTER_LINEAR: lineáris INTER_AREA: terület-alapú INTER_CUBIC: köbös spline 4x4 környezet alapján INTER_LANCZOS4: Lanczos interpoláció 8x8 környezet alapján |
Kicsinyítéskor az INTER_AREA a legcélszerűbb. Nagyításra az INTER_LANCZOS4 vagy az INTER_LINEAR (gyorsabb).
Példák:
- Az új kép méretét explicit megadjuk, a nagyítási mértékek a forrás és a cél méretének aránya alapján számítódnak:
dst = cv2.resize(src, (200, 100), intepolation=cv2.INTER_LINEAR) - A skálázás mértékét adjuk meg, az eredménykép méretét az OpenCV számítja ki (a példában irányonként a felére):
dst = cv2.resize(src, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_LINEAR)