# Generated by the protocol buffer compiler.  DO NOT EDIT!
# sources: cv_base.proto
# plugin: python-betterproto
from dataclasses import dataclass
from typing import List

import betterproto


class ImageType(betterproto.Enum):
    ALG_CV_8UC1 = 0
    ALG_CV_8SC1 = 1
    ALG_CV_16UC1 = 2
    ALG_CV_16SC1 = 3
    ALG_CV_32SC1 = 4
    ALG_CV_32FC1 = 5
    ALG_CV_64FC1 = 6
    ALG_CV_8UC2 = 8
    ALG_CV_8SC2 = 9
    ALG_CV_16UC2 = 10
    ALG_CV_16SC2 = 11
    ALG_CV_32SC2 = 12
    ALG_CV_32FC2 = 13
    ALG_CV_64FC2 = 14
    ALG_CV_8UC3 = 16
    ALG_CV_8SC3 = 17
    ALG_CV_16UC3 = 18
    ALG_CV_16SC3 = 19
    ALG_CV_32SC3 = 20
    ALG_CV_32FC3 = 21
    ALG_CV_64FC3 = 22
    ALG_CV_8UC4 = 24
    ALG_CV_8SC4 = 25
    ALG_CV_16UC4 = 26
    ALG_CV_16SC4 = 27
    ALG_CV_32SC4 = 28
    ALG_CV_32FC4 = 29
    ALG_CV_64FC4 = 30
    ALG_CV_8UC5 = 32
    ALG_CV_8SC5 = 33
    ALG_CV_16UC5 = 34
    ALG_CV_16SC5 = 35
    ALG_CV_32SC5 = 36
    ALG_CV_32FC5 = 37
    ALG_CV_64FC5 = 38
    ALG_CV_8UC6 = 40
    ALG_CV_8SC6 = 41
    ALG_CV_16UC6 = 42
    ALG_CV_16SC6 = 43
    ALG_CV_32SC6 = 44
    ALG_CV_32FC6 = 45
    ALG_CV_64FC6 = 46


class CvHersheyFonts(betterproto.Enum):
    """
    ////////////////////////////// OpenCV Special
    Parameters//////////////////////////////
    """

    FONT_HERSHEY_SIMPLEX = 0
    FONT_HERSHEY_PLAIN = 1
    FONT_HERSHEY_DUPLEX = 2
    FONT_HERSHEY_COMPLEX = 3
    FONT_HERSHEY_TRIPLEX = 4
    FONT_HERSHEY_COMPLEX_SMALL = 5
    FONT_HERSHEY_SCRIPT_SIMPLEX = 6
    FONT_HERSHEY_SCRIPT_COMPLEX = 7
    FONT_ITALIC = 16


class CvLineTypes(betterproto.Enum):
    DUMMY_LINE_TYPES = 0
    FILLED = -1
    LINE_4 = 4
    LINE_8 = 8
    LINE_AA = 16


class CvMarkerTypes(betterproto.Enum):
    MARKER_CROSS = 0
    MARKER_TILTED_CROSS = 1
    MARKER_STAR = 2
    MARKER_DIAMOND = 3
    MARKER_SQUARE = 4
    MARKER_TRIANGLE_UP = 5
    MARKER_TRIANGLE_DOWN = 6


class CvBorderTypes(betterproto.Enum):
    BORDER_CONSTANT = 0
    BORDER_REPLICATE = 1
    BORDER_REFLECT = 2
    BORDER_WRAP = 3
    # BORDER_REFLECT_101 = 4; //same as BORDER_DEFAULT
    BORDER_TRANSPARENT = 5
    # BORDER_REFLECT101 = 4; //same as BORDER_DEFAULT
    BORDER_DEFAULT = 4
    BORDER_ISOLATED = 16


class CvMorphShapes(betterproto.Enum):
    MORPH_RECT = 0
    MORPH_CROSS = 1
    MORPH_ELLIPSE = 2


