Skip to main content

OpenCV Layer Helper

Project description

cvlayer

PyPI PyPI - Python Version GitHub

OpenCV Layer Helper

Install

Install cvlayer:

pip install cvlayer

Install cvlayer with opencv-python:

pip install cvlayer[opencv]

Install cvlayer with opencv-python-headless:

pip install cvlayer[headless]

Usage

CvLayer

Just inherit cvlayer.CvLayer.

from cvlayer import CvLayer


class YourApp(CvLayer):
    def func(self, image):
        self.cvl_cvt_color_bgr2hsv(image)

CvWindow

Just inherit cvlayer.CvWindow.

from sys import argv

from cvlayer import CvLayer, CvWindow
from cvlayer.palette.basic import RED


class YourWindow(CvWindow, CvLayer):
    def __init__(self, source: str):
        super().__init__(source)

    def on_frame(self, image):
        with self.layer("hsv") as layer:
            layer.frame = self.cvl_cvt_color_bgr2hsv(layer.prev_frame)

        with self.layer("select-hsv-channel") as layer:
            i = layer.param("i").build_unsigned(0, max_value=2).value
            layer.frame = channel = layer.prev_frame[:, :, i].copy()

        with self.layer("select-roi") as layer:
            self.plot_roi = roi = layer.param("roi").build_select_roi().value
            layer.frame = image.copy()
            self.cvl_draw_rectangle(layer.frame, roi, color=RED)

        with self.layer("select-points") as layer:
            points = layer.param("points").build_select_points().value
            layer.frame = select_points = image.copy()
            for x, y in points:
                self.cvl_draw_crosshair_point(select_points, x, y, color=RED)

        return channel


if __name__ == "__main__":
    YourWindow(argv[1]).run()

Samples

from cvlayer import CvLayer, CvWindow

class YourWindow(CvWindow, CvLayer):
    def on_frame(self, image):
        with self.layer("morphology_ex") as layer:
            ksize = layer.param("ksize").build_unsigned(3, 3).value
            i = layer.param("iter").build_unsigned(1, 1).value
            m = self.cvl_get_structuring_element(MorphMethod.ELLIPSE, (ksize, ksize))
            src = layer.prev_frame
            opening = cv2.morphologyEx(src, cv2.MORPH_OPEN, m, iterations=i)
            layer.frame = opening
from cvlayer import CvLayer, CvWindow

class YourWindow(CvWindow, CvLayer):
    def on_frame(self, image):
        with self.layer("dilate") as layer:
            ksize = layer.param("ksize").build_unsigned(3, 3).value
            i = layer.param("iter").build_unsigned(1, 1).value
            m = self.cvl_get_structuring_element(MorphMethod.ELLIPSE, (ksize, ksize))
            layer.frame = dilate = self.cvl_dilate(layer.prev_frame, m, iterations=i)
from cvlayer import CvLayer, CvWindow

class YourWindow(CvWindow, CvLayer):
    def on_frame(self, image):
        with self.layer("erode") as layer:
            ksize = layer.param("ksize").build_unsigned(3, 3).value
            i = layer.param("iter").build_unsigned(1, 1).value
            m = self.cvl_get_structuring_element(MorphMethod.ELLIPSE, (ksize, ksize))
            layer.frame = erode = self.cvl_erode(layer.prev_frame, m, iterations=i)

License

See the LICENSE file for details. In summary, cvlayer is licensed under the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

cvlayer-0.9.0-py3-none-any.whl (100.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page