class CvMorphTypes(betterproto.Enum):
    MORPH_ERODE = 0
    MORPH_DILATE = 1
    MORPH_OPEN = 2
    MORPH_CLOSE = 3
    MORPH_GRADIENT = 4
    MORPH_TOPHAT = 5
    MORPH_BLACKHAT = 6
    MORPH_HITMISS = 7


class CvThresholdTypes(betterproto.Enum):
    THRESH_BINARY = 0
    THRESH_BINARY_INV = 1
    THRESH_TRUNC = 2
    THRESH_TOZERO = 3
    THRESH_TOZERO_INV = 4
    THRESH_MASK = 7
    THRESH_OTSU = 8
    THRESH_TRIANGLE = 16


class CvAdaptiveThresholdTypes(betterproto.Enum):
    ADAPTIVE_THRESH_MEAN_C = 0
    ADAPTIVE_THRESH_GAUSSIAN_C = 1


class CvImreadModes(betterproto.Enum):
    IMREAD_GRAYSCALE = 0
    IMREAD_UNCHANGED = -1
    IMREAD_COLOR = 1
    IMREAD_ANYDEPTH = 2
    IMREAD_ANYCOLOR = 4
    IMREAD_LOAD_GDAL = 8
    IMREAD_REDUCED_GRAYSCALE_2 = 16
    IMREAD_REDUCED_COLOR_2 = 17
    IMREAD_REDUCED_GRAYSCALE_4 = 32
    IMREAD_REDUCED_COLOR_4 = 33
    IMREAD_REDUCED_GRAYSCALE_8 = 64
    IMREAD_REDUCED_COLOR_8 = 65
    IMREAD_IGNORE_ORIENTATION = 128


class CvNormTypes(betterproto.Enum):
    DUMMY_NORM_TYPES = 0
    NORM_INF = 1
    NORM_L1 = 2
    NORM_L2 = 4
    NORM_L2SQR = 5
    NORM_HAMMING = 6
    # NORM_HAMMING2 = 7;
    NORM_TYPE_MASK = 7
    NORM_RELATIVE = 8
    NORM_MINMAX = 32


class CvRetrievalModes(betterproto.Enum):
    RETR_EXTERNAL = 0
    RETR_LIST = 1
    RETR_CCOMP = 2
    RETR_TREE = 3
    RETR_FLOODFILL = 4


class CvContourApproximationModes(betterproto.Enum):
    DUMMY_CONTOUR_APPROXIMATION_MODES = 0
    CHAIN_APPROX_NONE = 1
    CHAIN_APPROX_SIMPLE = 2
    CHAIN_APPROX_TC89_L1 = 3
    CHAIN_APPROX_TC89_KCOS = 4


class CvHoughModes(betterproto.Enum):
    HOUGH_STANDARD = 0
    HOUGH_PROBABILISTIC = 1
    HOUGH_MULTI_SCALE = 2
    HOUGH_GRADIENT = 3
    HOUGH_GRADIENT_ALT = 4


class CvTemplateMatchModes(betterproto.Enum):
    TM_SQDIFF = 0
    TM_SQDIFF_NORMED = 1
    TM_CCORR = 2
    TM_CCORR_NORMED = 3
    TM_CCOEFF = 4
    TM_CCOEFF_NORMED = 5


@dataclass
class ImageInfo(betterproto.Message):
    name: str = betterproto.string_field(1)
    type: "ImageType" = betterproto.enum_field(2)
    width: int = betterproto.uint32_field(3)
    height: int = betterproto.uint32_field(4)
    size: int = betterproto.uint32_field(5)


@dataclass
class CreateGrayImageReq(betterproto.Message):
    name: str = betterproto.string_field(1)
    type: "ImageType" = betterproto.enum_field(2)
    width: int = betterproto.uint32_field(3)
    height: int = betterproto.uint32_field(4)
    gray: int = betterproto.uint32_field(5)


@dataclass
class ChangeImageGrayReq(betterproto.Message):
    name: str = betterproto.string_field(1)
    gray: int = betterproto.uint32_field(2)


@dataclass
class ImageList(betterproto.Message):
    image_infos: List["ImageInfo"] = betterproto.message_field(1)


@dataclass
class GrapImageReq(betterproto.Message):
    camera_index: int = betterproto.uint32_field(1)
    exposure_auto: int = betterproto.int32_field(2)
    exposure_time: float = betterproto.float_field(3)
    gain_auto: int = betterproto.int32_field(4)
    gain: float = betterproto.float_field(5)


@dataclass
class DetGrayReq(betterproto.Message):
    src_image: str = betterproto.string_field(1)
    template_image: str = betterproto.string_field(2)


@dataclass
class DetGrayRep(betterproto.Message):
    x: int = betterproto.int32_field(1)
    y: int = betterproto.int32_field(2)
    w: int = betterproto.int32_field(3)
    h: int = betterproto.int32_field(4)


@dataclass
class MaskGrayRep(betterproto.Message):
    image: str = betterproto.string_field(1)
    x: int = betterproto.int32_field(2)
    y: int = betterproto.int32_field(3)
    w: int = betterproto.int32_field(4)
    h: int = betterproto.int32_field(5)
    color: int = betterproto.int32_field(6)


@dataclass
class Operation(betterproto.Message):
    """
    ////////////////////////////// Yinjie LiMeng Init
    Test//////////////////////////////
    """

    pass


@dataclass
class OperationImageReadReq(betterproto.Message):
    img_path: str = betterproto.string_field(1)
    flags: "CvImreadModes" = betterproto.enum_field(2)


@dataclass
class OperationImageReadResp(betterproto.Message):
    img_handler: int = betterproto.uint64_field(1)


@dataclass
class OperationImageGetReq(betterproto.Message):
    img_handler: int = betterproto.uint64_field(1)


@dataclass
class OperationImageGetResp(betterproto.Message):
    img_buf: bytes = betterproto.bytes_field(1)


@dataclass
class Color(betterproto.Message):
    pass


@dataclass
class ColorRgbToGrayReq(betterproto.Message):
    img_handler: int = betterproto.uint64_field(1)


@dataclass
class ColorRgbToGrayResp(betterproto.Message):
    img_handler: int = betterproto.uint64_field(1)


@dataclass
class CvPoint2i(betterproto.Message):
    """
    ////////////////////////////// OpenCv Special Parameter
    Message//////////////////////////////
    """

    x: int = betterproto.int32_field(1)
    y: int = betterproto.int32_field(2)


@dataclass
class CvScalarBgr(betterproto.Message):
    blue: int = betterproto.int32_field(1)
    green: int = betterproto.int32_field(2)
    red: int = betterproto.int32_field(3)


@dataclass
class CvSize2i(betterproto.Message):
    width: int = betterproto.int32_field(1)
    height: int = betterproto.int32_field(2)


@dataclass
class CvRect(betterproto.Message):
    x: int = betterproto.int32_field(1)
    y: int = betterproto.int32_field(2)
    width: int = betterproto.int32_field(3)
    height: int = betterproto.int32_field(4)


@dataclass
class RequestImageHandler(betterproto.Message):
    """
    ////////////////////////////// General Request/Response
    Message//////////////////////////////
    """

    img_handler: int = betterproto.uint64_field(1)


@dataclass
class ResponseImageHandler(betterproto.Message):
    img_handler: int = betterproto.uint64_field(1)


@dataclass
class Operation2(betterproto.Message):
    """
    ////////////////////////////// Request Message
    Functions//////////////////////////////
    """

    pass


@dataclass
class Operation2ReadImageReq(betterproto.Message):
    filename: str = betterproto.string_field(1)
    flags: "CvImreadModes" = betterproto.enum_field(2)


@dataclass
class Operation2ReadImageResp(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)


@dataclass
class Operation2WriteImageReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    filename: str = betterproto.string_field(2)


@dataclass
class Operation2EncodeImageReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    ext: str = betterproto.string_field(2)


@dataclass
class Operation2EncodeImageResp(betterproto.Message):
    pass


@dataclass
class Operation2DecodeImageReq(betterproto.Message):
    # src_buffer = 1; TBD format std::vector<unsigned char>
    flags: "CvImreadModes" = betterproto.enum_field(2)


@dataclass
class Operation2ImageShapeReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)


@dataclass
class Operation2ImageShapeResp(betterproto.Message):
    channel: int = betterproto.int32_field(1)
    height: int = betterproto.int32_field(2)
    width: int = betterproto.int32_field(3)


@dataclass
class Operation2NormalizeReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    alpha: float = betterproto.double_field(2)
    beta: float = betterproto.double_field(3)
    norm_type: "CvNormTypes" = betterproto.enum_field(4)
    dtype: int = betterproto.int32_field(5)
    mask: "RequestImageHandler" = betterproto.message_field(6)


@dataclass
class Operation2MinMaxLocReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    mask: "RequestImageHandler" = betterproto.message_field(2)


@dataclass
class Operation2MinMaxLocResp(betterproto.Message):
    min_val: float = betterproto.double_field(1)
    max_val: float = betterproto.double_field(2)
    min_loc_x: int = betterproto.int32_field(3)
    min_loc_y: int = betterproto.int32_field(4)
    max_loc_x: int = betterproto.int32_field(5)
    max_loc_y: int = betterproto.int32_field(6)


@dataclass
class Contour(betterproto.Message):
    pass


@dataclass
class ContourFindContoursReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    mode: "CvRetrievalModes" = betterproto.enum_field(2)
    method: "CvContourApproximationModes" = betterproto.enum_field(3)
    offset: "CvPoint2i" = betterproto.message_field(4)


@dataclass
class ContourFindContoursResp(betterproto.Message):
    pass


@dataclass
class ContourHoughCirclesReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    dp_val: float = betterproto.double_field(2)
    min_dist: float = betterproto.double_field(3)
    param1: float = betterproto.double_field(4)
    param2: float = betterproto.double_field(5)
    min_radius: int = betterproto.int32_field(6)
    max_radius: int = betterproto.int32_field(7)
    method: "CvHoughModes" = betterproto.enum_field(8)


@dataclass
class ContourHoughCirclesResp(betterproto.Message):
    center_x: int = betterproto.int32_field(1)
    center_y: int = betterproto.int32_field(2)
    radius: int = betterproto.int32_field(3)


@dataclass
class Match(betterproto.Message):
    pass


@dataclass
class MatchMatchTemplateReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    templ: "RequestImageHandler" = betterproto.message_field(2)
    method: "CvTemplateMatchModes" = betterproto.enum_field(3)
    mask: "RequestImageHandler" = betterproto.message_field(4)


@dataclass
class MatchMatchGrayReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    templ: "RequestImageHandler" = betterproto.message_field(2)
    method: "CvTemplateMatchModes" = betterproto.enum_field(3)


@dataclass
class MatchMatchGrayResp(betterproto.Message):
    roi_x: int = betterproto.int32_field(1)
    roi_y: int = betterproto.int32_field(2)
    roi_w: int = betterproto.int32_field(3)
    roi_h: int = betterproto.int32_field(4)


@dataclass
class Color2(betterproto.Message):
    pass


@dataclass
class Color2RgbToGrayReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    dst_cn: int = betterproto.int32_field(2)


@dataclass
class Filter(betterproto.Message):
    pass


@dataclass
class FilterMedianBlurReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    ksize: int = betterproto.int32_field(2)


@dataclass
class FilterMeanBlurReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    ksize: "CvSize2i" = betterproto.message_field(2)
    anchor: "CvPoint2i" = betterproto.message_field(3)
    border_type: "CvBorderTypes" = betterproto.enum_field(4)


@dataclass
class FilterGaussBlurReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    ksize: "CvSize2i" = betterproto.message_field(2)
    sigma_x: int = betterproto.int32_field(3)
    sigma_y: int = betterproto.int32_field(4)
    border_type: "CvBorderTypes" = betterproto.enum_field(5)


@dataclass
class FilterBoxFilterReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    ddepth: int = betterproto.int32_field(2)
    ksize: "CvSize2i" = betterproto.message_field(3)
    anchor: "CvPoint2i" = betterproto.message_field(4)
    normalize: bool = betterproto.bool_field(5)
    border_type: "CvBorderTypes" = betterproto.enum_field(6)


@dataclass
class FilterBilateralFilterReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    diameter: int = betterproto.int32_field(2)
    sigma_color: float = betterproto.double_field(3)
    sigma_space: float = betterproto.double_field(4)
    border_type: "CvBorderTypes" = betterproto.enum_field(5)


@dataclass
class FilterScharrReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    ddepth: int = betterproto.int32_field(2)
    order_dx: int = betterproto.int32_field(3)
    order_dy: int = betterproto.int32_field(4)
    scale: float = betterproto.double_field(5)
    delta: float = betterproto.double_field(6)
    border_type: "CvBorderTypes" = betterproto.enum_field(7)


@dataclass
class FilterSobelReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    ddepth: int = betterproto.int32_field(2)
    order_dx: int = betterproto.int32_field(3)
    order_dy: int = betterproto.int32_field(4)
    ksize: int = betterproto.int32_field(5)
    scale: float = betterproto.double_field(6)
    delta: float = betterproto.double_field(7)
    border_type: "CvBorderTypes" = betterproto.enum_field(8)


@dataclass
class FilterLaplacianReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    ddepth: int = betterproto.int32_field(2)
    ksize: int = betterproto.int32_field(3)
    scale: float = betterproto.double_field(4)
    delta: float = betterproto.double_field(5)
    border_type: "CvBorderTypes" = betterproto.enum_field(6)


@dataclass
class FilterCannyReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    threshold1: float = betterproto.double_field(2)
    threshold2: float = betterproto.double_field(3)
    aperture_size: int = betterproto.int32_field(4)
    l2_gradient: bool = betterproto.bool_field(5)


@dataclass
class FilterErodeReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    shape: "CvMorphShapes" = betterproto.enum_field(2)
    ksize: "CvSize2i" = betterproto.message_field(3)
    anchor: "CvPoint2i" = betterproto.message_field(4)
    iterations: int = betterproto.int32_field(5)
    border_type: "CvBorderTypes" = betterproto.enum_field(6)
    border_value: "CvScalarBgr" = betterproto.message_field(7)


@dataclass
class FilterDilateReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    shape: "CvMorphShapes" = betterproto.enum_field(2)
    ksize: "CvSize2i" = betterproto.message_field(3)
    anchor: "CvPoint2i" = betterproto.message_field(4)
    iterations: int = betterproto.int32_field(5)
    border_type: "CvBorderTypes" = betterproto.enum_field(6)
    border_value: "CvScalarBgr" = betterproto.message_field(7)


@dataclass
class FilterOpeningReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    shape: "CvMorphShapes" = betterproto.enum_field(2)
    ksize: "CvSize2i" = betterproto.message_field(3)
    anchor: "CvPoint2i" = betterproto.message_field(4)
    iterations: int = betterproto.int32_field(5)
    border_type: "CvBorderTypes" = betterproto.enum_field(6)
    border_value: "CvScalarBgr" = betterproto.message_field(7)


@dataclass
class FilterClosingReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    shape: "CvMorphShapes" = betterproto.enum_field(2)
    ksize: "CvSize2i" = betterproto.message_field(3)
    anchor: "CvPoint2i" = betterproto.message_field(4)
    iterations: int = betterproto.int32_field(5)
    border_type: "CvBorderTypes" = betterproto.enum_field(6)
    border_value: "CvScalarBgr" = betterproto.message_field(7)


@dataclass
class FilterGetStructuringElementReq(betterproto.Message):
    shape: "CvMorphShapes" = betterproto.enum_field(1)
    ksize: "CvSize2i" = betterproto.message_field(2)
    anchor: "CvPoint2i" = betterproto.message_field(3)


@dataclass
class FilterMorphologyExReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    operation: "CvMorphTypes" = betterproto.enum_field(2)
    kernel: "RequestImageHandler" = betterproto.message_field(3)
    anchor: "CvPoint2i" = betterproto.message_field(4)
    iterations: int = betterproto.int32_field(5)
    border_type: "CvBorderTypes" = betterproto.enum_field(6)
    border_value: "CvScalarBgr" = betterproto.message_field(7)


@dataclass
class FilterThresholdReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    thresh: float = betterproto.double_field(2)
    maxval: float = betterproto.double_field(3)
    type: "CvThresholdTypes" = betterproto.enum_field(4)


@dataclass
class FilterThresholdResp(betterproto.Message):
    img_handler: int = betterproto.uint64_field(1)
    computed_threshold: float = betterproto.double_field(2)


@dataclass
class FilterAdaptiveThresholdReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    max_value: float = betterproto.double_field(2)
    block_size: int = betterproto.int32_field(3)
    c_const: float = betterproto.double_field(4)
    adaptive_method: "CvAdaptiveThresholdTypes" = betterproto.enum_field(5)
    threshold_type: "CvThresholdTypes" = betterproto.enum_field(6)


@dataclass
class Draw(betterproto.Message):
    pass


@dataclass
class DrawLineReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    p1_xy: "CvPoint2i" = betterproto.message_field(2)
    p2_xy: "CvPoint2i" = betterproto.message_field(3)
    color: "CvScalarBgr" = betterproto.message_field(4)
    thickness: int = betterproto.int32_field(5)
    line_type: "CvLineTypes" = betterproto.enum_field(6)
    shift: int = betterproto.int32_field(7)


@dataclass
class DrawContourReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    # one_contour = 2; TBD format std::vector<cv::Point2i>
    color: "CvScalarBgr" = betterproto.message_field(3)
    thickness: int = betterproto.int32_field(4)
    line_type: "CvLineTypes" = betterproto.enum_field(5)
    offset: "CvPoint2i" = betterproto.message_field(6)


@dataclass
class DrawContlistReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    # contours = 2; TBD format std::vector<std::vector<cv::Point2i> >
    auto_color: bool = betterproto.bool_field(3)
    color: "CvScalarBgr" = betterproto.message_field(4)
    thickness: int = betterproto.int32_field(5)
    line_type: "CvLineTypes" = betterproto.enum_field(6)
    offset: "CvPoint2i" = betterproto.message_field(7)


@dataclass
class DrawRectReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    p1_xy: "CvPoint2i" = betterproto.message_field(2)
    p2_xy: "CvPoint2i" = betterproto.message_field(3)
    color: "CvScalarBgr" = betterproto.message_field(4)
    thickness: int = betterproto.int32_field(5)
    line_type: "CvLineTypes" = betterproto.enum_field(6)
    shift: int = betterproto.int32_field(7)


@dataclass
class DrawRectRotateReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    center_xy: "CvPoint2i" = betterproto.message_field(2)
    rec_wh: "CvSize2i" = betterproto.message_field(3)
    angle: float = betterproto.double_field(4)
    color: "CvScalarBgr" = betterproto.message_field(5)
    thickness: int = betterproto.int32_field(6)
    line_type: "CvLineTypes" = betterproto.enum_field(7)
    shift: int = betterproto.int32_field(8)


@dataclass
class DrawCircleReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    center_xy: "CvPoint2i" = betterproto.message_field(2)
    radius: int = betterproto.int32_field(3)
    color: "CvScalarBgr" = betterproto.message_field(4)
    thickness: int = betterproto.int32_field(5)
    line_type: "CvLineTypes" = betterproto.enum_field(6)
    shift: int = betterproto.int32_field(7)


@dataclass
class DrawEllipseReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    center_xy: "CvPoint2i" = betterproto.message_field(2)
    radius_xy: "CvSize2i" = betterproto.message_field(3)
    angle: float = betterproto.double_field(4)
    start_angle: float = betterproto.double_field(5)
    end_angle: float = betterproto.double_field(6)
    color: "CvScalarBgr" = betterproto.message_field(7)
    thickness: int = betterproto.int32_field(8)
    line_type: "CvLineTypes" = betterproto.enum_field(9)
    shift: int = betterproto.int32_field(10)


@dataclass
class DrawPolygonReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    # pts = 2; TBD format std::vector<cv::Point>
    is_closed: bool = betterproto.bool_field(3)
    color: "CvScalarBgr" = betterproto.message_field(4)
    thickness: int = betterproto.int32_field(5)
    line_type: "CvLineTypes" = betterproto.enum_field(6)
    shift: int = betterproto.int32_field(7)


@dataclass
class DrawArrowReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    p1_xy: "CvPoint2i" = betterproto.message_field(2)
    p2_xy: "CvPoint2i" = betterproto.message_field(3)
    color: "CvScalarBgr" = betterproto.message_field(4)
    thickness: int = betterproto.int32_field(5)
    line_type: "CvLineTypes" = betterproto.enum_field(6)
    shift: int = betterproto.int32_field(7)
    tip_length: float = betterproto.double_field(8)


@dataclass
class DrawMarkerReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    p_xy: "CvPoint2i" = betterproto.message_field(2)
    color: "CvScalarBgr" = betterproto.message_field(3)
    marker_type: "CvMarkerTypes" = betterproto.enum_field(4)
    marker_size: int = betterproto.int32_field(5)
    thickness: int = betterproto.int32_field(6)
    line_type: "CvLineTypes" = betterproto.enum_field(7)


@dataclass
class DrawTextReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    text: str = betterproto.string_field(2)
    org: "CvPoint2i" = betterproto.message_field(3)
    font_face: "CvHersheyFonts" = betterproto.enum_field(4)
    font_scale: float = betterproto.double_field(5)
    color: "CvScalarBgr" = betterproto.message_field(6)
    thickness: int = betterproto.int32_field(7)
    line_type: "CvLineTypes" = betterproto.enum_field(8)
    bottom_left_origin: bool = betterproto.bool_field(9)


@dataclass
class DrawMaskReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    mask: "RequestImageHandler" = betterproto.message_field(2)
    fill_fore: bool = betterproto.bool_field(3)


@dataclass
class DrawContoursReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    # contours = 2; TBD format std::vector<std::vector<cv::Point2i> > hierarchy =
    # 3; TBD format std::vector<cv::Vec4i>
    contour_idx: int = betterproto.int32_field(4)
    max_level: int = betterproto.int32_field(5)
    color: "CvScalarBgr" = betterproto.message_field(6)
    thickness: int = betterproto.int32_field(7)
    line_type: "CvLineTypes" = betterproto.enum_field(8)
    offset: "CvPoint2i" = betterproto.message_field(9)


@dataclass
class DrawFillRectReq(betterproto.Message):
    image: "RequestImageHandler" = betterproto.message_field(1)
    roi_rect: "CvRect" = betterproto.message_field(2)
    color: "CvScalarBgr" = betterproto.message_field(3)


@dataclass
class DrawMergeDepthRbgReq(betterproto.Message):
    bgr: "RequestImageHandler" = betterproto.message_field(1)
    tansparent_bgr: float = betterproto.double_field(2)
    depth: "RequestImageHandler" = betterproto.message_field(3)
    tansparent_depth: float = betterproto.double_field(4)
