类 Imgproc


  • public class Imgproc
    extends java.lang.Object
    • 字段详细信息

      • CV_GAUSSIAN_5x5

        public static final int CV_GAUSSIAN_5x5
        参见
        常量字段值
      • CV_MAX_SOBEL_KSIZE

        public static final int CV_MAX_SOBEL_KSIZE
        参见
        常量字段值
      • CV_RGBA2mRGBA

        public static final int CV_RGBA2mRGBA
        参见
        常量字段值
      • CV_mRGBA2RGBA

        public static final int CV_mRGBA2RGBA
        参见
        常量字段值
      • CV_WARP_FILL_OUTLIERS

        public static final int CV_WARP_FILL_OUTLIERS
        参见
        常量字段值
      • CV_WARP_INVERSE_MAP

        public static final int CV_WARP_INVERSE_MAP
        参见
        常量字段值
      • CV_WARP_RELATIVE_MAP

        public static final int CV_WARP_RELATIVE_MAP
        参见
        常量字段值
      • CV_CHAIN_CODE

        public static final int CV_CHAIN_CODE
        参见
        常量字段值
      • CV_LINK_RUNS

        public static final int CV_LINK_RUNS
        参见
        常量字段值
      • CV_POLY_APPROX_DP

        public static final int CV_POLY_APPROX_DP
        参见
        常量字段值
      • CV_CONTOURS_MATCH_I1

        public static final int CV_CONTOURS_MATCH_I1
        参见
        常量字段值
      • CV_CONTOURS_MATCH_I2

        public static final int CV_CONTOURS_MATCH_I2
        参见
        常量字段值
      • CV_CONTOURS_MATCH_I3

        public static final int CV_CONTOURS_MATCH_I3
        参见
        常量字段值
      • CV_CLOCKWISE

        public static final int CV_CLOCKWISE
        参见
        常量字段值
      • CV_COUNTER_CLOCKWISE

        public static final int CV_COUNTER_CLOCKWISE
        参见
        常量字段值
      • CV_COMP_CORREL

        public static final int CV_COMP_CORREL
        参见
        常量字段值
      • CV_COMP_CHISQR

        public static final int CV_COMP_CHISQR
        参见
        常量字段值
      • CV_COMP_INTERSECT

        public static final int CV_COMP_INTERSECT
        参见
        常量字段值
      • CV_COMP_BHATTACHARYYA

        public static final int CV_COMP_BHATTACHARYYA
        参见
        常量字段值
      • CV_COMP_HELLINGER

        public static final int CV_COMP_HELLINGER
        参见
        常量字段值
      • CV_COMP_CHISQR_ALT

        public static final int CV_COMP_CHISQR_ALT
        参见
        常量字段值
      • CV_COMP_KL_DIV

        public static final int CV_COMP_KL_DIV
        参见
        常量字段值
      • CV_DIST_MASK_3

        public static final int CV_DIST_MASK_3
        参见
        常量字段值
      • CV_DIST_MASK_5

        public static final int CV_DIST_MASK_5
        参见
        常量字段值
      • CV_DIST_MASK_PRECISE

        public static final int CV_DIST_MASK_PRECISE
        参见
        常量字段值
      • CV_DIST_LABEL_CCOMP

        public static final int CV_DIST_LABEL_CCOMP
        参见
        常量字段值
      • CV_DIST_LABEL_PIXEL

        public static final int CV_DIST_LABEL_PIXEL
        参见
        常量字段值
      • CV_DIST_USER

        public static final int CV_DIST_USER
        参见
        常量字段值
      • CV_DIST_FAIR

        public static final int CV_DIST_FAIR
        参见
        常量字段值
      • CV_DIST_WELSCH

        public static final int CV_DIST_WELSCH
        参见
        常量字段值
      • CV_DIST_HUBER

        public static final int CV_DIST_HUBER
        参见
        常量字段值
      • CV_CANNY_L2_GRADIENT

        public static final int CV_CANNY_L2_GRADIENT
        参见
        常量字段值
      • CV_HOUGH_STANDARD

        public static final int CV_HOUGH_STANDARD
        参见
        常量字段值
      • CV_HOUGH_PROBABILISTIC

        public static final int CV_HOUGH_PROBABILISTIC
        参见
        常量字段值
      • CV_HOUGH_MULTI_SCALE

        public static final int CV_HOUGH_MULTI_SCALE
        参见
        常量字段值
      • CV_HOUGH_GRADIENT

        public static final int CV_HOUGH_GRADIENT
        参见
        常量字段值
      • CV_SHAPE_RECT

        public static final int CV_SHAPE_RECT
        参见
        常量字段值
      • CV_SHAPE_CROSS

        public static final int CV_SHAPE_CROSS
        参见
        常量字段值
      • CV_SHAPE_ELLIPSE

        public static final int CV_SHAPE_ELLIPSE
        参见
        常量字段值
      • CV_SHAPE_DIAMOND

        public static final int CV_SHAPE_DIAMOND
        参见
        常量字段值
      • CV_SHAPE_CUSTOM

        public static final int CV_SHAPE_CUSTOM
        参见
        常量字段值
      • CV_BLUR_NO_SCALE

        public static final int CV_BLUR_NO_SCALE
        参见
        常量字段值
      • CV_BILATERAL

        public static final int CV_BILATERAL
        参见
        常量字段值
      • ADAPTIVE_THRESH_MEAN_C

        public static final int ADAPTIVE_THRESH_MEAN_C
        参见
        常量字段值
      • ADAPTIVE_THRESH_GAUSSIAN_C

        public static final int ADAPTIVE_THRESH_GAUSSIAN_C
        参见
        常量字段值
      • COLOR_BGR2BGRA

        public static final int COLOR_BGR2BGRA
        参见
        常量字段值
      • COLOR_RGB2RGBA

        public static final int COLOR_RGB2RGBA
        参见
        常量字段值
      • COLOR_BGRA2BGR

        public static final int COLOR_BGRA2BGR
        参见
        常量字段值
      • COLOR_RGBA2RGB

        public static final int COLOR_RGBA2RGB
        参见
        常量字段值
      • COLOR_BGR2RGBA

        public static final int COLOR_BGR2RGBA
        参见
        常量字段值
      • COLOR_RGB2BGRA

        public static final int COLOR_RGB2BGRA
        参见
        常量字段值
      • COLOR_RGBA2BGR

        public static final int COLOR_RGBA2BGR
        参见
        常量字段值
      • COLOR_BGRA2RGB

        public static final int COLOR_BGRA2RGB
        参见
        常量字段值
      • COLOR_BGR2RGB

        public static final int COLOR_BGR2RGB
        参见
        常量字段值
      • COLOR_RGB2BGR

        public static final int COLOR_RGB2BGR
        参见
        常量字段值
      • COLOR_BGRA2RGBA

        public static final int COLOR_BGRA2RGBA
        参见
        常量字段值
      • COLOR_RGBA2BGRA

        public static final int COLOR_RGBA2BGRA
        参见
        常量字段值
      • COLOR_BGR2GRAY

        public static final int COLOR_BGR2GRAY
        参见
        常量字段值
      • COLOR_RGB2GRAY

        public static final int COLOR_RGB2GRAY
        参见
        常量字段值
      • COLOR_GRAY2BGR

        public static final int COLOR_GRAY2BGR
        参见
        常量字段值
      • COLOR_GRAY2RGB

        public static final int COLOR_GRAY2RGB
        参见
        常量字段值
      • COLOR_GRAY2BGRA

        public static final int COLOR_GRAY2BGRA
        参见
        常量字段值
      • COLOR_GRAY2RGBA

        public static final int COLOR_GRAY2RGBA
        参见
        常量字段值
      • COLOR_BGRA2GRAY

        public static final int COLOR_BGRA2GRAY
        参见
        常量字段值
      • COLOR_RGBA2GRAY

        public static final int COLOR_RGBA2GRAY
        参见
        常量字段值
      • COLOR_BGR2BGR565

        public static final int COLOR_BGR2BGR565
        参见
        常量字段值
      • COLOR_RGB2BGR565

        public static final int COLOR_RGB2BGR565
        参见
        常量字段值
      • COLOR_BGR5652BGR

        public static final int COLOR_BGR5652BGR
        参见
        常量字段值
      • COLOR_BGR5652RGB

        public static final int COLOR_BGR5652RGB
        参见
        常量字段值
      • COLOR_BGRA2BGR565

        public static final int COLOR_BGRA2BGR565
        参见
        常量字段值
      • COLOR_RGBA2BGR565

        public static final int COLOR_RGBA2BGR565
        参见
        常量字段值
      • COLOR_BGR5652BGRA

        public static final int COLOR_BGR5652BGRA
        参见
        常量字段值
      • COLOR_BGR5652RGBA

        public static final int COLOR_BGR5652RGBA
        参见
        常量字段值
      • COLOR_GRAY2BGR565

        public static final int COLOR_GRAY2BGR565
        参见
        常量字段值
      • COLOR_BGR5652GRAY

        public static final int COLOR_BGR5652GRAY
        参见
        常量字段值
      • COLOR_BGR2BGR555

        public static final int COLOR_BGR2BGR555
        参见
        常量字段值
      • COLOR_RGB2BGR555

        public static final int COLOR_RGB2BGR555
        参见
        常量字段值
      • COLOR_BGR5552BGR

        public static final int COLOR_BGR5552BGR
        参见
        常量字段值
      • COLOR_BGR5552RGB

        public static final int COLOR_BGR5552RGB
        参见
        常量字段值
      • COLOR_BGRA2BGR555

        public static final int COLOR_BGRA2BGR555
        参见
        常量字段值
      • COLOR_RGBA2BGR555

        public static final int COLOR_RGBA2BGR555
        参见
        常量字段值
      • COLOR_BGR5552BGRA

        public static final int COLOR_BGR5552BGRA
        参见
        常量字段值
      • COLOR_BGR5552RGBA

        public static final int COLOR_BGR5552RGBA
        参见
        常量字段值
      • COLOR_GRAY2BGR555

        public static final int COLOR_GRAY2BGR555
        参见
        常量字段值
      • COLOR_BGR5552GRAY

        public static final int COLOR_BGR5552GRAY
        参见
        常量字段值
      • COLOR_BGR2XYZ

        public static final int COLOR_BGR2XYZ
        参见
        常量字段值
      • COLOR_RGB2XYZ

        public static final int COLOR_RGB2XYZ
        参见
        常量字段值
      • COLOR_XYZ2BGR

        public static final int COLOR_XYZ2BGR
        参见
        常量字段值
      • COLOR_XYZ2RGB

        public static final int COLOR_XYZ2RGB
        参见
        常量字段值
      • COLOR_BGR2YCrCb

        public static final int COLOR_BGR2YCrCb
        参见
        常量字段值
      • COLOR_RGB2YCrCb

        public static final int COLOR_RGB2YCrCb
        参见
        常量字段值
      • COLOR_YCrCb2BGR

        public static final int COLOR_YCrCb2BGR
        参见
        常量字段值
      • COLOR_YCrCb2RGB

        public static final int COLOR_YCrCb2RGB
        参见
        常量字段值
      • COLOR_BGR2HSV

        public static final int COLOR_BGR2HSV
        参见
        常量字段值
      • COLOR_RGB2HSV

        public static final int COLOR_RGB2HSV
        参见
        常量字段值
      • COLOR_BGR2Lab

        public static final int COLOR_BGR2Lab
        参见
        常量字段值
      • COLOR_RGB2Lab

        public static final int COLOR_RGB2Lab
        参见
        常量字段值
      • COLOR_BGR2Luv

        public static final int COLOR_BGR2Luv
        参见
        常量字段值
      • COLOR_RGB2Luv

        public static final int COLOR_RGB2Luv
        参见
        常量字段值
      • COLOR_BGR2HLS

        public static final int COLOR_BGR2HLS
        参见
        常量字段值
      • COLOR_RGB2HLS

        public static final int COLOR_RGB2HLS
        参见
        常量字段值
      • COLOR_HSV2BGR

        public static final int COLOR_HSV2BGR
        参见
        常量字段值
      • COLOR_HSV2RGB

        public static final int COLOR_HSV2RGB
        参见
        常量字段值
      • COLOR_Lab2BGR

        public static final int COLOR_Lab2BGR
        参见
        常量字段值
      • COLOR_Lab2RGB

        public static final int COLOR_Lab2RGB
        参见
        常量字段值
      • COLOR_Luv2BGR

        public static final int COLOR_Luv2BGR
        参见
        常量字段值
      • COLOR_Luv2RGB

        public static final int COLOR_Luv2RGB
        参见
        常量字段值
      • COLOR_HLS2BGR

        public static final int COLOR_HLS2BGR
        参见
        常量字段值
      • COLOR_HLS2RGB

        public static final int COLOR_HLS2RGB
        参见
        常量字段值
      • COLOR_BGR2HSV_FULL

        public static final int COLOR_BGR2HSV_FULL
        参见
        常量字段值
      • COLOR_RGB2HSV_FULL

        public static final int COLOR_RGB2HSV_FULL
        参见
        常量字段值
      • COLOR_BGR2HLS_FULL

        public static final int COLOR_BGR2HLS_FULL
        参见
        常量字段值
      • COLOR_RGB2HLS_FULL

        public static final int COLOR_RGB2HLS_FULL
        参见
        常量字段值
      • COLOR_HSV2BGR_FULL

        public static final int COLOR_HSV2BGR_FULL
        参见
        常量字段值
      • COLOR_HSV2RGB_FULL

        public static final int COLOR_HSV2RGB_FULL
        参见
        常量字段值
      • COLOR_HLS2BGR_FULL

        public static final int COLOR_HLS2BGR_FULL
        参见
        常量字段值
      • COLOR_HLS2RGB_FULL

        public static final int COLOR_HLS2RGB_FULL
        参见
        常量字段值
      • COLOR_LBGR2Lab

        public static final int COLOR_LBGR2Lab
        参见
        常量字段值
      • COLOR_LRGB2Lab

        public static final int COLOR_LRGB2Lab
        参见
        常量字段值
      • COLOR_LBGR2Luv

        public static final int COLOR_LBGR2Luv
        参见
        常量字段值
      • COLOR_LRGB2Luv

        public static final int COLOR_LRGB2Luv
        参见
        常量字段值
      • COLOR_Lab2LBGR

        public static final int COLOR_Lab2LBGR
        参见
        常量字段值
      • COLOR_Lab2LRGB

        public static final int COLOR_Lab2LRGB
        参见
        常量字段值
      • COLOR_Luv2LBGR

        public static final int COLOR_Luv2LBGR
        参见
        常量字段值
      • COLOR_Luv2LRGB

        public static final int COLOR_Luv2LRGB
        参见
        常量字段值
      • COLOR_BGR2YUV

        public static final int COLOR_BGR2YUV
        参见
        常量字段值
      • COLOR_RGB2YUV

        public static final int COLOR_RGB2YUV
        参见
        常量字段值
      • COLOR_YUV2BGR

        public static final int COLOR_YUV2BGR
        参见
        常量字段值
      • COLOR_YUV2RGB

        public static final int COLOR_YUV2RGB
        参见
        常量字段值
      • COLOR_YUV2RGB_NV12

        public static final int COLOR_YUV2RGB_NV12
        参见
        常量字段值
      • COLOR_YUV2BGR_NV12

        public static final int COLOR_YUV2BGR_NV12
        参见
        常量字段值
      • COLOR_YUV2RGB_NV21

        public static final int COLOR_YUV2RGB_NV21
        参见
        常量字段值
      • COLOR_YUV2BGR_NV21

        public static final int COLOR_YUV2BGR_NV21
        参见
        常量字段值
      • COLOR_YUV420sp2RGB

        public static final int COLOR_YUV420sp2RGB
        参见
        常量字段值
      • COLOR_YUV420sp2BGR

        public static final int COLOR_YUV420sp2BGR
        参见
        常量字段值
      • COLOR_YUV2RGBA_NV12

        public static final int COLOR_YUV2RGBA_NV12
        参见
        常量字段值
      • COLOR_YUV2BGRA_NV12

        public static final int COLOR_YUV2BGRA_NV12
        参见
        常量字段值
      • COLOR_YUV2RGBA_NV21

        public static final int COLOR_YUV2RGBA_NV21
        参见
        常量字段值
      • COLOR_YUV2BGRA_NV21

        public static final int COLOR_YUV2BGRA_NV21
        参见
        常量字段值
      • COLOR_YUV420sp2RGBA

        public static final int COLOR_YUV420sp2RGBA
        参见
        常量字段值
      • COLOR_YUV420sp2BGRA

        public static final int COLOR_YUV420sp2BGRA
        参见
        常量字段值
      • COLOR_YUV2RGB_YV12

        public static final int COLOR_YUV2RGB_YV12
        参见
        常量字段值
      • COLOR_YUV2BGR_YV12

        public static final int COLOR_YUV2BGR_YV12
        参见
        常量字段值
      • COLOR_YUV2RGB_IYUV

        public static final int COLOR_YUV2RGB_IYUV
        参见
        常量字段值
      • COLOR_YUV2BGR_IYUV

        public static final int COLOR_YUV2BGR_IYUV
        参见
        常量字段值
      • COLOR_YUV2RGB_I420

        public static final int COLOR_YUV2RGB_I420
        参见
        常量字段值
      • COLOR_YUV2BGR_I420

        public static final int COLOR_YUV2BGR_I420
        参见
        常量字段值
      • COLOR_YUV420p2RGB

        public static final int COLOR_YUV420p2RGB
        参见
        常量字段值
      • COLOR_YUV420p2BGR

        public static final int COLOR_YUV420p2BGR
        参见
        常量字段值
      • COLOR_YUV2RGBA_YV12

        public static final int COLOR_YUV2RGBA_YV12
        参见
        常量字段值
      • COLOR_YUV2BGRA_YV12

        public static final int COLOR_YUV2BGRA_YV12
        参见
        常量字段值
      • COLOR_YUV2RGBA_IYUV

        public static final int COLOR_YUV2RGBA_IYUV
        参见
        常量字段值
      • COLOR_YUV2BGRA_IYUV

        public static final int COLOR_YUV2BGRA_IYUV
        参见
        常量字段值
      • COLOR_YUV2RGBA_I420

        public static final int COLOR_YUV2RGBA_I420
        参见
        常量字段值
      • COLOR_YUV2BGRA_I420

        public static final int COLOR_YUV2BGRA_I420
        参见
        常量字段值
      • COLOR_YUV420p2RGBA

        public static final int COLOR_YUV420p2RGBA
        参见
        常量字段值
      • COLOR_YUV420p2BGRA

        public static final int COLOR_YUV420p2BGRA
        参见
        常量字段值
      • COLOR_YUV2GRAY_420

        public static final int COLOR_YUV2GRAY_420
        参见
        常量字段值
      • COLOR_YUV2GRAY_NV21

        public static final int COLOR_YUV2GRAY_NV21
        参见
        常量字段值
      • COLOR_YUV2GRAY_NV12

        public static final int COLOR_YUV2GRAY_NV12
        参见
        常量字段值
      • COLOR_YUV2GRAY_YV12

        public static final int COLOR_YUV2GRAY_YV12
        参见
        常量字段值
      • COLOR_YUV2GRAY_IYUV

        public static final int COLOR_YUV2GRAY_IYUV
        参见
        常量字段值
      • COLOR_YUV2GRAY_I420

        public static final int COLOR_YUV2GRAY_I420
        参见
        常量字段值
      • COLOR_YUV420sp2GRAY

        public static final int COLOR_YUV420sp2GRAY
        参见
        常量字段值
      • COLOR_YUV420p2GRAY

        public static final int COLOR_YUV420p2GRAY
        参见
        常量字段值
      • COLOR_YUV2RGB_UYVY

        public static final int COLOR_YUV2RGB_UYVY
        参见
        常量字段值
      • COLOR_YUV2BGR_UYVY

        public static final int COLOR_YUV2BGR_UYVY
        参见
        常量字段值
      • COLOR_YUV2RGB_Y422

        public static final int COLOR_YUV2RGB_Y422
        参见
        常量字段值
      • COLOR_YUV2BGR_Y422

        public static final int COLOR_YUV2BGR_Y422
        参见
        常量字段值
      • COLOR_YUV2RGB_UYNV

        public static final int COLOR_YUV2RGB_UYNV
        参见
        常量字段值
      • COLOR_YUV2BGR_UYNV

        public static final int COLOR_YUV2BGR_UYNV
        参见
        常量字段值
      • COLOR_YUV2RGBA_UYVY

        public static final int COLOR_YUV2RGBA_UYVY
        参见
        常量字段值
      • COLOR_YUV2BGRA_UYVY

        public static final int COLOR_YUV2BGRA_UYVY
        参见
        常量字段值
      • COLOR_YUV2RGBA_Y422

        public static final int COLOR_YUV2RGBA_Y422
        参见
        常量字段值
      • COLOR_YUV2BGRA_Y422

        public static final int COLOR_YUV2BGRA_Y422
        参见
        常量字段值
      • COLOR_YUV2RGBA_UYNV

        public static final int COLOR_YUV2RGBA_UYNV
        参见
        常量字段值
      • COLOR_YUV2BGRA_UYNV

        public static final int COLOR_YUV2BGRA_UYNV
        参见
        常量字段值
      • COLOR_YUV2RGB_YUY2

        public static final int COLOR_YUV2RGB_YUY2
        参见
        常量字段值
      • COLOR_YUV2BGR_YUY2

        public static final int COLOR_YUV2BGR_YUY2
        参见
        常量字段值
      • COLOR_YUV2RGB_YVYU

        public static final int COLOR_YUV2RGB_YVYU
        参见
        常量字段值
      • COLOR_YUV2BGR_YVYU

        public static final int COLOR_YUV2BGR_YVYU
        参见
        常量字段值
      • COLOR_YUV2RGB_YUYV

        public static final int COLOR_YUV2RGB_YUYV
        参见
        常量字段值
      • COLOR_YUV2BGR_YUYV

        public static final int COLOR_YUV2BGR_YUYV
        参见
        常量字段值
      • COLOR_YUV2RGB_YUNV

        public static final int COLOR_YUV2RGB_YUNV
        参见
        常量字段值
      • COLOR_YUV2BGR_YUNV

        public static final int COLOR_YUV2BGR_YUNV
        参见
        常量字段值
      • COLOR_YUV2RGBA_YUY2

        public static final int COLOR_YUV2RGBA_YUY2
        参见
        常量字段值
      • COLOR_YUV2BGRA_YUY2

        public static final int COLOR_YUV2BGRA_YUY2
        参见
        常量字段值
      • COLOR_YUV2RGBA_YVYU

        public static final int COLOR_YUV2RGBA_YVYU
        参见
        常量字段值
      • COLOR_YUV2BGRA_YVYU

        public static final int COLOR_YUV2BGRA_YVYU
        参见
        常量字段值
      • COLOR_YUV2RGBA_YUYV

        public static final int COLOR_YUV2RGBA_YUYV
        参见
        常量字段值
      • COLOR_YUV2BGRA_YUYV

        public static final int COLOR_YUV2BGRA_YUYV
        参见
        常量字段值
      • COLOR_YUV2RGBA_YUNV

        public static final int COLOR_YUV2RGBA_YUNV
        参见
        常量字段值
      • COLOR_YUV2BGRA_YUNV

        public static final int COLOR_YUV2BGRA_YUNV
        参见
        常量字段值
      • COLOR_YUV2GRAY_UYVY

        public static final int COLOR_YUV2GRAY_UYVY
        参见
        常量字段值
      • COLOR_YUV2GRAY_YUY2

        public static final int COLOR_YUV2GRAY_YUY2
        参见
        常量字段值
      • COLOR_YUV2GRAY_Y422

        public static final int COLOR_YUV2GRAY_Y422
        参见
        常量字段值
      • COLOR_YUV2GRAY_UYNV

        public static final int COLOR_YUV2GRAY_UYNV
        参见
        常量字段值
      • COLOR_YUV2GRAY_YVYU

        public static final int COLOR_YUV2GRAY_YVYU
        参见
        常量字段值
      • COLOR_YUV2GRAY_YUYV

        public static final int COLOR_YUV2GRAY_YUYV
        参见
        常量字段值
      • COLOR_YUV2GRAY_YUNV

        public static final int COLOR_YUV2GRAY_YUNV
        参见
        常量字段值
      • COLOR_RGBA2mRGBA

        public static final int COLOR_RGBA2mRGBA
        参见
        常量字段值
      • COLOR_mRGBA2RGBA

        public static final int COLOR_mRGBA2RGBA
        参见
        常量字段值
      • COLOR_RGB2YUV_I420

        public static final int COLOR_RGB2YUV_I420
        参见
        常量字段值
      • COLOR_BGR2YUV_I420

        public static final int COLOR_BGR2YUV_I420
        参见
        常量字段值
      • COLOR_RGB2YUV_IYUV

        public static final int COLOR_RGB2YUV_IYUV
        参见
        常量字段值
      • COLOR_BGR2YUV_IYUV

        public static final int COLOR_BGR2YUV_IYUV
        参见
        常量字段值
      • COLOR_RGBA2YUV_I420

        public static final int COLOR_RGBA2YUV_I420
        参见
        常量字段值
      • COLOR_BGRA2YUV_I420

        public static final int COLOR_BGRA2YUV_I420
        参见
        常量字段值
      • COLOR_RGBA2YUV_IYUV

        public static final int COLOR_RGBA2YUV_IYUV
        参见
        常量字段值
      • COLOR_BGRA2YUV_IYUV

        public static final int COLOR_BGRA2YUV_IYUV
        参见
        常量字段值
      • COLOR_RGB2YUV_YV12

        public static final int COLOR_RGB2YUV_YV12
        参见
        常量字段值
      • COLOR_BGR2YUV_YV12

        public static final int COLOR_BGR2YUV_YV12
        参见
        常量字段值
      • COLOR_RGBA2YUV_YV12

        public static final int COLOR_RGBA2YUV_YV12
        参见
        常量字段值
      • COLOR_BGRA2YUV_YV12

        public static final int COLOR_BGRA2YUV_YV12
        参见
        常量字段值
      • COLOR_BayerBG2BGR

        public static final int COLOR_BayerBG2BGR
        参见
        常量字段值
      • COLOR_BayerGB2BGR

        public static final int COLOR_BayerGB2BGR
        参见
        常量字段值
      • COLOR_BayerRG2BGR

        public static final int COLOR_BayerRG2BGR
        参见
        常量字段值
      • COLOR_BayerGR2BGR

        public static final int COLOR_BayerGR2BGR
        参见
        常量字段值
      • COLOR_BayerRGGB2BGR

        public static final int COLOR_BayerRGGB2BGR
        参见
        常量字段值
      • COLOR_BayerGRBG2BGR

        public static final int COLOR_BayerGRBG2BGR
        参见
        常量字段值
      • COLOR_BayerBGGR2BGR

        public static final int COLOR_BayerBGGR2BGR
        参见
        常量字段值
      • COLOR_BayerGBRG2BGR

        public static final int COLOR_BayerGBRG2BGR
        参见
        常量字段值
      • COLOR_BayerRGGB2RGB

        public static final int COLOR_BayerRGGB2RGB
        参见
        常量字段值
      • COLOR_BayerGRBG2RGB

        public static final int COLOR_BayerGRBG2RGB
        参见
        常量字段值
      • COLOR_BayerBGGR2RGB

        public static final int COLOR_BayerBGGR2RGB
        参见
        常量字段值
      • COLOR_BayerGBRG2RGB

        public static final int COLOR_BayerGBRG2RGB
        参见
        常量字段值
      • COLOR_BayerBG2RGB

        public static final int COLOR_BayerBG2RGB
        参见
        常量字段值
      • COLOR_BayerGB2RGB

        public static final int COLOR_BayerGB2RGB
        参见
        常量字段值
      • COLOR_BayerRG2RGB

        public static final int COLOR_BayerRG2RGB
        参见
        常量字段值
      • COLOR_BayerGR2RGB

        public static final int COLOR_BayerGR2RGB
        参见
        常量字段值
      • COLOR_BayerBG2GRAY

        public static final int COLOR_BayerBG2GRAY
        参见
        常量字段值
      • COLOR_BayerGB2GRAY

        public static final int COLOR_BayerGB2GRAY
        参见
        常量字段值
      • COLOR_BayerRG2GRAY

        public static final int COLOR_BayerRG2GRAY
        参见
        常量字段值
      • COLOR_BayerGR2GRAY

        public static final int COLOR_BayerGR2GRAY
        参见
        常量字段值
      • COLOR_BayerRGGB2GRAY

        public static final int COLOR_BayerRGGB2GRAY
        参见
        常量字段值
      • COLOR_BayerGRBG2GRAY

        public static final int COLOR_BayerGRBG2GRAY
        参见
        常量字段值
      • COLOR_BayerBGGR2GRAY

        public static final int COLOR_BayerBGGR2GRAY
        参见
        常量字段值
      • COLOR_BayerGBRG2GRAY

        public static final int COLOR_BayerGBRG2GRAY
        参见
        常量字段值
      • COLOR_BayerBG2BGR_VNG

        public static final int COLOR_BayerBG2BGR_VNG
        参见
        常量字段值
      • COLOR_BayerGB2BGR_VNG

        public static final int COLOR_BayerGB2BGR_VNG
        参见
        常量字段值
      • COLOR_BayerRG2BGR_VNG

        public static final int COLOR_BayerRG2BGR_VNG
        参见
        常量字段值
      • COLOR_BayerGR2BGR_VNG

        public static final int COLOR_BayerGR2BGR_VNG
        参见
        常量字段值
      • COLOR_BayerRGGB2BGR_VNG

        public static final int COLOR_BayerRGGB2BGR_VNG
        参见
        常量字段值
      • COLOR_BayerGRBG2BGR_VNG

        public static final int COLOR_BayerGRBG2BGR_VNG
        参见
        常量字段值
      • COLOR_BayerBGGR2BGR_VNG

        public static final int COLOR_BayerBGGR2BGR_VNG
        参见
        常量字段值
      • COLOR_BayerGBRG2BGR_VNG

        public static final int COLOR_BayerGBRG2BGR_VNG
        参见
        常量字段值
      • COLOR_BayerRGGB2RGB_VNG

        public static final int COLOR_BayerRGGB2RGB_VNG
        参见
        常量字段值
      • COLOR_BayerGRBG2RGB_VNG

        public static final int COLOR_BayerGRBG2RGB_VNG
        参见
        常量字段值
      • COLOR_BayerBGGR2RGB_VNG

        public static final int COLOR_BayerBGGR2RGB_VNG
        参见
        常量字段值
      • COLOR_BayerGBRG2RGB_VNG

        public static final int COLOR_BayerGBRG2RGB_VNG
        参见
        常量字段值
      • COLOR_BayerBG2RGB_VNG

        public static final int COLOR_BayerBG2RGB_VNG
        参见
        常量字段值
      • COLOR_BayerGB2RGB_VNG

        public static final int COLOR_BayerGB2RGB_VNG
        参见
        常量字段值
      • COLOR_BayerRG2RGB_VNG

        public static final int COLOR_BayerRG2RGB_VNG
        参见
        常量字段值
      • COLOR_BayerGR2RGB_VNG

        public static final int COLOR_BayerGR2RGB_VNG
        参见
        常量字段值
      • COLOR_BayerBG2BGR_EA

        public static final int COLOR_BayerBG2BGR_EA
        参见
        常量字段值
      • COLOR_BayerGB2BGR_EA

        public static final int COLOR_BayerGB2BGR_EA
        参见
        常量字段值
      • COLOR_BayerRG2BGR_EA

        public static final int COLOR_BayerRG2BGR_EA
        参见
        常量字段值
      • COLOR_BayerGR2BGR_EA

        public static final int COLOR_BayerGR2BGR_EA
        参见
        常量字段值
      • COLOR_BayerRGGB2BGR_EA

        public static final int COLOR_BayerRGGB2BGR_EA
        参见
        常量字段值
      • COLOR_BayerGRBG2BGR_EA

        public static final int COLOR_BayerGRBG2BGR_EA
        参见
        常量字段值
      • COLOR_BayerBGGR2BGR_EA

        public static final int COLOR_BayerBGGR2BGR_EA
        参见
        常量字段值
      • COLOR_BayerGBRG2BGR_EA

        public static final int COLOR_BayerGBRG2BGR_EA
        参见
        常量字段值
      • COLOR_BayerRGGB2RGB_EA

        public static final int COLOR_BayerRGGB2RGB_EA
        参见
        常量字段值
      • COLOR_BayerGRBG2RGB_EA

        public static final int COLOR_BayerGRBG2RGB_EA
        参见
        常量字段值
      • COLOR_BayerBGGR2RGB_EA

        public static final int COLOR_BayerBGGR2RGB_EA
        参见
        常量字段值
      • COLOR_BayerGBRG2RGB_EA

        public static final int COLOR_BayerGBRG2RGB_EA
        参见
        常量字段值
      • COLOR_BayerBG2RGB_EA

        public static final int COLOR_BayerBG2RGB_EA
        参见
        常量字段值
      • COLOR_BayerGB2RGB_EA

        public static final int COLOR_BayerGB2RGB_EA
        参见
        常量字段值
      • COLOR_BayerRG2RGB_EA

        public static final int COLOR_BayerRG2RGB_EA
        参见
        常量字段值
      • COLOR_BayerGR2RGB_EA

        public static final int COLOR_BayerGR2RGB_EA
        参见
        常量字段值
      • COLOR_BayerBG2BGRA

        public static final int COLOR_BayerBG2BGRA
        参见
        常量字段值
      • COLOR_BayerGB2BGRA

        public static final int COLOR_BayerGB2BGRA
        参见
        常量字段值
      • COLOR_BayerRG2BGRA

        public static final int COLOR_BayerRG2BGRA
        参见
        常量字段值
      • COLOR_BayerGR2BGRA

        public static final int COLOR_BayerGR2BGRA
        参见
        常量字段值
      • COLOR_BayerRGGB2BGRA

        public static final int COLOR_BayerRGGB2BGRA
        参见
        常量字段值
      • COLOR_BayerGRBG2BGRA

        public static final int COLOR_BayerGRBG2BGRA
        参见
        常量字段值
      • COLOR_BayerBGGR2BGRA

        public static final int COLOR_BayerBGGR2BGRA
        参见
        常量字段值
      • COLOR_BayerGBRG2BGRA

        public static final int COLOR_BayerGBRG2BGRA
        参见
        常量字段值
      • COLOR_BayerRGGB2RGBA

        public static final int COLOR_BayerRGGB2RGBA
        参见
        常量字段值
      • COLOR_BayerGRBG2RGBA

        public static final int COLOR_BayerGRBG2RGBA
        参见
        常量字段值
      • COLOR_BayerBGGR2RGBA

        public static final int COLOR_BayerBGGR2RGBA
        参见
        常量字段值
      • COLOR_BayerGBRG2RGBA

        public static final int COLOR_BayerGBRG2RGBA
        参见
        常量字段值
      • COLOR_BayerBG2RGBA

        public static final int COLOR_BayerBG2RGBA
        参见
        常量字段值
      • COLOR_BayerGB2RGBA

        public static final int COLOR_BayerGB2RGBA
        参见
        常量字段值
      • COLOR_BayerRG2RGBA

        public static final int COLOR_BayerRG2RGBA
        参见
        常量字段值
      • COLOR_BayerGR2RGBA

        public static final int COLOR_BayerGR2RGBA
        参见
        常量字段值
      • COLOR_RGB2YUV_UYVY

        public static final int COLOR_RGB2YUV_UYVY
        参见
        常量字段值
      • COLOR_BGR2YUV_UYVY

        public static final int COLOR_BGR2YUV_UYVY
        参见
        常量字段值
      • COLOR_RGB2YUV_Y422

        public static final int COLOR_RGB2YUV_Y422
        参见
        常量字段值
      • COLOR_BGR2YUV_Y422

        public static final int COLOR_BGR2YUV_Y422
        参见
        常量字段值
      • COLOR_RGB2YUV_UYNV

        public static final int COLOR_RGB2YUV_UYNV
        参见
        常量字段值
      • COLOR_BGR2YUV_UYNV

        public static final int COLOR_BGR2YUV_UYNV
        参见
        常量字段值
      • COLOR_RGBA2YUV_UYVY

        public static final int COLOR_RGBA2YUV_UYVY
        参见
        常量字段值
      • COLOR_BGRA2YUV_UYVY

        public static final int COLOR_BGRA2YUV_UYVY
        参见
        常量字段值
      • COLOR_RGBA2YUV_Y422

        public static final int COLOR_RGBA2YUV_Y422
        参见
        常量字段值
      • COLOR_BGRA2YUV_Y422

        public static final int COLOR_BGRA2YUV_Y422
        参见
        常量字段值
      • COLOR_RGBA2YUV_UYNV

        public static final int COLOR_RGBA2YUV_UYNV
        参见
        常量字段值
      • COLOR_BGRA2YUV_UYNV

        public static final int COLOR_BGRA2YUV_UYNV
        参见
        常量字段值
      • COLOR_RGB2YUV_YUY2

        public static final int COLOR_RGB2YUV_YUY2
        参见
        常量字段值
      • COLOR_BGR2YUV_YUY2

        public static final int COLOR_BGR2YUV_YUY2
        参见
        常量字段值
      • COLOR_RGB2YUV_YVYU

        public static final int COLOR_RGB2YUV_YVYU
        参见
        常量字段值
      • COLOR_BGR2YUV_YVYU

        public static final int COLOR_BGR2YUV_YVYU
        参见
        常量字段值
      • COLOR_RGB2YUV_YUYV

        public static final int COLOR_RGB2YUV_YUYV
        参见
        常量字段值
      • COLOR_BGR2YUV_YUYV

        public static final int COLOR_BGR2YUV_YUYV
        参见
        常量字段值
      • COLOR_RGB2YUV_YUNV

        public static final int COLOR_RGB2YUV_YUNV
        参见
        常量字段值
      • COLOR_BGR2YUV_YUNV

        public static final int COLOR_BGR2YUV_YUNV
        参见
        常量字段值
      • COLOR_RGBA2YUV_YUY2

        public static final int COLOR_RGBA2YUV_YUY2
        参见
        常量字段值
      • COLOR_BGRA2YUV_YUY2

        public static final int COLOR_BGRA2YUV_YUY2
        参见
        常量字段值
      • COLOR_RGBA2YUV_YVYU

        public static final int COLOR_RGBA2YUV_YVYU
        参见
        常量字段值
      • COLOR_BGRA2YUV_YVYU

        public static final int COLOR_BGRA2YUV_YVYU
        参见
        常量字段值
      • COLOR_RGBA2YUV_YUYV

        public static final int COLOR_RGBA2YUV_YUYV
        参见
        常量字段值
      • COLOR_BGRA2YUV_YUYV

        public static final int COLOR_BGRA2YUV_YUYV
        参见
        常量字段值
      • COLOR_RGBA2YUV_YUNV

        public static final int COLOR_RGBA2YUV_YUNV
        参见
        常量字段值
      • COLOR_BGRA2YUV_YUNV

        public static final int COLOR_BGRA2YUV_YUNV
        参见
        常量字段值
      • COLOR_COLORCVT_MAX

        public static final int COLOR_COLORCVT_MAX
        参见
        常量字段值
      • COLORMAP_AUTUMN

        public static final int COLORMAP_AUTUMN
        参见
        常量字段值
      • COLORMAP_BONE

        public static final int COLORMAP_BONE
        参见
        常量字段值
      • COLORMAP_JET

        public static final int COLORMAP_JET
        参见
        常量字段值
      • COLORMAP_WINTER

        public static final int COLORMAP_WINTER
        参见
        常量字段值
      • COLORMAP_RAINBOW

        public static final int COLORMAP_RAINBOW
        参见
        常量字段值
      • COLORMAP_OCEAN

        public static final int COLORMAP_OCEAN
        参见
        常量字段值
      • COLORMAP_SUMMER

        public static final int COLORMAP_SUMMER
        参见
        常量字段值
      • COLORMAP_SPRING

        public static final int COLORMAP_SPRING
        参见
        常量字段值
      • COLORMAP_COOL

        public static final int COLORMAP_COOL
        参见
        常量字段值
      • COLORMAP_HSV

        public static final int COLORMAP_HSV
        参见
        常量字段值
      • COLORMAP_PINK

        public static final int COLORMAP_PINK
        参见
        常量字段值
      • COLORMAP_HOT

        public static final int COLORMAP_HOT
        参见
        常量字段值
      • COLORMAP_PARULA

        public static final int COLORMAP_PARULA
        参见
        常量字段值
      • COLORMAP_MAGMA

        public static final int COLORMAP_MAGMA
        参见
        常量字段值
      • COLORMAP_INFERNO

        public static final int COLORMAP_INFERNO
        参见
        常量字段值
      • COLORMAP_PLASMA

        public static final int COLORMAP_PLASMA
        参见
        常量字段值
      • COLORMAP_VIRIDIS

        public static final int COLORMAP_VIRIDIS
        参见
        常量字段值
      • COLORMAP_CIVIDIS

        public static final int COLORMAP_CIVIDIS
        参见
        常量字段值
      • COLORMAP_TWILIGHT

        public static final int COLORMAP_TWILIGHT
        参见
        常量字段值
      • COLORMAP_TWILIGHT_SHIFTED

        public static final int COLORMAP_TWILIGHT_SHIFTED
        参见
        常量字段值
      • COLORMAP_TURBO

        public static final int COLORMAP_TURBO
        参见
        常量字段值
      • COLORMAP_DEEPGREEN

        public static final int COLORMAP_DEEPGREEN
        参见
        常量字段值
      • CCL_SPAGHETTI

        public static final int CCL_SPAGHETTI
        参见
        常量字段值
      • CC_STAT_LEFT

        public static final int CC_STAT_LEFT
        参见
        常量字段值
      • CC_STAT_WIDTH

        public static final int CC_STAT_WIDTH
        参见
        常量字段值
      • CC_STAT_HEIGHT

        public static final int CC_STAT_HEIGHT
        参见
        常量字段值
      • CC_STAT_AREA

        public static final int CC_STAT_AREA
        参见
        常量字段值
      • CHAIN_APPROX_NONE

        public static final int CHAIN_APPROX_NONE
        参见
        常量字段值
      • CHAIN_APPROX_SIMPLE

        public static final int CHAIN_APPROX_SIMPLE
        参见
        常量字段值
      • CHAIN_APPROX_TC89_L1

        public static final int CHAIN_APPROX_TC89_L1
        参见
        常量字段值
      • CHAIN_APPROX_TC89_KCOS

        public static final int CHAIN_APPROX_TC89_KCOS
        参见
        常量字段值
      • DIST_LABEL_CCOMP

        public static final int DIST_LABEL_CCOMP
        参见
        常量字段值
      • DIST_LABEL_PIXEL

        public static final int DIST_LABEL_PIXEL
        参见
        常量字段值
      • DIST_MASK_PRECISE

        public static final int DIST_MASK_PRECISE
        参见
        常量字段值
      • FLOODFILL_FIXED_RANGE

        public static final int FLOODFILL_FIXED_RANGE
        参见
        常量字段值
      • FLOODFILL_MASK_ONLY

        public static final int FLOODFILL_MASK_ONLY
        参见
        常量字段值
      • GC_INIT_WITH_RECT

        public static final int GC_INIT_WITH_RECT
        参见
        常量字段值
      • GC_INIT_WITH_MASK

        public static final int GC_INIT_WITH_MASK
        参见
        常量字段值
      • GC_EVAL_FREEZE_MODEL

        public static final int GC_EVAL_FREEZE_MODEL
        参见
        常量字段值
      • FONT_HERSHEY_SIMPLEX

        public static final int FONT_HERSHEY_SIMPLEX
        参见
        常量字段值
      • FONT_HERSHEY_PLAIN

        public static final int FONT_HERSHEY_PLAIN
        参见
        常量字段值
      • FONT_HERSHEY_DUPLEX

        public static final int FONT_HERSHEY_DUPLEX
        参见
        常量字段值
      • FONT_HERSHEY_COMPLEX

        public static final int FONT_HERSHEY_COMPLEX
        参见
        常量字段值
      • FONT_HERSHEY_TRIPLEX

        public static final int FONT_HERSHEY_TRIPLEX
        参见
        常量字段值
      • FONT_HERSHEY_COMPLEX_SMALL

        public static final int FONT_HERSHEY_COMPLEX_SMALL
        参见
        常量字段值
      • FONT_HERSHEY_SCRIPT_SIMPLEX

        public static final int FONT_HERSHEY_SCRIPT_SIMPLEX
        参见
        常量字段值
      • FONT_HERSHEY_SCRIPT_COMPLEX

        public static final int FONT_HERSHEY_SCRIPT_COMPLEX
        参见
        常量字段值
      • HISTCMP_CORREL

        public static final int HISTCMP_CORREL
        参见
        常量字段值
      • HISTCMP_CHISQR

        public static final int HISTCMP_CHISQR
        参见
        常量字段值
      • HISTCMP_INTERSECT

        public static final int HISTCMP_INTERSECT
        参见
        常量字段值
      • HISTCMP_BHATTACHARYYA

        public static final int HISTCMP_BHATTACHARYYA
        参见
        常量字段值
      • HISTCMP_HELLINGER

        public static final int HISTCMP_HELLINGER
        参见
        常量字段值
      • HISTCMP_CHISQR_ALT

        public static final int HISTCMP_CHISQR_ALT
        参见
        常量字段值
      • HISTCMP_KL_DIV

        public static final int HISTCMP_KL_DIV
        参见
        常量字段值
      • HOUGH_STANDARD

        public static final int HOUGH_STANDARD
        参见
        常量字段值
      • HOUGH_PROBABILISTIC

        public static final int HOUGH_PROBABILISTIC
        参见
        常量字段值
      • HOUGH_MULTI_SCALE

        public static final int HOUGH_MULTI_SCALE
        参见
        常量字段值
      • HOUGH_GRADIENT

        public static final int HOUGH_GRADIENT
        参见
        常量字段值
      • HOUGH_GRADIENT_ALT

        public static final int HOUGH_GRADIENT_ALT
        参见
        常量字段值
      • INTER_NEAREST

        public static final int INTER_NEAREST
        参见
        常量字段值
      • INTER_LINEAR

        public static final int INTER_LINEAR
        参见
        常量字段值
      • INTER_LANCZOS4

        public static final int INTER_LANCZOS4
        参见
        常量字段值
      • INTER_LINEAR_EXACT

        public static final int INTER_LINEAR_EXACT
        参见
        常量字段值
      • INTER_NEAREST_EXACT

        public static final int INTER_NEAREST_EXACT
        参见
        常量字段值
      • WARP_FILL_OUTLIERS

        public static final int WARP_FILL_OUTLIERS
        参见
        常量字段值
      • WARP_INVERSE_MAP

        public static final int WARP_INVERSE_MAP
        参见
        常量字段值
      • WARP_RELATIVE_MAP

        public static final int WARP_RELATIVE_MAP
        参见
        常量字段值
      • INTER_TAB_SIZE

        public static final int INTER_TAB_SIZE
        参见
        常量字段值
      • INTER_TAB_SIZE2

        public static final int INTER_TAB_SIZE2
        参见
        常量字段值
      • LSD_REFINE_NONE

        public static final int LSD_REFINE_NONE
        参见
        常量字段值
      • LSD_REFINE_STD

        public static final int LSD_REFINE_STD
        参见
        常量字段值
      • LSD_REFINE_ADV

        public static final int LSD_REFINE_ADV
        参见
        常量字段值
      • MARKER_CROSS

        public static final int MARKER_CROSS
        参见
        常量字段值
      • MARKER_TILTED_CROSS

        public static final int MARKER_TILTED_CROSS
        参见
        常量字段值
      • MARKER_DIAMOND

        public static final int MARKER_DIAMOND
        参见
        常量字段值
      • MARKER_SQUARE

        public static final int MARKER_SQUARE
        参见
        常量字段值
      • MARKER_TRIANGLE_UP

        public static final int MARKER_TRIANGLE_UP
        参见
        常量字段值
      • MARKER_TRIANGLE_DOWN

        public static final int MARKER_TRIANGLE_DOWN
        参见
        常量字段值
      • MORPH_ELLIPSE

        public static final int MORPH_ELLIPSE
        参见
        常量字段值
      • MORPH_DIAMOND

        public static final int MORPH_DIAMOND
        参见
        常量字段值
      • MORPH_DILATE

        public static final int MORPH_DILATE
        参见
        常量字段值
      • MORPH_GRADIENT

        public static final int MORPH_GRADIENT
        参见
        常量字段值
      • MORPH_TOPHAT

        public static final int MORPH_TOPHAT
        参见
        常量字段值
      • MORPH_BLACKHAT

        public static final int MORPH_BLACKHAT
        参见
        常量字段值
      • MORPH_HITMISS

        public static final int MORPH_HITMISS
        参见
        常量字段值
      • INTERSECT_NONE

        public static final int INTERSECT_NONE
        参见
        常量字段值
      • INTERSECT_PARTIAL

        public static final int INTERSECT_PARTIAL
        参见
        常量字段值
      • INTERSECT_FULL

        public static final int INTERSECT_FULL
        参见
        常量字段值
      • RETR_EXTERNAL

        public static final int RETR_EXTERNAL
        参见
        常量字段值
      • RETR_FLOODFILL

        public static final int RETR_FLOODFILL
        参见
        常量字段值
      • CONTOURS_MATCH_I1

        public static final int CONTOURS_MATCH_I1
        参见
        常量字段值
      • CONTOURS_MATCH_I2

        public static final int CONTOURS_MATCH_I2
        参见
        常量字段值
      • CONTOURS_MATCH_I3

        public static final int CONTOURS_MATCH_I3
        参见
        常量字段值
      • FILTER_SCHARR

        public static final int FILTER_SCHARR
        参见
        常量字段值
      • TM_SQDIFF_NORMED

        public static final int TM_SQDIFF_NORMED
        参见
        常量字段值
      • TM_CCORR_NORMED

        public static final int TM_CCORR_NORMED
        参见
        常量字段值
      • TM_CCOEFF_NORMED

        public static final int TM_CCOEFF_NORMED
        参见
        常量字段值
      • THRESH_BINARY

        public static final int THRESH_BINARY
        参见
        常量字段值
      • THRESH_BINARY_INV

        public static final int THRESH_BINARY_INV
        参见
        常量字段值
      • THRESH_TRUNC

        public static final int THRESH_TRUNC
        参见
        常量字段值
      • THRESH_TOZERO

        public static final int THRESH_TOZERO
        参见
        常量字段值
      • THRESH_TOZERO_INV

        public static final int THRESH_TOZERO_INV
        参见
        常量字段值
      • THRESH_TRIANGLE

        public static final int THRESH_TRIANGLE
        参见
        常量字段值
      • THRESH_DRYRUN

        public static final int THRESH_DRYRUN
        参见
        常量字段值
      • WARP_POLAR_LINEAR

        public static final int WARP_POLAR_LINEAR
        参见
        常量字段值
      • WARP_POLAR_LOG

        public static final int WARP_POLAR_LOG
        参见
        常量字段值
    • 构造函数详细信息

      • Imgproc

        public Imgproc()
    • 方法详细信息

      • createLineSegmentDetector

        public static LineSegmentDetector createLineSegmentDetector​(int refine,
                                                                    double scale,
                                                                    double sigma_scale,
                                                                    double quant,
                                                                    double ang_th,
                                                                    double log_eps,
                                                                    double density_th,
                                                                    int n_bins)
        创建 LineSegmentDetector 对象的智能指针并进行初始化。LineSegmentDetector 算法使用标准值定义。只有高级用户可能需要编辑这些值,以根据自己的应用程序进行定制。
        参数
        refine - 发现的直线将被细化的方式,参见 #LineSegmentDetectorModes
        scale - 用于查找直线的图像比例。范围 (0..1]。
        sigma_scale - 高斯滤波器中的 Sigma 值。它计算为 sigma = sigma_scale/scale。
        quant - 梯度范数上的量化误差界限。
        ang_th - 梯度角度容差,单位为度。
        log_eps - 检测阈值:-log10(NFA) > log_eps。仅在选择高级细化时使用。
        density_th - 包围矩形中对齐区域点的最小密度。
        n_bins - 梯度模数伪排序中的 bin 数量。
        返回
        自动生成
      • createLineSegmentDetector

        public static LineSegmentDetector createLineSegmentDetector​(int refine,
                                                                    double scale,
                                                                    double sigma_scale,
                                                                    double quant,
                                                                    double ang_th,
                                                                    double log_eps,
                                                                    double density_th)
        创建 LineSegmentDetector 对象的智能指针并进行初始化。LineSegmentDetector 算法使用标准值定义。只有高级用户可能需要编辑这些值,以根据自己的应用程序进行定制。
        参数
        refine - 发现的直线将被细化的方式,参见 #LineSegmentDetectorModes
        scale - 用于查找直线的图像比例。范围 (0..1]。
        sigma_scale - 高斯滤波器中的 Sigma 值。它计算为 sigma = sigma_scale/scale。
        quant - 梯度范数上的量化误差界限。
        ang_th - 梯度角度容差,单位为度。
        log_eps - 检测阈值:-log10(NFA) > log_eps。仅在选择高级细化时使用。
        density_th - 包围矩形中对齐区域点的最小密度。
        返回
        自动生成
      • createLineSegmentDetector

        public static LineSegmentDetector createLineSegmentDetector​(int refine,
                                                                    double scale,
                                                                    double sigma_scale,
                                                                    double quant,
                                                                    double ang_th,
                                                                    double log_eps)
        创建 LineSegmentDetector 对象的智能指针并进行初始化。LineSegmentDetector 算法使用标准值定义。只有高级用户可能需要编辑这些值,以根据自己的应用程序进行定制。
        参数
        refine - 发现的直线将被细化的方式,参见 #LineSegmentDetectorModes
        scale - 用于查找直线的图像比例。范围 (0..1]。
        sigma_scale - 高斯滤波器中的 Sigma 值。它计算为 sigma = sigma_scale/scale。
        quant - 梯度范数上的量化误差界限。
        ang_th - 梯度角度容差,单位为度。
        log_eps - 检测阈值:-log10(NFA) > log_eps。仅在选择高级细化时使用。
        返回
        自动生成
      • createLineSegmentDetector

        public static LineSegmentDetector createLineSegmentDetector​(int refine,
                                                                    double scale,
                                                                    double sigma_scale,
                                                                    double quant,
                                                                    double ang_th)
        创建 LineSegmentDetector 对象的智能指针并进行初始化。LineSegmentDetector 算法使用标准值定义。只有高级用户可能需要编辑这些值,以根据自己的应用程序进行定制。
        参数
        refine - 发现的直线将被细化的方式,参见 #LineSegmentDetectorModes
        scale - 用于查找直线的图像比例。范围 (0..1]。
        sigma_scale - 高斯滤波器中的 Sigma 值。它计算为 sigma = sigma_scale/scale。
        quant - 梯度范数上的量化误差界限。
        ang_th - 梯度角度容差,单位为度。
        返回
        自动生成
      • createLineSegmentDetector

        public static LineSegmentDetector createLineSegmentDetector​(int refine,
                                                                    double scale,
                                                                    double sigma_scale,
                                                                    double quant)
        创建 LineSegmentDetector 对象的智能指针并进行初始化。LineSegmentDetector 算法使用标准值定义。只有高级用户可能需要编辑这些值,以根据自己的应用程序进行定制。
        参数
        refine - 发现的直线将被细化的方式,参见 #LineSegmentDetectorModes
        scale - 用于查找直线的图像比例。范围 (0..1]。
        sigma_scale - 高斯滤波器中的 Sigma 值。它计算为 sigma = sigma_scale/scale。
        quant - 梯度范数上的量化误差界限。
        返回
        自动生成
      • createLineSegmentDetector

        public static LineSegmentDetector createLineSegmentDetector​(int refine,
                                                                    double scale,
                                                                    double sigma_scale)
        创建 LineSegmentDetector 对象的智能指针并进行初始化。LineSegmentDetector 算法使用标准值定义。只有高级用户可能需要编辑这些值,以根据自己的应用程序进行定制。
        参数
        refine - 发现的直线将被细化的方式,参见 #LineSegmentDetectorModes
        scale - 用于查找直线的图像比例。范围 (0..1]。
        sigma_scale - 高斯滤波器中的 Sigma 值。它计算为 sigma = sigma_scale/scale。
        返回
        自动生成
      • createLineSegmentDetector

        public static LineSegmentDetector createLineSegmentDetector​(int refine,
                                                                    double scale)
        创建 LineSegmentDetector 对象的智能指针并进行初始化。LineSegmentDetector 算法使用标准值定义。只有高级用户可能需要编辑这些值,以根据自己的应用程序进行定制。
        参数
        refine - 发现的直线将被细化的方式,参见 #LineSegmentDetectorModes
        scale - 用于查找直线的图像比例。范围 (0..1]。
        返回
        自动生成
      • createLineSegmentDetector

        public static LineSegmentDetector createLineSegmentDetector​(int refine)
        创建 LineSegmentDetector 对象的智能指针并进行初始化。LineSegmentDetector 算法使用标准值定义。只有高级用户可能需要编辑这些值,以根据自己的应用程序进行定制。
        参数
        refine - 发现的直线将被细化的方式,参见 #LineSegmentDetectorModes
        返回
        自动生成
      • createLineSegmentDetector

        public static LineSegmentDetector createLineSegmentDetector()
        创建 LineSegmentDetector 对象的智能指针并进行初始化。LineSegmentDetector 算法使用标准值定义。只有高级用户可能需要编辑这些值,以根据自己的应用程序进行定制。
        返回
        自动生成
      • getGaussianKernel

        public static Mat getGaussianKernel​(int ksize,
                                            double sigma,
                                            int ktype)
        返回高斯滤波器系数。此函数计算并返回高斯滤波器系数的 \(\texttt{ksize} \times 1\) 矩阵:\(G_i= \alpha *e^{-(i-( \texttt{ksize} -1)/2)^2/(2* \texttt{sigma}^2)},\) 其中 \(i=0..\texttt{ksize}-1\),\(\alpha\) 是选择的比例因子,使得 \(\sum_i G_i=1\)。两个这样的生成核可以传递给 sepFilter2D。这些函数会自动识别平滑核(权重和为1的对称核)并相应地处理它们。您也可以使用更高级的 GaussianBlur。
        参数
        ksize - 孔径大小。它应该为奇数 ( \(\texttt{ksize} \mod 2 = 1\) ) 且为正。
        sigma - 高斯标准差。如果它非正,则从 ksize 计算为 sigma = 0.3*((ksize-1)*0.5 - 1) + 0.8
        ktype - 滤波器系数的类型。它可以是 CV_32F 或 CV_64F。参见:sepFilter2D, getDerivKernels, getStructuringElement, GaussianBlur
        返回
        自动生成
      • getGaussianKernel

        public static Mat getGaussianKernel​(int ksize,
                                            double sigma)
        返回高斯滤波器系数。此函数计算并返回高斯滤波器系数的 \(\texttt{ksize} \times 1\) 矩阵:\(G_i= \alpha *e^{-(i-( \texttt{ksize} -1)/2)^2/(2* \texttt{sigma}^2)},\) 其中 \(i=0..\texttt{ksize}-1\),\(\alpha\) 是选择的比例因子,使得 \(\sum_i G_i=1\)。两个这样的生成核可以传递给 sepFilter2D。这些函数会自动识别平滑核(权重和为1的对称核)并相应地处理它们。您也可以使用更高级的 GaussianBlur。
        参数
        ksize - 孔径大小。它应该为奇数 ( \(\texttt{ksize} \mod 2 = 1\) ) 且为正。
        sigma - 高斯标准差。如果它非正,则从 ksize 计算为 sigma = 0.3*((ksize-1)*0.5 - 1) + 0.8。参见:sepFilter2D, getDerivKernels, getStructuringElement, GaussianBlur
        返回
        自动生成
      • getDerivKernels

        public static void getDerivKernels​(Mat kx,
                                           Mat ky,
                                           int dx,
                                           int dy,
                                           int ksize,
                                           boolean normalize,
                                           int ktype)
        返回用于计算空间图像导数的滤波器系数。此函数计算并返回空间图像导数的滤波器系数。当 ksize=FILTER_SCHARR 时,生成 Scharr \(3 \times 3\) 核(参见 #Scharr)。否则,生成 Sobel 核(参见 #Sobel)。这些滤波器通常传递给 #sepFilter2D 或
        参数
        kx - 行滤波器系数的输出矩阵。其类型为 ktype。
        ky - 列滤波器系数的输出矩阵。其类型为 ktype。
        dx - 相对于 x 的导数阶数。
        dy - 相对于 y 的导数阶数。
        ksize - 孔径大小。它可以是 FILTER_SCHARR, 1, 3, 5 或 7。
        normalize - 指示是否归一化(缩小)滤波器系数的标志。理论上,系数的分母应为 \(=2^{ksize*2-dx-dy-2}\)。如果要过滤浮点图像,您可能会使用归一化核。但如果您计算 8 位图像的导数,将结果存储在 16 位图像中,并希望保留所有小数位,您可能需要设置 normalize=false。
        ktype - 滤波器系数的类型。它可以是 CV_32F 或 CV_64F。
      • getDerivKernels

        public static void getDerivKernels​(Mat kx,
                                           Mat ky,
                                           int dx,
                                           int dy,
                                           int ksize,
                                           boolean normalize)
        返回用于计算空间图像导数的滤波器系数。此函数计算并返回空间图像导数的滤波器系数。当 ksize=FILTER_SCHARR 时,生成 Scharr \(3 \times 3\) 核(参见 #Scharr)。否则,生成 Sobel 核(参见 #Sobel)。这些滤波器通常传递给 #sepFilter2D 或
        参数
        kx - 行滤波器系数的输出矩阵。其类型为 ktype。
        ky - 列滤波器系数的输出矩阵。其类型为 ktype。
        dx - 相对于 x 的导数阶数。
        dy - 相对于 y 的导数阶数。
        ksize - 孔径大小。它可以是 FILTER_SCHARR, 1, 3, 5 或 7。
        normalize - 指示是否归一化(缩小)滤波器系数的标志。理论上,系数的分母应为 \(=2^{ksize*2-dx-dy-2}\)。如果要过滤浮点图像,您可能会使用归一化核。但如果您计算 8 位图像的导数,将结果存储在 16 位图像中,并希望保留所有小数位,您可能需要设置 normalize=false。
      • getDerivKernels

        public static void getDerivKernels​(Mat kx,
                                           Mat ky,
                                           int dx,
                                           int dy,
                                           int ksize)
        返回用于计算空间图像导数的滤波器系数。此函数计算并返回空间图像导数的滤波器系数。当 ksize=FILTER_SCHARR 时,生成 Scharr \(3 \times 3\) 核(参见 #Scharr)。否则,生成 Sobel 核(参见 #Sobel)。这些滤波器通常传递给 #sepFilter2D 或
        参数
        kx - 行滤波器系数的输出矩阵。其类型为 ktype。
        ky - 列滤波器系数的输出矩阵。其类型为 ktype。
        dx - 相对于 x 的导数阶数。
        dy - 相对于 y 的导数阶数。
        ksize - 孔径大小。它可以是 FILTER_SCHARR, 1, 3, 5 或 7。理论上,系数的分母应为 \(=2^{ksize*2-dx-dy-2}\)。如果要过滤浮点图像,您可能会使用归一化核。但如果您计算 8 位图像的导数,将结果存储在 16 位图像中,并希望保留所有小数位,您可能需要设置 normalize=false。
      • getGaborKernel

        public static Mat getGaborKernel​(Size ksize,
                                         double sigma,
                                         double theta,
                                         double lambd,
                                         double gamma,
                                         double psi,
                                         int ktype)
        返回 Gabor 滤波器系数。有关 Gabor 滤波器方程和参数的更多详细信息,请参见:[Gabor Filter](https://en.wikipedia.org/wiki/Gabor_filter)。
        参数
        ksize - 返回的滤波器大小。
        sigma - 高斯包络的标准差。
        theta - Gabor 函数平行条纹法线的方向。
        lambd - 正弦因子的波长。
        gamma - 空间纵横比。
        psi - 相位偏移。
        ktype - 滤波器系数的类型。它可以是 CV_32F 或 CV_64F。
        返回
        自动生成
      • getGaborKernel

        public static Mat getGaborKernel​(Size ksize,
                                         double sigma,
                                         double theta,
                                         double lambd,
                                         double gamma,
                                         double psi)
        返回 Gabor 滤波器系数。有关 Gabor 滤波器方程和参数的更多详细信息,请参见:[Gabor Filter](https://en.wikipedia.org/wiki/Gabor_filter)。
        参数
        ksize - 返回的滤波器大小。
        sigma - 高斯包络的标准差。
        theta - Gabor 函数平行条纹法线的方向。
        lambd - 正弦因子的波长。
        gamma - 空间纵横比。
        psi - 相位偏移。
        返回
        自动生成
      • getGaborKernel

        public static Mat getGaborKernel​(Size ksize,
                                         double sigma,
                                         double theta,
                                         double lambd,
                                         double gamma)
        返回 Gabor 滤波器系数。有关 Gabor 滤波器方程和参数的更多详细信息,请参见:[Gabor Filter](https://en.wikipedia.org/wiki/Gabor_filter)。
        参数
        ksize - 返回的滤波器大小。
        sigma - 高斯包络的标准差。
        theta - Gabor 函数平行条纹法线的方向。
        lambd - 正弦因子的波长。
        gamma - 空间纵横比。
        返回
        自动生成
      • getStructuringElement

        public static Mat getStructuringElement​(int shape,
                                                Size ksize,
                                                Point anchor)
        返回用于形态学运算的指定大小和形状的结构元素。此函数构造并返回可进一步传递给 #erode、#dilate 或 #morphologyEx 的结构元素。但您也可以自行构造任意二值掩码并将其用作结构元素。
        参数
        shape - 元素形状,可以是 #MorphShapes 之一
        ksize - 结构元素的大小。
        anchor - 元素内的锚点位置。默认值 \((-1, -1)\) 表示锚点在中心。请注意,只有十字形元素的形状取决于锚点位置。在其他情况下,锚点仅调节形态学操作结果的偏移量。
        返回
        自动生成
      • getStructuringElement

        public static Mat getStructuringElement​(int shape,
                                                Size ksize)
        返回用于形态学运算的指定大小和形状的结构元素。此函数构造并返回可进一步传递给 #erode、#dilate 或 #morphologyEx 的结构元素。但您也可以自行构造任意二值掩码并将其用作结构元素。
        参数
        shape - 元素形状,可以是 #MorphShapes 之一
        ksize - 结构元素的大小。锚点位于中心。请注意,只有十字形元素的形状取决于锚点位置。在其他情况下,锚点仅调节形态学操作结果的偏移量。
        返回
        自动生成
      • medianBlur

        public static void medianBlur​(Mat src,
                                      Mat dst,
                                      int ksize)
        使用中值滤波器模糊图像。此函数使用 \(\texttt{ksize} \times \texttt{ksize}\) 孔径的中值滤波器平滑图像。多通道图像的每个通道独立处理。支持原地操作。注意:中值滤波器内部使用 #BORDER_REPLICATE 来处理边界像素,参见 #BorderTypes
        参数
        src - 输入 1、3 或 4 通道图像;当 ksize 为 3 或 5 时,图像深度应为 CV_8U、CV_16U 或 CV_32F;对于更大的孔径大小,只能是 CV_8U。
        dst - 与 src 大小和类型相同的目标数组。
        ksize - 孔径线性大小;它必须是奇数且大于 1,例如:3, 5, 7 ... 参见:bilateralFilter, blur, boxFilter, GaussianBlur
      • GaussianBlur

        public static void GaussianBlur​(Mat src,
                                        Mat dst,
                                        Size ksize,
                                        double sigmaX,
                                        double sigmaY,
                                        int borderType,
                                        int hint)
        使用高斯滤波器模糊图像。此函数将源图像与指定的高斯核进行卷积。支持原地滤波。
        参数
        src - 输入图像;图像可以有任意数量的通道,它们独立处理,但深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F。
        dst - 与 src 大小和类型相同的输出图像。
        ksize - 高斯核大小。ksize.width 和 ksize.height 可以不同,但它们都必须为正且为奇数。或者,它们可以为零,然后从 sigma 计算。
        sigmaX - X 方向高斯核标准差。
        sigmaY - Y 方向高斯核标准差;如果 sigmaY 为零,则将其设置为等于 sigmaX;如果两个 sigma 都为零,则分别从 ksize.width 和 ksize.height 计算它们(详见 #getGaussianKernel);为了完全控制结果,而不受未来对所有这些语义的可能修改的影响,建议指定 ksize、sigmaX 和 sigmaY 的所有值。
        borderType - 像素外推法,参见 #BorderTypes。不支持 #BORDER_WRAP。
        hint - 实现修改标志。参见 #AlgorithmHint 参见:sepFilter2D, filter2D, blur, boxFilter, bilateralFilter, medianBlur
      • GaussianBlur

        public static void GaussianBlur​(Mat src,
                                        Mat dst,
                                        Size ksize,
                                        double sigmaX,
                                        double sigmaY,
                                        int borderType)
        使用高斯滤波器模糊图像。此函数将源图像与指定的高斯核进行卷积。支持原地滤波。
        参数
        src - 输入图像;图像可以有任意数量的通道,它们独立处理,但深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F。
        dst - 与 src 大小和类型相同的输出图像。
        ksize - 高斯核大小。ksize.width 和 ksize.height 可以不同,但它们都必须为正且为奇数。或者,它们可以为零,然后从 sigma 计算。
        sigmaX - X 方向高斯核标准差。
        sigmaY - Y 方向高斯核标准差;如果 sigmaY 为零,则将其设置为等于 sigmaX;如果两个 sigma 都为零,则分别从 ksize.width 和 ksize.height 计算它们(详见 #getGaussianKernel);为了完全控制结果,而不受未来对所有这些语义的可能修改的影响,建议指定 ksize、sigmaX 和 sigmaY 的所有值。
        borderType - 像素外推法,参见 #BorderTypes。不支持 #BORDER_WRAP。参见:sepFilter2D, filter2D, blur, boxFilter, bilateralFilter, medianBlur
      • GaussianBlur

        public static void GaussianBlur​(Mat src,
                                        Mat dst,
                                        Size ksize,
                                        double sigmaX,
                                        double sigmaY)
        使用高斯滤波器模糊图像。此函数将源图像与指定的高斯核进行卷积。支持原地滤波。
        参数
        src - 输入图像;图像可以有任意数量的通道,它们独立处理,但深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F。
        dst - 与 src 大小和类型相同的输出图像。
        ksize - 高斯核大小。ksize.width 和 ksize.height 可以不同,但它们都必须为正且为奇数。或者,它们可以为零,然后从 sigma 计算。
        sigmaX - X 方向高斯核标准差。
        sigmaY - Y 方向高斯核标准差;如果 sigmaY 为零,则将其设置为等于 sigmaX;如果两个 sigma 都为零,则分别从 ksize.width 和 ksize.height 计算它们(详见 #getGaussianKernel);为了完全控制结果,而不受未来对所有这些语义的可能修改的影响,建议指定 ksize、sigmaX 和 sigmaY 的所有值。参见:sepFilter2D, filter2D, blur, boxFilter, bilateralFilter, medianBlur
      • GaussianBlur

        public static void GaussianBlur​(Mat src,
                                        Mat dst,
                                        Size ksize,
                                        double sigmaX)
        使用高斯滤波器模糊图像。此函数将源图像与指定的高斯核进行卷积。支持原地滤波。
        参数
        src - 输入图像;图像可以有任意数量的通道,它们独立处理,但深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F。
        dst - 与 src 大小和类型相同的输出图像。
        ksize - 高斯核大小。ksize.width 和 ksize.height 可以不同,但它们都必须为正且为奇数。或者,它们可以为零,然后从 sigma 计算。
        sigmaX - X 方向高斯核标准差。如果 sigmaY 为零,则将其设置为等于 sigmaX;如果两个 sigma 都为零,则分别从 ksize.width 和 ksize.height 计算它们(详见 #getGaussianKernel);为了完全控制结果,而不受未来对所有这些语义的可能修改的影响,建议指定 ksize、sigmaX 和 sigmaY 的所有值。参见:sepFilter2D, filter2D, blur, boxFilter, bilateralFilter, medianBlur
      • bilateralFilter

        public static void bilateralFilter​(Mat src,
                                           Mat dst,
                                           int d,
                                           double sigmaColor,
                                           double sigmaSpace,
                                           int borderType)
        对图像应用双边滤波器。此函数对输入图像应用双边滤波,如 https://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html 所述。双边滤波器能很好地减少不必要的噪声,同时保持边缘相当锐利。然而,与大多数滤波器相比,它非常慢。_Sigma 值_:为简单起见,您可以将两个 sigma 值设置为相同。如果它们很小(< 10),滤波器效果不大;而如果它们很大(> 150),则效果会非常强,使图像看起来“卡通化”。_滤波器大小_:大滤波器 (d > 5) 非常慢,因此建议实时应用使用 d=5,而对于需要大量噪声滤波的离线应用,可以使用 d=9。此滤波器不支持原地操作。
        参数
        src - 源 8 位或浮点,1 通道或 3 通道图像。
        dst - 与 src 大小和类型相同的目标图像。
        d - 滤波期间使用的每个像素邻域的直径。如果它非正,则从 sigmaSpace 计算。
        sigmaColor - 颜色空间中的滤波器 sigma。此参数值越大,表示像素邻域内(参见 sigmaSpace)更远的颜色将混合在一起,从而产生更大的半相等颜色区域。
        sigmaSpace - 坐标空间中的滤波器 sigma。此参数值越大,表示只要颜色足够接近(参见 sigmaColor),更远的像素也会相互影响。当 d>0 时,它指定邻域大小,而与 sigmaSpace 无关。否则,d 与 sigmaSpace 成比例。
        borderType - 用于外推图像外部像素的边界模式,参见 #BorderTypes
      • bilateralFilter

        public static void bilateralFilter​(Mat src,
                                           Mat dst,
                                           int d,
                                           double sigmaColor,
                                           double sigmaSpace)
        对图像应用双边滤波器。此函数对输入图像应用双边滤波,如 https://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html 所述。双边滤波器能很好地减少不必要的噪声,同时保持边缘相当锐利。然而,与大多数滤波器相比,它非常慢。_Sigma 值_:为简单起见,您可以将两个 sigma 值设置为相同。如果它们很小(< 10),滤波器效果不大;而如果它们很大(> 150),则效果会非常强,使图像看起来“卡通化”。_滤波器大小_:大滤波器 (d > 5) 非常慢,因此建议实时应用使用 d=5,而对于需要大量噪声滤波的离线应用,可以使用 d=9。此滤波器不支持原地操作。
        参数
        src - 源 8 位或浮点,1 通道或 3 通道图像。
        dst - 与 src 大小和类型相同的目标图像。
        d - 滤波期间使用的每个像素邻域的直径。如果它非正,则从 sigmaSpace 计算。
        sigmaColor - 颜色空间中的滤波器 sigma。此参数值越大,表示像素邻域内(参见 sigmaSpace)更远的颜色将混合在一起,从而产生更大的半相等颜色区域。
        sigmaSpace - 坐标空间中的滤波器 sigma。此参数值越大,表示只要颜色足够接近(参见 sigmaColor),更远的像素也会相互影响。当 d>0 时,它指定邻域大小,而与 sigmaSpace 无关。否则,d 与 sigmaSpace 成比例。
      • boxFilter

        public static void boxFilter​(Mat src,
                                     Mat dst,
                                     int ddepth,
                                     Size ksize,
                                     Point anchor,
                                     boolean normalize,
                                     int borderType)
        使用盒式滤波器模糊图像。此函数使用以下核平滑图像:\(\texttt{K} = \alpha \begin{bmatrix} 1 & 1 & 1 & \cdots & 1 & 1 \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \hdotsfor{6} \\ 1 & 1 & 1 & \cdots & 1 & 1 \end{bmatrix}\) 其中 \(\alpha = \begin{cases} \frac{1}{\texttt{ksize.width*ksize.height}} & \texttt{当 } \texttt{normalize=true} \\1 & \texttt{否则}\end{cases}\) 未归一化的盒式滤波器对于计算每个像素邻域上的各种积分特性很有用,例如图像导数的协方差矩阵(用于密集光流算法等)。如果需要计算可变大小窗口的像素和,请使用 #integral。
        参数
        src - 输入图像。
        dst - 与 src 大小和类型相同的输出图像。
        ddepth - 输出图像深度(-1 表示使用 src.depth())。
        ksize - 模糊核大小。
        anchor - 锚点;默认值 Point(-1,-1) 表示锚点在核的中心。
        normalize - 标志,指定核是否按其面积进行归一化。
        borderType - 用于外推图像外部像素的边界模式,参见 #BorderTypes。不支持 #BORDER_WRAP。参见:blur, bilateralFilter, GaussianBlur, medianBlur, integral
      • boxFilter

        public static void boxFilter​(Mat src,
                                     Mat dst,
                                     int ddepth,
                                     Size ksize,
                                     Point anchor,
                                     boolean normalize)
        使用盒式滤波器模糊图像。此函数使用以下核平滑图像:\(\texttt{K} = \alpha \begin{bmatrix} 1 & 1 & 1 & \cdots & 1 & 1 \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \hdotsfor{6} \\ 1 & 1 & 1 & \cdots & 1 & 1 \end{bmatrix}\) 其中 \(\alpha = \begin{cases} \frac{1}{\texttt{ksize.width*ksize.height}} & \texttt{当 } \texttt{normalize=true} \\1 & \texttt{否则}\end{cases}\) 未归一化的盒式滤波器对于计算每个像素邻域上的各种积分特性很有用,例如图像导数的协方差矩阵(用于密集光流算法等)。如果需要计算可变大小窗口的像素和,请使用 #integral。
        参数
        src - 输入图像。
        dst - 与 src 大小和类型相同的输出图像。
        ddepth - 输出图像深度(-1 表示使用 src.depth())。
        ksize - 模糊核大小。
        anchor - 锚点;默认值 Point(-1,-1) 表示锚点在核的中心。
        normalize - 标志,指定核是否按其面积进行归一化。参见:blur, bilateralFilter, GaussianBlur, medianBlur, integral
      • boxFilter

        public static void boxFilter​(Mat src,
                                     Mat dst,
                                     int ddepth,
                                     Size ksize,
                                     Point anchor)
        使用盒式滤波器模糊图像。此函数使用以下核平滑图像:\(\texttt{K} = \alpha \begin{bmatrix} 1 & 1 & 1 & \cdots & 1 & 1 \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \hdotsfor{6} \\ 1 & 1 & 1 & \cdots & 1 & 1 \end{bmatrix}\) 其中 \(\alpha = \begin{cases} \frac{1}{\texttt{ksize.width*ksize.height}} & \texttt{当 } \texttt{normalize=true} \\1 & \texttt{否则}\end{cases}\) 未归一化的盒式滤波器对于计算每个像素邻域上的各种积分特性很有用,例如图像导数的协方差矩阵(用于密集光流算法等)。如果需要计算可变大小窗口的像素和,请使用 #integral。
        参数
        src - 输入图像。
        dst - 与 src 大小和类型相同的输出图像。
        ddepth - 输出图像深度(-1 表示使用 src.depth())。
        ksize - 模糊核大小。
        anchor - 锚点;默认值 Point(-1,-1) 表示锚点在核的中心。参见:blur, bilateralFilter, GaussianBlur, medianBlur, integral
      • boxFilter

        public static void boxFilter​(Mat src,
                                     Mat dst,
                                     int ddepth,
                                     Size ksize)
        使用盒式滤波器模糊图像。此函数使用以下核平滑图像:\(\texttt{K} = \alpha \begin{bmatrix} 1 & 1 & 1 & \cdots & 1 & 1 \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \hdotsfor{6} \\ 1 & 1 & 1 & \cdots & 1 & 1 \end{bmatrix}\) 其中 \(\alpha = \begin{cases} \frac{1}{\texttt{ksize.width*ksize.height}} & \texttt{当 } \texttt{normalize=true} \\1 & \texttt{否则}\end{cases}\) 未归一化的盒式滤波器对于计算每个像素邻域上的各种积分特性很有用,例如图像导数的协方差矩阵(用于密集光流算法等)。如果需要计算可变大小窗口的像素和,请使用 #integral。
        参数
        src - 输入图像。
        dst - 与 src 大小和类型相同的输出图像。
        ddepth - 输出图像深度(-1 表示使用 src.depth())。
        ksize - 模糊核大小。中心。参见:blur, bilateralFilter, GaussianBlur, medianBlur, integral
      • sqrBoxFilter

        public static void sqrBoxFilter​(Mat src,
                                        Mat dst,
                                        int ddepth,
                                        Size ksize,
                                        Point anchor,
                                        boolean normalize,
                                        int borderType)
        计算与滤波器重叠的像素值的归一化平方和。对于源图像中的每个像素 \( (x, y) \),此函数计算覆盖像素 \( (x, y) \) 的滤波器所重叠的相邻像素值的平方和。未归一化的平方盒式滤波器在计算局部图像统计数据(例如像素邻域周围的局部方差和标准差)时非常有用。
        参数
        src - 输入图像
        dst - 与 src 大小和类型相同的输出图像
        ddepth - 输出图像深度(-1 表示使用 src.depth())
        ksize - 核大小
        anchor - 核锚点。默认值 Point(-1, -1) 表示锚点在核的中心。
        normalize - 标志,指定核是否按其面积进行归一化。
        borderType - 用于外推图像外部像素的边界模式,参见 #BorderTypes。不支持 #BORDER_WRAP。参见:boxFilter
      • sqrBoxFilter

        public static void sqrBoxFilter​(Mat src,
                                        Mat dst,
                                        int ddepth,
                                        Size ksize,
                                        Point anchor,
                                        boolean normalize)
        计算与滤波器重叠的像素值的归一化平方和。对于源图像中的每个像素 \( (x, y) \),此函数计算覆盖像素 \( (x, y) \) 的滤波器所重叠的相邻像素值的平方和。未归一化的平方盒式滤波器在计算局部图像统计数据(例如像素邻域周围的局部方差和标准差)时非常有用。
        参数
        src - 输入图像
        dst - 与 src 大小和类型相同的输出图像
        ddepth - 输出图像深度(-1 表示使用 src.depth())
        ksize - 核大小
        anchor - 核锚点。默认值 Point(-1, -1) 表示锚点在核的中心。
        normalize - 标志,指定核是否按其面积进行归一化。参见:boxFilter
      • sqrBoxFilter

        public static void sqrBoxFilter​(Mat src,
                                        Mat dst,
                                        int ddepth,
                                        Size ksize,
                                        Point anchor)
        计算与滤波器重叠的像素值的归一化平方和。对于源图像中的每个像素 \( (x, y) \),此函数计算覆盖像素 \( (x, y) \) 的滤波器所重叠的相邻像素值的平方和。未归一化的平方盒式滤波器在计算局部图像统计数据(例如像素邻域周围的局部方差和标准差)时非常有用。
        参数
        src - 输入图像
        dst - 与 src 大小和类型相同的输出图像
        ddepth - 输出图像深度(-1 表示使用 src.depth())
        ksize - 核大小
        anchor - 核锚点。默认值 Point(-1, -1) 表示锚点在核的中心。参见:boxFilter
      • sqrBoxFilter

        public static void sqrBoxFilter​(Mat src,
                                        Mat dst,
                                        int ddepth,
                                        Size ksize)
        计算与滤波器重叠的像素值的归一化平方和。对于源图像中的每个像素 \( (x, y) \),此函数计算覆盖像素 \( (x, y) \) 的滤波器所重叠的相邻像素值的平方和。未归一化的平方盒式滤波器在计算局部图像统计数据(例如像素邻域周围的局部方差和标准差)时非常有用。
        参数
        src - 输入图像
        dst - 与 src 大小和类型相同的输出图像
        ddepth - 输出图像深度(-1 表示使用 src.depth())
        ksize - 核大小中心。参见:boxFilter
      • blur

        public static void blur​(Mat src,
                                Mat dst,
                                Size ksize,
                                Point anchor,
                                int borderType)
        使用归一化盒式滤波器模糊图像。此函数使用以下核平滑图像:\(\texttt{K} = \frac{1}{\texttt{ksize.width*ksize.height}} \begin{bmatrix} 1 & 1 & 1 & \cdots & 1 & 1 \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \hdotsfor{6} \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \end{bmatrix}\) 调用 blur(src, dst, ksize, anchor, borderType) 等同于 `boxFilter(src, dst, src.type(), ksize, anchor, true, borderType)`。
        参数
        src - 输入图像;它可以有任意数量的通道,这些通道独立处理,但深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F。
        dst - 与 src 大小和类型相同的输出图像。
        ksize - 模糊核大小。
        anchor - 锚点;默认值 Point(-1,-1) 表示锚点在核的中心。
        borderType - 用于外推图像外部像素的边界模式,参见 #BorderTypes。不支持 #BORDER_WRAP。参见:boxFilter, bilateralFilter, GaussianBlur, medianBlur
      • blur

        public static void blur​(Mat src,
                                Mat dst,
                                Size ksize,
                                Point anchor)
        使用归一化盒式滤波器模糊图像。此函数使用以下核平滑图像:\(\texttt{K} = \frac{1}{\texttt{ksize.width*ksize.height}} \begin{bmatrix} 1 & 1 & 1 & \cdots & 1 & 1 \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \hdotsfor{6} \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \end{bmatrix}\) 调用 blur(src, dst, ksize, anchor, borderType) 等同于 `boxFilter(src, dst, src.type(), ksize, anchor, true, borderType)`。
        参数
        src - 输入图像;它可以有任意数量的通道,这些通道独立处理,但深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F。
        dst - 与 src 大小和类型相同的输出图像。
        ksize - 模糊核大小。
        anchor - 锚点;默认值 Point(-1,-1) 表示锚点在核的中心。参见:boxFilter, bilateralFilter, GaussianBlur, medianBlur
      • blur

        public static void blur​(Mat src,
                                Mat dst,
                                Size ksize)
        使用归一化盒式滤波器模糊图像。此函数使用以下核平滑图像:\(\texttt{K} = \frac{1}{\texttt{ksize.width*ksize.height}} \begin{bmatrix} 1 & 1 & 1 & \cdots & 1 & 1 \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \hdotsfor{6} \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \end{bmatrix}\) 调用 blur(src, dst, ksize, anchor, borderType) 等同于 `boxFilter(src, dst, src.type(), ksize, anchor, true, borderType)`。
        参数
        src - 输入图像;它可以有任意数量的通道,这些通道独立处理,但深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F。
        dst - 与 src 大小和类型相同的输出图像。
        ksize - 模糊核大小。中心。参见:boxFilter, bilateralFilter, GaussianBlur, medianBlur
      • stackBlur

        public static void stackBlur​(Mat src,
                                     Mat dst,
                                     Size ksize)
        使用堆栈模糊(stackBlur)模糊图像。此函数对图像应用堆栈模糊。堆栈模糊可以产生与高斯模糊类似的结果,并且时间消耗不会随着核大小的增加而增加。它在扫描图像时创建一种移动的颜色堆栈。因此,它只需在堆栈的右侧添加一个新颜色块并移除最左侧的颜色。堆栈最顶层剩余的颜色会根据它们位于堆栈的右侧还是左侧而增加或减少一个。唯一支持的 borderType 是 BORDER_REPLICATE。原始论文由 Mario Klingemann 提出,可在此处找到:https://underdestruction.com/2004/02/25/stackblur-2004。
        参数
        src - 输入图像。通道数可以是任意的,但深度应为 CV_8U、CV_16U、CV_16S 或 CV_32F 之一。
        dst - 与 src 大小和类型相同的输出图像。
        ksize - 堆栈模糊核大小。ksize.width 和 ksize.height 可以不同,但它们都必须为正且为奇数。
      • filter2D

        public static void filter2D​(Mat src,
                                    Mat dst,
                                    int ddepth,
                                    Mat kernel,
                                    Point anchor,
                                    double delta,
                                    int borderType)
        使用核对图像进行卷积。此函数对图像应用任意线性滤波器。支持原地操作。当孔径部分位于图像外部时,此函数根据指定的边界模式对离群像素值进行插值。此函数实际计算的是相关,而不是卷积:\(\texttt{dst} (x,y) = \sum _{ \substack{0\leq x' < \texttt{kernel.cols}\\{0\leq y' < \texttt{kernel.rows}}}} \texttt{kernel} (x',y')* \texttt{src} (x+x'- \texttt{anchor.x} ,y+y'- \texttt{anchor.y} )\) 也就是说,核不会围绕锚点镜像。如果需要真正的卷积,请使用 #flip 翻转核,并将新锚点设置为 `(kernel.cols - anchor.x - 1, kernel.rows - anchor.y - 1)`。当核足够大(约 11 x 11 或更大)时,此函数使用基于 DFT 的算法;对于小核,则使用直接算法。
        参数
        src - 输入图像。
        dst - 与 src 大小和通道数相同的输出图像。
        ddepth - 目标图像的所需深度,参见 REF: filter_depths “组合”
        kernel - 卷积核(或相关核),一个单通道浮点矩阵;如果想对不同通道应用不同的核,请使用 split 将图像分割成单独的颜色平面并分别处理它们。
        anchor - 核的锚点,表示滤波点在核内的相对位置;锚点应位于核内;默认值 (-1,-1) 表示锚点在核的中心。
        delta - 在将滤波后的像素存储到 dst 之前添加的可选值。
        borderType - 像素外推法,参见 #BorderTypes。不支持 #BORDER_WRAP。参见:sepFilter2D, dft, matchTemplate
      • filter2D

        public static void filter2D​(Mat src,
                                    Mat dst,
                                    int ddepth,
                                    Mat kernel,
                                    Point anchor,
                                    double delta)
        使用核对图像进行卷积。此函数对图像应用任意线性滤波器。支持原地操作。当孔径部分位于图像外部时,此函数根据指定的边界模式对离群像素值进行插值。此函数实际计算的是相关,而不是卷积:\(\texttt{dst} (x,y) = \sum _{ \substack{0\leq x' < \texttt{kernel.cols}\\{0\leq y' < \texttt{kernel.rows}}}} \texttt{kernel} (x',y')* \texttt{src} (x+x'- \texttt{anchor.x} ,y+y'- \texttt{anchor.y} )\) 也就是说,核不会围绕锚点镜像。如果需要真正的卷积,请使用 #flip 翻转核,并将新锚点设置为 `(kernel.cols - anchor.x - 1, kernel.rows - anchor.y - 1)`。当核足够大(约 11 x 11 或更大)时,此函数使用基于 DFT 的算法;对于小核,则使用直接算法。
        参数
        src - 输入图像。
        dst - 与 src 大小和通道数相同的输出图像。
        ddepth - 目标图像的所需深度,参见 REF: filter_depths “组合”
        kernel - 卷积核(或相关核),一个单通道浮点矩阵;如果想对不同通道应用不同的核,请使用 split 将图像分割成单独的颜色平面并分别处理它们。
        anchor - 核的锚点,表示滤波点在核内的相对位置;锚点应位于核内;默认值 (-1,-1) 表示锚点在核的中心。
        delta - 在将滤波后的像素存储到 dst 之前添加的可选值。参见:sepFilter2D, dft, matchTemplate
      • filter2D

        public static void filter2D​(Mat src,
                                    Mat dst,
                                    int ddepth,
                                    Mat kernel,
                                    Point anchor)
        使用核对图像进行卷积。此函数对图像应用任意线性滤波器。支持原地操作。当孔径部分位于图像外部时,此函数根据指定的边界模式对离群像素值进行插值。此函数实际计算的是相关,而不是卷积:\(\texttt{dst} (x,y) = \sum _{ \substack{0\leq x' < \texttt{kernel.cols}\\{0\leq y' < \texttt{kernel.rows}}}} \texttt{kernel} (x',y')* \texttt{src} (x+x'- \texttt{anchor.x} ,y+y'- \texttt{anchor.y} )\) 也就是说,核不会围绕锚点镜像。如果需要真正的卷积,请使用 #flip 翻转核,并将新锚点设置为 `(kernel.cols - anchor.x - 1, kernel.rows - anchor.y - 1)`。当核足够大(约 11 x 11 或更大)时,此函数使用基于 DFT 的算法;对于小核,则使用直接算法。
        参数
        src - 输入图像。
        dst - 与 src 大小和通道数相同的输出图像。
        ddepth - 目标图像的所需深度,参见 REF: filter_depths “组合”
        kernel - 卷积核(或相关核),一个单通道浮点矩阵;如果想对不同通道应用不同的核,请使用 split 将图像分割成单独的颜色平面并分别处理它们。
        anchor - 核的锚点,表示滤波点在核内的相对位置;锚点应位于核内;默认值 (-1,-1) 表示锚点在核的中心。参见:sepFilter2D, dft, matchTemplate
      • filter2D

        public static void filter2D​(Mat src,
                                    Mat dst,
                                    int ddepth,
                                    Mat kernel)
        使用核对图像进行卷积。此函数对图像应用任意线性滤波器。支持原地操作。当孔径部分位于图像外部时,此函数根据指定的边界模式对离群像素值进行插值。此函数实际计算的是相关,而不是卷积:\(\texttt{dst} (x,y) = \sum _{ \substack{0\leq x' < \texttt{kernel.cols}\\{0\leq y' < \texttt{kernel.rows}}}} \texttt{kernel} (x',y')* \texttt{src} (x+x'- \texttt{anchor.x} ,y+y'- \texttt{anchor.y} )\) 也就是说,核不会围绕锚点镜像。如果需要真正的卷积,请使用 #flip 翻转核,并将新锚点设置为 `(kernel.cols - anchor.x - 1, kernel.rows - anchor.y - 1)`。当核足够大(约 11 x 11 或更大)时,此函数使用基于 DFT 的算法;对于小核,则使用直接算法。
        参数
        src - 输入图像。
        dst - 与 src 大小和通道数相同的输出图像。
        ddepth - 目标图像的所需深度,参见 REF: filter_depths “组合”
        kernel - 卷积核(或相关核),一个单通道浮点矩阵;如果想对不同通道应用不同的核,请使用 split 将图像分割成单独的颜色平面并分别处理它们。核;锚点应位于核内;默认值 (-1,-1) 表示锚点在核的中心。参见:sepFilter2D, dft, matchTemplate
      • sepFilter2D

        public static void sepFilter2D​(Mat src,
                                       Mat dst,
                                       int ddepth,
                                       Mat kernelX,
                                       Mat kernelY,
                                       Point anchor,
                                       double delta,
                                       int borderType)
        应用一个可分离的线性滤波器到图像。此函数对图像应用一个可分离的线性滤波器。也就是说,首先,src 的每一行用一维核 kernelX 进行滤波。然后,结果的每一列用一维核 kernelY 进行滤波。最终结果经过 delta 偏移后存储在 dst 中。
        参数
        src - 源图像。
        dst - 目标图像,与 src 具有相同的大小和通道数。
        ddepth - 目标图像深度,请参阅 REF: filter_depths "combinations"
        kernelX - 用于滤波每一行的系数。
        kernelY - 用于滤波每一列的系数。
        anchor - 核内的锚点位置。默认值 \((-1,-1)\) 表示锚点位于核的中心。
        delta - 在存储滤波结果之前添加到结果中的值。
        borderType - 像素外推方法,请参阅 #BorderTypes。不支持 #BORDER_WRAP。SEE: filter2D, Sobel, GaussianBlur, boxFilter, blur
      • sepFilter2D

        public static void sepFilter2D​(Mat src,
                                       Mat dst,
                                       int ddepth,
                                       Mat kernelX,
                                       Mat kernelY,
                                       Point anchor,
                                       double delta)
        应用一个可分离的线性滤波器到图像。此函数对图像应用一个可分离的线性滤波器。也就是说,首先,src 的每一行用一维核 kernelX 进行滤波。然后,结果的每一列用一维核 kernelY 进行滤波。最终结果经过 delta 偏移后存储在 dst 中。
        参数
        src - 源图像。
        dst - 目标图像,与 src 具有相同的大小和通道数。
        ddepth - 目标图像深度,请参阅 REF: filter_depths "combinations"
        kernelX - 用于滤波每一行的系数。
        kernelY - 用于滤波每一列的系数。
        anchor - 核内的锚点位置。默认值 \((-1,-1)\) 表示锚点位于核的中心。
        delta - 在存储滤波结果之前添加到结果中的值。SEE: filter2D, Sobel, GaussianBlur, boxFilter, blur
      • sepFilter2D

        public static void sepFilter2D​(Mat src,
                                       Mat dst,
                                       int ddepth,
                                       Mat kernelX,
                                       Mat kernelY,
                                       Point anchor)
        应用一个可分离的线性滤波器到图像。此函数对图像应用一个可分离的线性滤波器。也就是说,首先,src 的每一行用一维核 kernelX 进行滤波。然后,结果的每一列用一维核 kernelY 进行滤波。最终结果经过 delta 偏移后存储在 dst 中。
        参数
        src - 源图像。
        dst - 目标图像,与 src 具有相同的大小和通道数。
        ddepth - 目标图像深度,请参阅 REF: filter_depths "combinations"
        kernelX - 用于滤波每一行的系数。
        kernelY - 用于滤波每一列的系数。
        anchor - 核内的锚点位置。默认值 \((-1,-1)\) 表示锚点位于核的中心。SEE: filter2D, Sobel, GaussianBlur, boxFilter, blur
      • sepFilter2D

        public static void sepFilter2D​(Mat src,
                                       Mat dst,
                                       int ddepth,
                                       Mat kernelX,
                                       Mat kernelY)
        应用一个可分离的线性滤波器到图像。此函数对图像应用一个可分离的线性滤波器。也就是说,首先,src 的每一行用一维核 kernelX 进行滤波。然后,结果的每一列用一维核 kernelY 进行滤波。最终结果经过 delta 偏移后存储在 dst 中。
        参数
        src - 源图像。
        dst - 目标图像,与 src 具有相同的大小和通道数。
        ddepth - 目标图像深度,请参阅 REF: filter_depths "combinations"
        kernelX - 用于滤波每一行的系数。
        kernelY - 用于滤波每一列的系数。位于核的中心。SEE: filter2D, Sobel, GaussianBlur, boxFilter, blur
      • Sobel

        public static void Sobel​(Mat src,
                                 Mat dst,
                                 int ddepth,
                                 int dx,
                                 int dy,
                                 int ksize,
                                 double scale,
                                 double delta,
                                 int borderType)
        使用扩展 Sobel 算子计算图像的一阶、二阶、三阶或混合导数。除一种情况外,所有情况下都使用 \(\texttt{ksize} \times \texttt{ksize}\) 可分离核来计算导数。当 \(\texttt{ksize = 1}\) 时,使用 \(3 \times 1\) 或 \(1 \times 3\) 核(即不进行高斯平滑)。ksize = 1 只能用于一阶或二阶 x 或 y 导数。还有一个特殊值 ksize = #FILTER_SCHARR (-1),它对应于 \(3\times3\) Scharr 滤波器,可能比 \(3\times3\) Sobel 提供更准确的结果。对于 x 导数,Scharr 窗口为 \(\vecthreethree{-3}{0}{3}{-10}{0}{10}{-3}{0}{3}\),对于 y 导数,则为转置。此函数通过将图像与适当的核进行卷积来计算图像导数:\(\texttt{dst} = \frac{\partial^{xorder+yorder} \texttt{src}}{\partial x^{xorder} \partial y^{yorder}}\)。Sobel 算子结合了高斯平滑和微分,因此结果或多或少地能抵抗噪声。通常,调用此函数时会使用 (xorder = 1, yorder = 0, ksize = 3) 或 (xorder = 0, yorder = 1, ksize = 3) 来计算图像的一阶 x 或 y 导数。第一种情况对应于以下核:\(\vecthreethree{-1}{0}{1}{-2}{0}{2}{-1}{0}{1}\)。第二种情况对应于以下核:\(\vecthreethree{-1}{-2}{-1}{0}{0}{0}{1}{2}{1}\)
        参数
        src - 输入图像。
        dst - 输出图像,与 src 具有相同的大小和通道数。
        ddepth - 输出图像深度,请参阅 REF: filter_depths "combinations";对于 8 位输入图像,这将导致导数被截断。
        dx - x 方向导数的阶数。
        dy - y 方向导数的阶数。
        ksize - 扩展 Sobel 核的大小;必须是 1、3、5 或 7。
        scale - 计算导数值的可选比例因子;默认情况下不应用缩放(详见 #getDerivKernels)。
        delta - 在将结果存储到 dst 之前添加到结果中的可选 delta 值。
        borderType - 像素外推方法,请参阅 #BorderTypes。不支持 #BORDER_WRAP。SEE: Scharr, Laplacian, sepFilter2D, filter2D, GaussianBlur, cartToPolar
      • Sobel

        public static void Sobel​(Mat src,
                                 Mat dst,
                                 int ddepth,
                                 int dx,
                                 int dy,
                                 int ksize,
                                 double scale,
                                 double delta)
        使用扩展 Sobel 算子计算图像的一阶、二阶、三阶或混合导数。除一种情况外,所有情况下都使用 \(\texttt{ksize} \times \texttt{ksize}\) 可分离核来计算导数。当 \(\texttt{ksize = 1}\) 时,使用 \(3 \times 1\) 或 \(1 \times 3\) 核(即不进行高斯平滑)。ksize = 1 只能用于一阶或二阶 x 或 y 导数。还有一个特殊值 ksize = #FILTER_SCHARR (-1),它对应于 \(3\times3\) Scharr 滤波器,可能比 \(3\times3\) Sobel 提供更准确的结果。对于 x 导数,Scharr 窗口为 \(\vecthreethree{-3}{0}{3}{-10}{0}{10}{-3}{0}{3}\),对于 y 导数,则为转置。此函数通过将图像与适当的核进行卷积来计算图像导数:\(\texttt{dst} = \frac{\partial^{xorder+yorder} \texttt{src}}{\partial x^{xorder} \partial y^{yorder}}\)。Sobel 算子结合了高斯平滑和微分,因此结果或多或少地能抵抗噪声。通常,调用此函数时会使用 (xorder = 1, yorder = 0, ksize = 3) 或 (xorder = 0, yorder = 1, ksize = 3) 来计算图像的一阶 x 或 y 导数。第一种情况对应于以下核:\(\vecthreethree{-1}{0}{1}{-2}{0}{2}{-1}{0}{1}\)。第二种情况对应于以下核:\(\vecthreethree{-1}{-2}{-1}{0}{0}{0}{1}{2}{1}\)
        参数
        src - 输入图像。
        dst - 输出图像,与 src 具有相同的大小和通道数。
        ddepth - 输出图像深度,请参阅 REF: filter_depths "combinations";对于 8 位输入图像,这将导致导数被截断。
        dx - x 方向导数的阶数。
        dy - y 方向导数的阶数。
        ksize - 扩展 Sobel 核的大小;必须是 1、3、5 或 7。
        scale - 计算导数值的可选比例因子;默认情况下不应用缩放(详见 #getDerivKernels)。
        delta - 在将结果存储到 dst 之前添加到结果中的可选 delta 值。SEE: Scharr, Laplacian, sepFilter2D, filter2D, GaussianBlur, cartToPolar
      • Sobel

        public static void Sobel​(Mat src,
                                 Mat dst,
                                 int ddepth,
                                 int dx,
                                 int dy,
                                 int ksize,
                                 double scale)
        使用扩展 Sobel 算子计算图像的一阶、二阶、三阶或混合导数。除一种情况外,所有情况下都使用 \(\texttt{ksize} \times \texttt{ksize}\) 可分离核来计算导数。当 \(\texttt{ksize = 1}\) 时,使用 \(3 \times 1\) 或 \(1 \times 3\) 核(即不进行高斯平滑)。ksize = 1 只能用于一阶或二阶 x 或 y 导数。还有一个特殊值 ksize = #FILTER_SCHARR (-1),它对应于 \(3\times3\) Scharr 滤波器,可能比 \(3\times3\) Sobel 提供更准确的结果。对于 x 导数,Scharr 窗口为 \(\vecthreethree{-3}{0}{3}{-10}{0}{10}{-3}{0}{3}\),对于 y 导数,则为转置。此函数通过将图像与适当的核进行卷积来计算图像导数:\(\texttt{dst} = \frac{\partial^{xorder+yorder} \texttt{src}}{\partial x^{xorder} \partial y^{yorder}}\)。Sobel 算子结合了高斯平滑和微分,因此结果或多或少地能抵抗噪声。通常,调用此函数时会使用 (xorder = 1, yorder = 0, ksize = 3) 或 (xorder = 0, yorder = 1, ksize = 3) 来计算图像的一阶 x 或 y 导数。第一种情况对应于以下核:\(\vecthreethree{-1}{0}{1}{-2}{0}{2}{-1}{0}{1}\)。第二种情况对应于以下核:\(\vecthreethree{-1}{-2}{-1}{0}{0}{0}{1}{2}{1}\)
        参数
        src - 输入图像。
        dst - 输出图像,与 src 具有相同的大小和通道数。
        ddepth - 输出图像深度,请参阅 REF: filter_depths "combinations";对于 8 位输入图像,这将导致导数被截断。
        dx - x 方向导数的阶数。
        dy - y 方向导数的阶数。
        ksize - 扩展 Sobel 核的大小;必须是 1、3、5 或 7。
        scale - 计算导数值的可选比例因子;默认情况下不应用缩放(详见 #getDerivKernels)。SEE: Scharr, Laplacian, sepFilter2D, filter2D, GaussianBlur, cartToPolar
      • Sobel

        public static void Sobel​(Mat src,
                                 Mat dst,
                                 int ddepth,
                                 int dx,
                                 int dy,
                                 int ksize)
        使用扩展 Sobel 算子计算图像的一阶、二阶、三阶或混合导数。除一种情况外,所有情况下都使用 \(\texttt{ksize} \times \texttt{ksize}\) 可分离核来计算导数。当 \(\texttt{ksize = 1}\) 时,使用 \(3 \times 1\) 或 \(1 \times 3\) 核(即不进行高斯平滑)。ksize = 1 只能用于一阶或二阶 x 或 y 导数。还有一个特殊值 ksize = #FILTER_SCHARR (-1),它对应于 \(3\times3\) Scharr 滤波器,可能比 \(3\times3\) Sobel 提供更准确的结果。对于 x 导数,Scharr 窗口为 \(\vecthreethree{-3}{0}{3}{-10}{0}{10}{-3}{0}{3}\),对于 y 导数,则为转置。此函数通过将图像与适当的核进行卷积来计算图像导数:\(\texttt{dst} = \frac{\partial^{xorder+yorder} \texttt{src}}{\partial x^{xorder} \partial y^{yorder}}\)。Sobel 算子结合了高斯平滑和微分,因此结果或多或少地能抵抗噪声。通常,调用此函数时会使用 (xorder = 1, yorder = 0, ksize = 3) 或 (xorder = 0, yorder = 1, ksize = 3) 来计算图像的一阶 x 或 y 导数。第一种情况对应于以下核:\(\vecthreethree{-1}{0}{1}{-2}{0}{2}{-1}{0}{1}\)。第二种情况对应于以下核:\(\vecthreethree{-1}{-2}{-1}{0}{0}{0}{1}{2}{1}\)
        参数
        src - 输入图像。
        dst - 输出图像,与 src 具有相同的大小和通道数。
        ddepth - 输出图像深度,请参阅 REF: filter_depths "combinations";对于 8 位输入图像,这将导致导数被截断。
        dx - x 方向导数的阶数。
        dy - y 方向导数的阶数。
        ksize - 扩展 Sobel 核的大小;必须是 1、3、5 或 7。已应用(详见 #getDerivKernels)。SEE: Scharr, Laplacian, sepFilter2D, filter2D, GaussianBlur, cartToPolar
      • Sobel

        public static void Sobel​(Mat src,
                                 Mat dst,
                                 int ddepth,
                                 int dx,
                                 int dy)
        使用扩展 Sobel 算子计算图像的一阶、二阶、三阶或混合导数。除一种情况外,所有情况下都使用 \(\texttt{ksize} \times \texttt{ksize}\) 可分离核来计算导数。当 \(\texttt{ksize = 1}\) 时,使用 \(3 \times 1\) 或 \(1 \times 3\) 核(即不进行高斯平滑)。ksize = 1 只能用于一阶或二阶 x 或 y 导数。还有一个特殊值 ksize = #FILTER_SCHARR (-1),它对应于 \(3\times3\) Scharr 滤波器,可能比 \(3\times3\) Sobel 提供更准确的结果。对于 x 导数,Scharr 窗口为 \(\vecthreethree{-3}{0}{3}{-10}{0}{10}{-3}{0}{3}\),对于 y 导数,则为转置。此函数通过将图像与适当的核进行卷积来计算图像导数:\(\texttt{dst} = \frac{\partial^{xorder+yorder} \texttt{src}}{\partial x^{xorder} \partial y^{yorder}}\)。Sobel 算子结合了高斯平滑和微分,因此结果或多或少地能抵抗噪声。通常,调用此函数时会使用 (xorder = 1, yorder = 0, ksize = 3) 或 (xorder = 0, yorder = 1, ksize = 3) 来计算图像的一阶 x 或 y 导数。第一种情况对应于以下核:\(\vecthreethree{-1}{0}{1}{-2}{0}{2}{-1}{0}{1}\)。第二种情况对应于以下核:\(\vecthreethree{-1}{-2}{-1}{0}{0}{0}{1}{2}{1}\)
        参数
        src - 输入图像。
        dst - 输出图像,与 src 具有相同的大小和通道数。
        ddepth - 输出图像深度,请参阅 REF: filter_depths "combinations";对于 8 位输入图像,这将导致导数被截断。
        dx - x 方向导数的阶数。
        dy - y 方向导数的阶数。已应用(详见 #getDerivKernels)。SEE: Scharr, Laplacian, sepFilter2D, filter2D, GaussianBlur, cartToPolar
      • spatialGradient

        public static void spatialGradient​(Mat src,
                                           Mat dx,
                                           Mat dy,
                                           int ksize,
                                           int borderType)
        使用Sobel算子计算图像在x和y方向的一阶导数。等同于调用: Sobel( src, dx, CV_16SC1, 1, 0, 3 ); Sobel( src, dy, CV_16SC1, 0, 1, 3 );
        参数
        src - 输入图像。
        dx - x 方向一阶导数的输出图像。
        dy - y 方向一阶导数的输出图像。
        ksize - Sobel 核的大小。必须是 3。
        borderType - 像素外推方法,请参阅 #BorderTypes。仅支持 #BORDER_DEFAULT=#BORDER_REFLECT_101 和 #BORDER_REPLICATE。SEE: Sobel
      • spatialGradient

        public static void spatialGradient​(Mat src,
                                           Mat dx,
                                           Mat dy,
                                           int ksize)
        使用Sobel算子计算图像在x和y方向的一阶导数。等同于调用: Sobel( src, dx, CV_16SC1, 1, 0, 3 ); Sobel( src, dy, CV_16SC1, 0, 1, 3 );
        参数
        src - 输入图像。
        dx - x 方向一阶导数的输出图像。
        dy - y 方向一阶导数的输出图像。
        ksize - Sobel 核的大小。必须是 3。仅支持 #BORDER_DEFAULT=#BORDER_REFLECT_101 和 #BORDER_REPLICATE。SEE: Sobel
      • spatialGradient

        public static void spatialGradient​(Mat src,
                                           Mat dx,
                                           Mat dy)
        使用Sobel算子计算图像在x和y方向的一阶导数。等同于调用: Sobel( src, dx, CV_16SC1, 1, 0, 3 ); Sobel( src, dy, CV_16SC1, 0, 1, 3 );
        参数
        src - 输入图像。
        dx - x 方向一阶导数的输出图像。
        dy - y 方向一阶导数的输出图像。仅支持 #BORDER_DEFAULT=#BORDER_REFLECT_101 和 #BORDER_REPLICATE。SEE: Sobel
      • Scharr

        public static void Scharr​(Mat src,
                                  Mat dst,
                                  int ddepth,
                                  int dx,
                                  int dy,
                                  double scale,
                                  double delta,
                                  int borderType)
        使用 Scharr 算子计算图像的一阶 x 或 y 导数。此函数使用 Scharr 算子计算图像的一阶 x 或 y 空间导数。调用 \(\texttt{Scharr(src, dst, ddepth, dx, dy, scale, delta, borderType)}\) 等效于 \(\texttt{Sobel(src, dst, ddepth, dx, dy, FILTER_SCHARR, scale, delta, borderType)} .\)
        参数
        src - 输入图像。
        dst - 与 src 大小和通道数相同的输出图像。
        ddepth - 输出图像深度,请参阅 REF: filter_depths "combinations"
        dx - x 方向导数的阶数。
        dy - y 方向导数的阶数。
        scale - 计算导数值的可选比例因子;默认情况下不应用缩放(详见 #getDerivKernels)。
        delta - 在将结果存储到 dst 之前添加到结果中的可选 delta 值。
        borderType - 像素外推方法,请参阅 #BorderTypes。不支持 #BORDER_WRAP。SEE: cartToPolar
      • Scharr

        public static void Scharr​(Mat src,
                                  Mat dst,
                                  int ddepth,
                                  int dx,
                                  int dy,
                                  double scale,
                                  double delta)
        使用 Scharr 算子计算图像的一阶 x 或 y 导数。此函数使用 Scharr 算子计算图像的一阶 x 或 y 空间导数。调用 \(\texttt{Scharr(src, dst, ddepth, dx, dy, scale, delta, borderType)}\) 等效于 \(\texttt{Sobel(src, dst, ddepth, dx, dy, FILTER_SCHARR, scale, delta, borderType)} .\)
        参数
        src - 输入图像。
        dst - 与 src 大小和通道数相同的输出图像。
        ddepth - 输出图像深度,请参阅 REF: filter_depths "combinations"
        dx - x 方向导数的阶数。
        dy - y 方向导数的阶数。
        scale - 计算导数值的可选比例因子;默认情况下不应用缩放(详见 #getDerivKernels)。
        delta - 在将结果存储到 dst 之前添加到结果中的可选 delta 值。SEE: cartToPolar
      • Scharr

        public static void Scharr​(Mat src,
                                  Mat dst,
                                  int ddepth,
                                  int dx,
                                  int dy,
                                  double scale)
        使用 Scharr 算子计算图像的一阶 x 或 y 导数。此函数使用 Scharr 算子计算图像的一阶 x 或 y 空间导数。调用 \(\texttt{Scharr(src, dst, ddepth, dx, dy, scale, delta, borderType)}\) 等效于 \(\texttt{Sobel(src, dst, ddepth, dx, dy, FILTER_SCHARR, scale, delta, borderType)} .\)
        参数
        src - 输入图像。
        dst - 与 src 大小和通道数相同的输出图像。
        ddepth - 输出图像深度,请参阅 REF: filter_depths "combinations"
        dx - x 方向导数的阶数。
        dy - y 方向导数的阶数。
        scale - 计算导数值的可选比例因子;默认情况下不应用缩放(详见 #getDerivKernels)。SEE: cartToPolar
      • Scharr

        public static void Scharr​(Mat src,
                                  Mat dst,
                                  int ddepth,
                                  int dx,
                                  int dy)
        使用 Scharr 算子计算图像的一阶 x 或 y 导数。此函数使用 Scharr 算子计算图像的一阶 x 或 y 空间导数。调用 \(\texttt{Scharr(src, dst, ddepth, dx, dy, scale, delta, borderType)}\) 等效于 \(\texttt{Sobel(src, dst, ddepth, dx, dy, FILTER_SCHARR, scale, delta, borderType)} .\)
        参数
        src - 输入图像。
        dst - 与 src 大小和通道数相同的输出图像。
        ddepth - 输出图像深度,请参阅 REF: filter_depths "combinations"
        dx - x 方向导数的阶数。
        dy - y 方向导数的阶数。已应用(详见 #getDerivKernels)。SEE: cartToPolar
      • Laplacian

        public static void Laplacian​(Mat src,
                                     Mat dst,
                                     int ddepth,
                                     int ksize,
                                     double scale,
                                     double delta,
                                     int borderType)
        计算图像的拉普拉斯算子。此函数通过将使用 Sobel 算子计算的二阶 x 和 y 导数相加来计算源图像的拉普拉斯算子:\(\texttt{dst} = \Delta \texttt{src} = \frac{\partial^2 \texttt{src}}{\partial x^2} + \frac{\partial^2 \texttt{src}}{\partial y^2}\)。当 ksize > 1 时执行此操作。当 ksize == 1 时,拉普拉斯算子通过使用以下 \(3 \times 3\) 窗口对图像进行滤波来计算:\(\vecthreethree {0}{1}{0}{1}{-4}{1}{0}{1}{0}\)
        参数
        src - 源图像。
        dst - 目标图像,与 src 具有相同的大小和通道数。
        ddepth - 目标图像的所需深度,请参阅 REF: filter_depths "combinations"。
        ksize - 用于计算二阶导数滤波器的孔径大小。详见 #getDerivKernels。大小必须为正奇数。
        scale - 计算拉普拉斯值的可选比例因子。默认情况下不应用缩放。详见 #getDerivKernels。
        delta - 在将结果存储到 dst 之前添加到结果中的可选 delta 值。
        borderType - 像素外推方法,请参阅 #BorderTypes。不支持 #BORDER_WRAP。SEE: Sobel, Scharr
      • Laplacian

        public static void Laplacian​(Mat src,
                                     Mat dst,
                                     int ddepth,
                                     int ksize,
                                     double scale,
                                     double delta)
        计算图像的拉普拉斯算子。此函数通过将使用 Sobel 算子计算的二阶 x 和 y 导数相加来计算源图像的拉普拉斯算子:\(\texttt{dst} = \Delta \texttt{src} = \frac{\partial^2 \texttt{src}}{\partial x^2} + \frac{\partial^2 \texttt{src}}{\partial y^2}\)。当 ksize > 1 时执行此操作。当 ksize == 1 时,拉普拉斯算子通过使用以下 \(3 \times 3\) 窗口对图像进行滤波来计算:\(\vecthreethree {0}{1}{0}{1}{-4}{1}{0}{1}{0}\)
        参数
        src - 源图像。
        dst - 目标图像,与 src 具有相同的大小和通道数。
        ddepth - 目标图像的所需深度,请参阅 REF: filter_depths "combinations"。
        ksize - 用于计算二阶导数滤波器的孔径大小。详见 #getDerivKernels。大小必须为正奇数。
        scale - 计算拉普拉斯值的可选比例因子。默认情况下不应用缩放。详见 #getDerivKernels。
        delta - 在将结果存储到 dst 之前添加到结果中的可选 delta 值。SEE: Sobel, Scharr
      • Laplacian

        public static void Laplacian​(Mat src,
                                     Mat dst,
                                     int ddepth,
                                     int ksize,
                                     double scale)
        计算图像的拉普拉斯算子。此函数通过将使用 Sobel 算子计算的二阶 x 和 y 导数相加来计算源图像的拉普拉斯算子:\(\texttt{dst} = \Delta \texttt{src} = \frac{\partial^2 \texttt{src}}{\partial x^2} + \frac{\partial^2 \texttt{src}}{\partial y^2}\)。当 ksize > 1 时执行此操作。当 ksize == 1 时,拉普拉斯算子通过使用以下 \(3 \times 3\) 窗口对图像进行滤波来计算:\(\vecthreethree {0}{1}{0}{1}{-4}{1}{0}{1}{0}\)
        参数
        src - 源图像。
        dst - 目标图像,与 src 具有相同的大小和通道数。
        ddepth - 目标图像的所需深度,请参阅 REF: filter_depths "combinations"。
        ksize - 用于计算二阶导数滤波器的孔径大小。详见 #getDerivKernels。大小必须为正奇数。
        scale - 计算拉普拉斯值的可选比例因子。默认情况下不应用缩放。详见 #getDerivKernels。SEE: Sobel, Scharr
      • Laplacian

        public static void Laplacian​(Mat src,
                                     Mat dst,
                                     int ddepth,
                                     int ksize)
        计算图像的拉普拉斯算子。此函数通过将使用 Sobel 算子计算的二阶 x 和 y 导数相加来计算源图像的拉普拉斯算子:\(\texttt{dst} = \Delta \texttt{src} = \frac{\partial^2 \texttt{src}}{\partial x^2} + \frac{\partial^2 \texttt{src}}{\partial y^2}\)。当 ksize > 1 时执行此操作。当 ksize == 1 时,拉普拉斯算子通过使用以下 \(3 \times 3\) 窗口对图像进行滤波来计算:\(\vecthreethree {0}{1}{0}{1}{-4}{1}{0}{1}{0}\)
        参数
        src - 源图像。
        dst - 目标图像,与 src 具有相同的大小和通道数。
        ddepth - 目标图像的所需深度,请参阅 REF: filter_depths "combinations"。
        ksize - 用于计算二阶导数滤波器的孔径大小。详见 #getDerivKernels。大小必须为正奇数。已应用。详见 #getDerivKernels。SEE: Sobel, Scharr
      • Laplacian

        public static void Laplacian​(Mat src,
                                     Mat dst,
                                     int ddepth)
        计算图像的拉普拉斯算子。此函数通过将使用 Sobel 算子计算的二阶 x 和 y 导数相加来计算源图像的拉普拉斯算子:\(\texttt{dst} = \Delta \texttt{src} = \frac{\partial^2 \texttt{src}}{\partial x^2} + \frac{\partial^2 \texttt{src}}{\partial y^2}\)。当 ksize > 1 时执行此操作。当 ksize == 1 时,拉普拉斯算子通过使用以下 \(3 \times 3\) 窗口对图像进行滤波来计算:\(\vecthreethree {0}{1}{0}{1}{-4}{1}{0}{1}{0}\)
        参数
        src - 源图像。
        dst - 目标图像,与 src 具有相同的大小和通道数。
        ddepth - 目标图像的所需深度,请参阅 REF: filter_depths "combinations"。细节。大小必须为正奇数。已应用。详见 #getDerivKernels。SEE: Sobel, Scharr
      • Canny

        public static void Canny​(Mat image,
                                 Mat edges,
                                 double threshold1,
                                 double threshold2,
                                 int apertureSize,
                                 boolean L2gradient)
        使用 Canny 算法 CITE: Canny86 在图像中查找边缘。此函数使用 Canny 算法在输入图像中查找边缘,并在输出映射边缘中标记它们。threshold1 和 threshold2 之间的较小值用于边缘连接。较大值用于查找强边缘的初始段。详见 <https://en.wikipedia.org/wiki/Canny_edge_detector>
        参数
        image - 8 位输入图像。
        edges - 输出边缘图;单通道 8 位图像,与 image 大小相同。
        threshold1 - 滞后过程的第一个阈值。
        threshold2 - 滞后过程的第二个阈值。
        apertureSize - Sobel 算子的孔径大小。
        L2gradient - 一个标志,指示是否应使用更准确的 \(L_2\) 范数 \(=\sqrt{(dI/dx)^2 + (dI/dy)^2}\) 来计算图像梯度幅值(L2gradient=true),或者默认的 \(L_1\) 范数 \(=|dI/dx|+|dI/dy|\) 是否足够(L2gradient=false)。
      • Canny

        public static void Canny​(Mat image,
                                 Mat edges,
                                 double threshold1,
                                 double threshold2,
                                 int apertureSize)
        使用 Canny 算法 CITE: Canny86 在图像中查找边缘。此函数使用 Canny 算法在输入图像中查找边缘,并在输出映射边缘中标记它们。threshold1 和 threshold2 之间的较小值用于边缘连接。较大值用于查找强边缘的初始段。详见 <https://en.wikipedia.org/wiki/Canny_edge_detector>
        参数
        image - 8 位输入图像。
        edges - 输出边缘图;单通道 8 位图像,与 image 大小相同。
        threshold1 - 滞后过程的第一个阈值。
        threshold2 - 滞后过程的第二个阈值。
        apertureSize - Sobel 算子的孔径大小。应使用 \(=\sqrt{(dI/dx)^2 + (dI/dy)^2}\) 来计算图像梯度幅值(L2gradient=true),或者默认的 \(L_1\) 范数 \(=|dI/dx|+|dI/dy|\) 是否足够(L2gradient=false)。
      • Canny

        public static void Canny​(Mat image,
                                 Mat edges,
                                 double threshold1,
                                 double threshold2)
        使用 Canny 算法 CITE: Canny86 在图像中查找边缘。此函数使用 Canny 算法在输入图像中查找边缘,并在输出映射边缘中标记它们。threshold1 和 threshold2 之间的较小值用于边缘连接。较大值用于查找强边缘的初始段。详见 <https://en.wikipedia.org/wiki/Canny_edge_detector>
        参数
        image - 8 位输入图像。
        edges - 输出边缘图;单通道 8 位图像,与 image 大小相同。
        threshold1 - 滞后过程的第一个阈值。
        threshold2 - 滞后过程的第二个阈值。应使用 \(=\sqrt{(dI/dx)^2 + (dI/dy)^2}\) 来计算图像梯度幅值(L2gradient=true),或者默认的 \(L_1\) 范数 \(=|dI/dx|+|dI/dy|\) 是否足够(L2gradient=false)。
      • Canny

        public static void Canny​(Mat dx,
                                 Mat dy,
                                 Mat edges,
                                 double threshold1,
                                 double threshold2,
                                 boolean L2gradient)
        \overload 使用自定义图像梯度,在图像中查找边缘的 Canny 算法重载。
        参数
        dx - 输入图像的 16 位 x 导数(CV_16SC1 或 CV_16SC3)。
        dy - 输入图像的 16 位 y 导数(与 dx 类型相同)。
        edges - 输出边缘图;单通道 8 位图像,与 image 大小相同。
        threshold1 - 滞后过程的第一个阈值。
        threshold2 - 滞后过程的第二个阈值。
        L2gradient - 一个标志,指示是否应使用更准确的 \(L_2\) 范数 \(=\sqrt{(dI/dx)^2 + (dI/dy)^2}\) 来计算图像梯度幅值(L2gradient=true),或者默认的 \(L_1\) 范数 \(=|dI/dx|+|dI/dy|\) 是否足够(L2gradient=false)。
      • Canny

        public static void Canny​(Mat dx,
                                 Mat dy,
                                 Mat edges,
                                 double threshold1,
                                 double threshold2)
        \overload 使用自定义图像梯度,在图像中查找边缘的 Canny 算法重载。
        参数
        dx - 输入图像的 16 位 x 导数(CV_16SC1 或 CV_16SC3)。
        dy - 输入图像的 16 位 y 导数(与 dx 类型相同)。
        edges - 输出边缘图;单通道 8 位图像,与 image 大小相同。
        threshold1 - 滞后过程的第一个阈值。
        threshold2 - 滞后过程的第二个阈值。应使用 \(=\sqrt{(dI/dx)^2 + (dI/dy)^2}\) 来计算图像梯度幅值(L2gradient=true),或者默认的 \(L_1\) 范数 \(=|dI/dx|+|dI/dy|\) 是否足够(L2gradient=false)。
      • cornerMinEigenVal

        public static void cornerMinEigenVal​(Mat src,
                                             Mat dst,
                                             int blockSize,
                                             int ksize,
                                             int borderType)
        计算用于角点检测的梯度矩阵的最小特征值。此函数与 cornerEigenValsAndVecs 类似,但它只计算并存储导数协方差矩阵的最小特征值,即 cornerEigenValsAndVecs 描述中的公式 \(\min(\lambda_1, \lambda_2)\)。
        参数
        src - 输入单通道 8 位或浮点图像。
        dst - 存储最小特征值的图像。它的类型为 CV_32FC1,大小与 src 相同。
        blockSize - 邻域大小(详见 #cornerEigenValsAndVecs)。
        ksize - Sobel 算子的孔径参数。
        borderType - 像素外推方法。请参阅 #BorderTypes。不支持 #BORDER_WRAP。
      • cornerMinEigenVal

        public static void cornerMinEigenVal​(Mat src,
                                             Mat dst,
                                             int blockSize,
                                             int ksize)
        计算用于角点检测的梯度矩阵的最小特征值。此函数与 cornerEigenValsAndVecs 类似,但它只计算并存储导数协方差矩阵的最小特征值,即 cornerEigenValsAndVecs 描述中的公式 \(\min(\lambda_1, \lambda_2)\)。
        参数
        src - 输入单通道 8 位或浮点图像。
        dst - 存储最小特征值的图像。它的类型为 CV_32FC1,大小与 src 相同。
        blockSize - 邻域大小(详见 #cornerEigenValsAndVecs)。
        ksize - Sobel 算子的孔径参数。
      • cornerMinEigenVal

        public static void cornerMinEigenVal​(Mat src,
                                             Mat dst,
                                             int blockSize)
        计算用于角点检测的梯度矩阵的最小特征值。此函数与 cornerEigenValsAndVecs 类似,但它只计算并存储导数协方差矩阵的最小特征值,即 cornerEigenValsAndVecs 描述中的公式 \(\min(\lambda_1, \lambda_2)\)。
        参数
        src - 输入单通道 8 位或浮点图像。
        dst - 存储最小特征值的图像。它的类型为 CV_32FC1,大小与 src 相同。
        blockSize - 邻域大小(详见 #cornerEigenValsAndVecs)。
      • cornerHarris

        public static void cornerHarris​(Mat src,
                                        Mat dst,
                                        int blockSize,
                                        int ksize,
                                        double k,
                                        int borderType)
        Harris 角点检测器。此函数对图像运行 Harris 角点检测器。与 cornerMinEigenVal 和 cornerEigenValsAndVecs 类似,对于每个像素 \((x, y)\),它会在一个 \(\texttt{blockSize} \times \texttt{blockSize}\) 邻域上计算一个 \(2\times2\) 梯度协方差矩阵 \(M^{(x,y)}\)。然后,它计算以下特征:\(\texttt{dst} (x,y) = \mathrm{det} M^{(x,y)} - k \cdot \left ( \mathrm{tr} M^{(x,y)} \right )^2\)。图像中的角点可以作为此响应图的局部最大值被找到。
        参数
        src - 输入单通道 8 位或浮点图像。
        dst - 存储 Harris 检测器响应的图像。它的类型为 CV_32FC1,大小与 src 相同。
        blockSize - 邻域大小(详见 #cornerEigenValsAndVecs)。
        ksize - Sobel 算子的孔径参数。
        k - Harris 检测器的自由参数。参见上面的公式。
        borderType - 像素外推方法。请参阅 #BorderTypes。不支持 #BORDER_WRAP。
      • cornerHarris

        public static void cornerHarris​(Mat src,
                                        Mat dst,
                                        int blockSize,
                                        int ksize,
                                        double k)
        Harris 角点检测器。此函数对图像运行 Harris 角点检测器。与 cornerMinEigenVal 和 cornerEigenValsAndVecs 类似,对于每个像素 \((x, y)\),它会在一个 \(\texttt{blockSize} \times \texttt{blockSize}\) 邻域上计算一个 \(2\times2\) 梯度协方差矩阵 \(M^{(x,y)}\)。然后,它计算以下特征:\(\texttt{dst} (x,y) = \mathrm{det} M^{(x,y)} - k \cdot \left ( \mathrm{tr} M^{(x,y)} \right )^2\)。图像中的角点可以作为此响应图的局部最大值被找到。
        参数
        src - 输入单通道 8 位或浮点图像。
        dst - 存储 Harris 检测器响应的图像。它的类型为 CV_32FC1,大小与 src 相同。
        blockSize - 邻域大小(详见 #cornerEigenValsAndVecs)。
        ksize - Sobel 算子的孔径参数。
        k - Harris 检测器的自由参数。参见上面的公式。
      • cornerEigenValsAndVecs

        public static void cornerEigenValsAndVecs​(Mat src,
                                                  Mat dst,
                                                  int blockSize,
                                                  int ksize,
                                                  int borderType)
        计算图像块的特征值和特征向量以进行角点检测。对于每个像素 \(p\),函数 cornerEigenValsAndVecs 考虑一个 blockSize \(\times\) blockSize 邻域 \(S(p)\)。它计算邻域上的导数协方差矩阵为:\(M = \begin{bmatrix} \sum _{S(p)}(dI/dx)^2 & \sum _{S(p)}dI/dx dI/dy \\ \sum _{S(p)}dI/dx dI/dy & \sum _{S(p)}(dI/dy)^2 \end{bmatrix}\),其中导数使用 Sobel 算子计算。之后,它找到 \(M\) 的特征向量和特征值,并将它们存储在目标图像中,格式为 \((\lambda_1, \lambda_2, x_1, y_1, x_2, y_2)\),其中
        • \(\lambda_1, \lambda_2\) 是 \(M\) 的未排序特征值
        • \(x_1, y_1\) 是对应于 \(\lambda_1\) 的特征向量
        • \(x_2, y_2\) 是对应于 \(\lambda_2\) 的特征向量
        此函数的输出可用于鲁棒的边缘或角点检测。
        参数
        src - 输入单通道 8 位或浮点图像。
        dst - 存储结果的图像。它的尺寸与 src 相同,类型为 CV_32FC(6)。
        blockSize - 邻域大小(详见下文)。
        ksize - Sobel 算子的孔径参数。
        borderType - 像素外推方法。请参阅 #BorderTypes。不支持 #BORDER_WRAP。SEE: cornerMinEigenVal, cornerHarris, preCornerDetect
      • cornerEigenValsAndVecs

        public static void cornerEigenValsAndVecs​(Mat src,
                                                  Mat dst,
                                                  int blockSize,
                                                  int ksize)
        计算图像块的特征值和特征向量以进行角点检测。对于每个像素 \(p\),函数 cornerEigenValsAndVecs 考虑一个 blockSize \(\times\) blockSize 邻域 \(S(p)\)。它计算邻域上的导数协方差矩阵为:\(M = \begin{bmatrix} \sum _{S(p)}(dI/dx)^2 & \sum _{S(p)}dI/dx dI/dy \\ \sum _{S(p)}dI/dx dI/dy & \sum _{S(p)}(dI/dy)^2 \end{bmatrix}\),其中导数使用 Sobel 算子计算。之后,它找到 \(M\) 的特征向量和特征值,并将它们存储在目标图像中,格式为 \((\lambda_1, \lambda_2, x_1, y_1, x_2, y_2)\),其中
        • \(\lambda_1, \lambda_2\) 是 \(M\) 的未排序特征值
        • \(x_1, y_1\) 是对应于 \(\lambda_1\) 的特征向量
        • \(x_2, y_2\) 是对应于 \(\lambda_2\) 的特征向量
        此函数的输出可用于鲁棒的边缘或角点检测。
        参数
        src - 输入单通道 8 位或浮点图像。
        dst - 存储结果的图像。它的尺寸与 src 相同,类型为 CV_32FC(6)。
        blockSize - 邻域大小(详见下文)。
        ksize - Sobel 算子的孔径参数。SEE: cornerMinEigenVal, cornerHarris, preCornerDetect
      • preCornerDetect

        public static void preCornerDetect​(Mat src,
                                           Mat dst,
                                           int ksize,
                                           int borderType)
        计算用于角点检测的特征图。此函数计算源图像的基于复杂空间导数的函数 \(\texttt{dst} = (D_x \texttt{src} )^2 \cdot D_{yy} \texttt{src} + (D_y \texttt{src} )^2 \cdot D_{xx} \texttt{src} - 2 D_x \texttt{src} \cdot D_y \texttt{src} \cdot D_{xy} \texttt{src}\),其中 \(D_x\),\(D_y\) 是一阶图像导数,\(D_{xx}\),\(D_{yy}\) 是二阶图像导数,\(D_{xy}\) 是混合导数。角点可以作为函数的局部最大值被找到,如下所示: Mat corners, dilated_corners; preCornerDetect(image, corners, 3); // dilation with 3x3 rectangular structuring element dilate(corners, dilated_corners, Mat(), 1); Mat corner_mask = corners == dilated_corners;
        参数
        src - 源单通道 8 位或浮点图像。
        dst - 输出图像,类型为 CV_32F,大小与 src 相同。
        ksize - Sobel 的孔径大小。
        borderType - 像素外推方法。请参阅 #BorderTypes。不支持 #BORDER_WRAP。
      • preCornerDetect

        public static void preCornerDetect​(Mat src,
                                           Mat dst,
                                           int ksize)
        计算用于角点检测的特征图。此函数计算源图像的基于复杂空间导数的函数 \(\texttt{dst} = (D_x \texttt{src} )^2 \cdot D_{yy} \texttt{src} + (D_y \texttt{src} )^2 \cdot D_{xx} \texttt{src} - 2 D_x \texttt{src} \cdot D_y \texttt{src} \cdot D_{xy} \texttt{src}\),其中 \(D_x\),\(D_y\) 是一阶图像导数,\(D_{xx}\),\(D_{yy}\) 是二阶图像导数,\(D_{xy}\) 是混合导数。角点可以作为函数的局部最大值被找到,如下所示: Mat corners, dilated_corners; preCornerDetect(image, corners, 3); // dilation with 3x3 rectangular structuring element dilate(corners, dilated_corners, Mat(), 1); Mat corner_mask = corners == dilated_corners;
        参数
        src - 源单通道 8 位或浮点图像。
        dst - 输出图像,类型为 CV_32F,大小与 src 相同。
        ksize - Sobel 的孔径大小。
      • cornerSubPix

        public static void cornerSubPix​(Mat image,
                                        Mat corners,
                                        Size winSize,
                                        Size zeroZone,
                                        TermCriteria criteria)
        细化角点位置。此函数迭代地查找角点或径向鞍点的亚像素精确位置,如 CITE: forstner1987fast 中所述,并如下图所示。![image](pics/cornersubpix.png) 亚像素精确角点定位器基于以下观察:从中心 \(q\) 到 \(q\) 附近点 \(p\) 的每个向量都正交于 \(p\) 处的图像梯度,并受图像和测量噪声的影响。考虑表达式:\(\epsilon _i = {DI_{p_i}}^T \cdot (q - p_i)\),其中 \({DI_{p_i}}\) 是 \(q\) 附近点 \(p_i\) 之一的图像梯度。需要找到 \(q\) 的值,使 \(\epsilon_i\) 最小化。可以建立一个方程组,将 \(\epsilon_i\) 设置为零:\(\sum _i(DI_{p_i} \cdot {DI_{p_i}}^T) \cdot q - \sum _i(DI_{p_i} \cdot {DI_{p_i}}^T \cdot p_i)\),其中梯度在 \(q\) 的邻域(“搜索窗口”)内求和。将第一个梯度项称为 \(G\),第二个梯度项称为 \(b\),得到:\(q = G^{-1} \cdot b\)。该算法将邻域窗口的中心设置为这个新的中心 \(q\),然后迭代直到中心停留在设定的阈值内。
        参数
        image - 输入单通道 8 位或浮点图像。
        corners - 输入角点的初始坐标以及为输出提供的细化坐标。
        winSize - 搜索窗口边长的一半。例如,如果 winSize=Size(5,5),则使用 \((5*2+1) \times (5*2+1) = 11 \times 11\) 的搜索窗口。
        zeroZone - 搜索区域中间死区大小的一半,在该区域上不执行以下公式中的求和。有时用于避免自相关矩阵可能出现的奇异性。值 (-1,-1) 表示没有这样的尺寸。
        criteria - 角点细化迭代过程的终止准则。也就是说,角点位置细化过程在 criteria.maxCount 次迭代后停止,或者当角点位置在某个迭代中移动小于 criteria.epsilon 时停止。
      • goodFeaturesToTrack

        public static void goodFeaturesToTrack​(Mat image,
                                               MatOfPoint corners,
                                               int maxCorners,
                                               double qualityLevel,
                                               double minDistance,
                                               Mat mask,
                                               int blockSize,
                                               boolean useHarrisDetector,
                                               double k)
        确定图像上的强角点。此函数在图像或指定图像区域中查找最突出的角点,如 CITE: Shi94 中所述
        • 函数使用 #cornerMinEigenVal 或 #cornerHarris 计算每个源图像像素的角点质量度量。
        • 函数执行非极大值抑制(保留 *3 x 3* 邻域中的局部最大值)。
        • 最小特征值小于 \(\texttt{qualityLevel} \cdot \max_{x,y} qualityMeasureMap(x,y)\) 的角点将被拒绝。
        • 剩余的角点按质量度量降序排序。
        • 函数会丢弃每个在小于 maxDistance 的距离处存在更强角点的角点。
        此函数可用于初始化基于点的对象跟踪器。注意:如果函数使用 qualityLevel 参数的不同值 A 和 B 调用,且 A > B,则 qualityLevel=A 返回的角点向量将是 qualityLevel=B 输出向量的前缀。
        参数
        image - 输入 8 位或 32 位浮点单通道图像。
        corners - 检测到的角点的输出向量。
        maxCorners - 要返回的最大角点数。如果找到的角点多于此数量,则返回其中最强的角点。maxCorners <= 0 表示未设置最大限制,并返回所有检测到的角点。
        qualityLevel - 表征图像角点最小可接受质量的参数。该参数值乘以最佳角点质量度量,即最小特征值(参见 #cornerMinEigenVal)或 Harris 函数响应(参见 #cornerHarris)。质量度量小于乘积的角点将被拒绝。例如,如果最佳角点的质量度量为 1500,且 qualityLevel=0.01,则所有质量度量小于 15 的角点都将被拒绝。
        minDistance - 返回角点之间最小可能的欧几里德距离。
        mask - 可选的感兴趣区域。如果图像不为空(它需要具有 CV_8UC1 类型并与 image 大小相同),它指定检测角点的区域。
        blockSize - 用于计算每个像素邻域上的导数协方差矩阵的平均块大小。参见 cornerEigenValsAndVecs。
        useHarrisDetector - 指示是使用 Harris 检测器(参见 #cornerHarris)还是 #cornerMinEigenVal 的参数。
        k - Harris 检测器的自由参数。SEE: cornerMinEigenVal, cornerHarris, calcOpticalFlowPyrLK, estimateRigidTransform,
      • goodFeaturesToTrack

        public static void goodFeaturesToTrack​(Mat image,
                                               MatOfPoint corners,
                                               int maxCorners,
                                               double qualityLevel,
                                               double minDistance,
                                               Mat mask,
                                               int blockSize,
                                               boolean useHarrisDetector)
        确定图像上的强角点。此函数在图像或指定图像区域中查找最突出的角点,如 CITE: Shi94 中所述
        • 函数使用 #cornerMinEigenVal 或 #cornerHarris 计算每个源图像像素的角点质量度量。
        • 函数执行非极大值抑制(保留 *3 x 3* 邻域中的局部最大值)。
        • 最小特征值小于 \(\texttt{qualityLevel} \cdot \max_{x,y} qualityMeasureMap(x,y)\) 的角点将被拒绝。
        • 剩余的角点按质量度量降序排序。
        • 函数会丢弃每个在小于 maxDistance 的距离处存在更强角点的角点。
        此函数可用于初始化基于点的对象跟踪器。注意:如果函数使用 qualityLevel 参数的不同值 A 和 B 调用,且 A > B,则 qualityLevel=A 返回的角点向量将是 qualityLevel=B 输出向量的前缀。
        参数
        image - 输入 8 位或 32 位浮点单通道图像。
        corners - 检测到的角点的输出向量。
        maxCorners - 要返回的最大角点数。如果找到的角点多于此数量,则返回其中最强的角点。maxCorners <= 0 表示未设置最大限制,并返回所有检测到的角点。
        qualityLevel - 表征图像角点最小可接受质量的参数。该参数值乘以最佳角点质量度量,即最小特征值(参见 #cornerMinEigenVal)或 Harris 函数响应(参见 #cornerHarris)。质量度量小于乘积的角点将被拒绝。例如,如果最佳角点的质量度量为 1500,且 qualityLevel=0.01,则所有质量度量小于 15 的角点都将被拒绝。
        minDistance - 返回角点之间最小可能的欧几里德距离。
        mask - 可选的感兴趣区域。如果图像不为空(它需要具有 CV_8UC1 类型并与 image 大小相同),它指定检测角点的区域。
        blockSize - 用于计算每个像素邻域上的导数协方差矩阵的平均块大小。参见 cornerEigenValsAndVecs。
        useHarrisDetector - 指示是使用 Harris 检测器(参见 #cornerHarris)还是 #cornerMinEigenVal 的参数。SEE: cornerMinEigenVal, cornerHarris, calcOpticalFlowPyrLK, estimateRigidTransform,
      • goodFeaturesToTrack

        public static void goodFeaturesToTrack​(Mat image,
                                               MatOfPoint corners,
                                               int maxCorners,
                                               double qualityLevel,
                                               double minDistance,
                                               Mat mask,
                                               int blockSize)
        确定图像上的强角点。此函数在图像或指定图像区域中查找最突出的角点,如 CITE: Shi94 中所述
        • 函数使用 #cornerMinEigenVal 或 #cornerHarris 计算每个源图像像素的角点质量度量。
        • 函数执行非极大值抑制(保留 *3 x 3* 邻域中的局部最大值)。
        • 最小特征值小于 \(\texttt{qualityLevel} \cdot \max_{x,y} qualityMeasureMap(x,y)\) 的角点将被拒绝。
        • 剩余的角点按质量度量降序排序。
        • 函数会丢弃每个在小于 maxDistance 的距离处存在更强角点的角点。
        此函数可用于初始化基于点的对象跟踪器。注意:如果函数使用 qualityLevel 参数的不同值 A 和 B 调用,且 A > B,则 qualityLevel=A 返回的角点向量将是 qualityLevel=B 输出向量的前缀。
        参数
        image - 输入 8 位或 32 位浮点单通道图像。
        corners - 检测到的角点的输出向量。
        maxCorners - 要返回的最大角点数。如果找到的角点多于此数量,则返回其中最强的角点。maxCorners <= 0 表示未设置最大限制,并返回所有检测到的角点。
        qualityLevel - 表征图像角点最小可接受质量的参数。该参数值乘以最佳角点质量度量,即最小特征值(参见 #cornerMinEigenVal)或 Harris 函数响应(参见 #cornerHarris)。质量度量小于乘积的角点将被拒绝。例如,如果最佳角点的质量度量为 1500,且 qualityLevel=0.01,则所有质量度量小于 15 的角点都将被拒绝。
        minDistance - 返回角点之间最小可能的欧几里德距离。
        mask - 可选的感兴趣区域。如果图像不为空(它需要具有 CV_8UC1 类型并与 image 大小相同),它指定检测角点的区域。
        blockSize - 用于计算每个像素邻域上的导数协方差矩阵的平均块大小。参见 cornerEigenValsAndVecs。或 #cornerMinEigenVal。SEE: cornerMinEigenVal, cornerHarris, calcOpticalFlowPyrLK, estimateRigidTransform,
      • goodFeaturesToTrack

        public static void goodFeaturesToTrack​(Mat image,
                                               MatOfPoint corners,
                                               int maxCorners,
                                               double qualityLevel,
                                               double minDistance,
                                               Mat mask)
        确定图像上的强角点。此函数在图像或指定图像区域中查找最突出的角点,如 CITE: Shi94 中所述
        • 函数使用 #cornerMinEigenVal 或 #cornerHarris 计算每个源图像像素的角点质量度量。
        • 函数执行非极大值抑制(保留 *3 x 3* 邻域中的局部最大值)。
        • 最小特征值小于 \(\texttt{qualityLevel} \cdot \max_{x,y} qualityMeasureMap(x,y)\) 的角点将被拒绝。
        • 剩余的角点按质量度量降序排序。
        • 函数会丢弃每个在小于 maxDistance 的距离处存在更强角点的角点。
        此函数可用于初始化基于点的对象跟踪器。注意:如果函数使用 qualityLevel 参数的不同值 A 和 B 调用,且 A > B,则 qualityLevel=A 返回的角点向量将是 qualityLevel=B 输出向量的前缀。
        参数
        image - 输入 8 位或 32 位浮点单通道图像。
        corners - 检测到的角点的输出向量。
        maxCorners - 要返回的最大角点数。如果找到的角点多于此数量,则返回其中最强的角点。maxCorners <= 0 表示未设置最大限制,并返回所有检测到的角点。
        qualityLevel - 表征图像角点最小可接受质量的参数。该参数值乘以最佳角点质量度量,即最小特征值(参见 #cornerMinEigenVal)或 Harris 函数响应(参见 #cornerHarris)。质量度量小于乘积的角点将被拒绝。例如,如果最佳角点的质量度量为 1500,且 qualityLevel=0.01,则所有质量度量小于 15 的角点都将被拒绝。
        minDistance - 返回角点之间最小可能的欧几里德距离。
        mask - 可选的感兴趣区域。如果图像不为空(它需要具有 CV_8UC1 类型并与 image 大小相同),它指定检测角点的区域。像素邻域。参见 cornerEigenValsAndVecs。或 #cornerMinEigenVal。SEE: cornerMinEigenVal, cornerHarris, calcOpticalFlowPyrLK, estimateRigidTransform,
      • goodFeaturesToTrack

        public static void goodFeaturesToTrack​(Mat image,
                                               MatOfPoint corners,
                                               int maxCorners,
                                               double qualityLevel,
                                               double minDistance)
        确定图像上的强角点。此函数在图像或指定图像区域中查找最突出的角点,如 CITE: Shi94 中所述
        • 函数使用 #cornerMinEigenVal 或 #cornerHarris 计算每个源图像像素的角点质量度量。
        • 函数执行非极大值抑制(保留 *3 x 3* 邻域中的局部最大值)。
        • 最小特征值小于 \(\texttt{qualityLevel} \cdot \max_{x,y} qualityMeasureMap(x,y)\) 的角点将被拒绝。
        • 剩余的角点按质量度量降序排序。
        • 函数会丢弃每个在小于 maxDistance 的距离处存在更强角点的角点。
        此函数可用于初始化基于点的对象跟踪器。注意:如果函数使用 qualityLevel 参数的不同值 A 和 B 调用,且 A > B,则 qualityLevel=A 返回的角点向量将是 qualityLevel=B 输出向量的前缀。
        参数
        image - 输入 8 位或 32 位浮点单通道图像。
        corners - 检测到的角点的输出向量。
        maxCorners - 要返回的最大角点数。如果找到的角点多于此数量,则返回其中最强的角点。maxCorners <= 0 表示未设置最大限制,并返回所有检测到的角点。
        qualityLevel - 表征图像角点最小可接受质量的参数。该参数值乘以最佳角点质量度量,即最小特征值(参见 #cornerMinEigenVal)或 Harris 函数响应(参见 #cornerHarris)。质量度量小于乘积的角点将被拒绝。例如,如果最佳角点的质量度量为 1500,且 qualityLevel=0.01,则所有质量度量小于 15 的角点都将被拒绝。
        minDistance - 返回角点之间最小可能的欧几里德距离。CV_8UC1 并与图像大小相同),它指定检测角点的区域。像素邻域。参见 cornerEigenValsAndVecs。或 #cornerMinEigenVal。SEE: cornerMinEigenVal, cornerHarris, calcOpticalFlowPyrLK, estimateRigidTransform,
      • goodFeaturesToTrack

        public static void goodFeaturesToTrack​(Mat image,
                                               MatOfPoint corners,
                                               int maxCorners,
                                               double qualityLevel,
                                               double minDistance,
                                               Mat mask,
                                               int blockSize,
                                               int gradientSize,
                                               boolean useHarrisDetector,
                                               double k)
      • goodFeaturesToTrack

        public static void goodFeaturesToTrack​(Mat image,
                                               MatOfPoint corners,
                                               int maxCorners,
                                               double qualityLevel,
                                               double minDistance,
                                               Mat mask,
                                               int blockSize,
                                               int gradientSize,
                                               boolean useHarrisDetector)
      • goodFeaturesToTrack

        public static void goodFeaturesToTrack​(Mat image,
                                               MatOfPoint corners,
                                               int maxCorners,
                                               double qualityLevel,
                                               double minDistance,
                                               Mat mask,
                                               int blockSize,
                                               int gradientSize)
      • goodFeaturesToTrackWithQuality

        public static void goodFeaturesToTrackWithQuality​(Mat image,
                                                          Mat corners,
                                                          int maxCorners,
                                                          double qualityLevel,
                                                          double minDistance,
                                                          Mat mask,
                                                          Mat cornersQuality,
                                                          int blockSize,
                                                          int gradientSize,
                                                          boolean useHarrisDetector,
                                                          double k)
        与上述相同,但同时返回检测到的角点的质量度量。
        参数
        image - 输入 8 位或 32 位浮点单通道图像。
        corners - 检测到的角点的输出向量。
        maxCorners - 要返回的最大角点数。如果找到的角点多于此数量,则返回其中最强的角点。maxCorners <= 0 表示未设置最大限制,并返回所有检测到的角点。
        qualityLevel - 表征图像角点最小可接受质量的参数。该参数值乘以最佳角点质量度量,即最小特征值(参见 #cornerMinEigenVal)或 Harris 函数响应(参见 #cornerHarris)。质量度量小于乘积的角点将被拒绝。例如,如果最佳角点的质量度量为 1500,且 qualityLevel=0.01,则所有质量度量小于 15 的角点都将被拒绝。
        minDistance - 返回角点之间最小可能的欧几里德距离。
        mask - 感兴趣区域。如果图像不为空(它需要具有 CV_8UC1 类型并与 image 大小相同),它指定检测角点的区域。
        cornersQuality - 检测到的角点质量度量的输出向量。
        blockSize - 用于计算每个像素邻域上的导数协方差矩阵的平均块大小。参见 cornerEigenValsAndVecs。
        gradientSize - 用于导数计算的 Sobel 算子的孔径参数。参见 cornerEigenValsAndVecs。
        useHarrisDetector - 指示是使用 Harris 检测器(参见 #cornerHarris)还是 #cornerMinEigenVal 的参数。
        k - Harris 检测器的自由参数。
      • goodFeaturesToTrackWithQuality

        public static void goodFeaturesToTrackWithQuality​(Mat image,
                                                          Mat corners,
                                                          int maxCorners,
                                                          double qualityLevel,
                                                          double minDistance,
                                                          Mat mask,
                                                          Mat cornersQuality,
                                                          int blockSize,
                                                          int gradientSize,
                                                          boolean useHarrisDetector)
        与上述相同,但同时返回检测到的角点的质量度量。
        参数
        image - 输入 8 位或 32 位浮点单通道图像。
        corners - 检测到的角点的输出向量。
        maxCorners - 要返回的最大角点数。如果找到的角点多于此数量,则返回其中最强的角点。maxCorners <= 0 表示未设置最大限制,并返回所有检测到的角点。
        qualityLevel - 表征图像角点最小可接受质量的参数。该参数值乘以最佳角点质量度量,即最小特征值(参见 #cornerMinEigenVal)或 Harris 函数响应(参见 #cornerHarris)。质量度量小于乘积的角点将被拒绝。例如,如果最佳角点的质量度量为 1500,且 qualityLevel=0.01,则所有质量度量小于 15 的角点都将被拒绝。
        minDistance - 返回角点之间最小可能的欧几里德距离。
        mask - 感兴趣区域。如果图像不为空(它需要具有 CV_8UC1 类型并与 image 大小相同),它指定检测角点的区域。
        cornersQuality - 检测到的角点质量度量的输出向量。
        blockSize - 用于计算每个像素邻域上的导数协方差矩阵的平均块大小。参见 cornerEigenValsAndVecs。
        gradientSize - 用于导数计算的 Sobel 算子的孔径参数。参见 cornerEigenValsAndVecs。
        useHarrisDetector - 指示是使用 Harris 检测器(参见 #cornerHarris)还是 #cornerMinEigenVal 的参数。
      • goodFeaturesToTrackWithQuality

        public static void goodFeaturesToTrackWithQuality​(Mat image,
                                                          Mat corners,
                                                          int maxCorners,
                                                          double qualityLevel,
                                                          double minDistance,
                                                          Mat mask,
                                                          Mat cornersQuality,
                                                          int blockSize,
                                                          int gradientSize)
        与上述相同,但同时返回检测到的角点的质量度量。
        参数
        image - 输入 8 位或 32 位浮点单通道图像。
        corners - 检测到的角点的输出向量。
        maxCorners - 要返回的最大角点数。如果找到的角点多于此数量,则返回其中最强的角点。maxCorners <= 0 表示未设置最大限制,并返回所有检测到的角点。
        qualityLevel - 表征图像角点最小可接受质量的参数。该参数值乘以最佳角点质量度量,即最小特征值(参见 #cornerMinEigenVal)或 Harris 函数响应(参见 #cornerHarris)。质量度量小于乘积的角点将被拒绝。例如,如果最佳角点的质量度量为 1500,且 qualityLevel=0.01,则所有质量度量小于 15 的角点都将被拒绝。
        minDistance - 返回角点之间最小可能的欧几里德距离。
        mask - 感兴趣区域。如果图像不为空(它需要具有 CV_8UC1 类型并与 image 大小相同),它指定检测角点的区域。
        cornersQuality - 检测到的角点质量度量的输出向量。
        blockSize - 用于计算每个像素邻域上的导数协方差矩阵的平均块大小。参见 cornerEigenValsAndVecs。
        gradientSize - 用于导数计算的 Sobel 算子的孔径参数。参见 cornerEigenValsAndVecs。或 #cornerMinEigenVal。
      • goodFeaturesToTrackWithQuality

        public static void goodFeaturesToTrackWithQuality​(Mat image,
                                                          Mat corners,
                                                          int maxCorners,
                                                          double qualityLevel,
                                                          double minDistance,
                                                          Mat mask,
                                                          Mat cornersQuality,
                                                          int blockSize)
        与上述相同,但同时返回检测到的角点的质量度量。
        参数
        image - 输入 8 位或 32 位浮点单通道图像。
        corners - 检测到的角点的输出向量。
        maxCorners - 要返回的最大角点数。如果找到的角点多于此数量,则返回其中最强的角点。maxCorners <= 0 表示未设置最大限制,并返回所有检测到的角点。
        qualityLevel - 表征图像角点最小可接受质量的参数。该参数值乘以最佳角点质量度量,即最小特征值(参见 #cornerMinEigenVal)或 Harris 函数响应(参见 #cornerHarris)。质量度量小于乘积的角点将被拒绝。例如,如果最佳角点的质量度量为 1500,且 qualityLevel=0.01,则所有质量度量小于 15 的角点都将被拒绝。
        minDistance - 返回角点之间最小可能的欧几里德距离。
        mask - 感兴趣区域。如果图像不为空(它需要具有 CV_8UC1 类型并与 image 大小相同),它指定检测角点的区域。
        cornersQuality - 检测到的角点质量度量的输出向量。
        blockSize - 用于计算每个像素邻域上的导数协方差矩阵的平均块大小。参见 cornerEigenValsAndVecs。参见 cornerEigenValsAndVecs。或 #cornerMinEigenVal。
      • goodFeaturesToTrackWithQuality

        public static void goodFeaturesToTrackWithQuality​(Mat image,
                                                          Mat corners,
                                                          int maxCorners,
                                                          double qualityLevel,
                                                          double minDistance,
                                                          Mat mask,
                                                          Mat cornersQuality)
        与上述相同,但同时返回检测到的角点的质量度量。
        参数
        image - 输入 8 位或 32 位浮点单通道图像。
        corners - 检测到的角点的输出向量。
        maxCorners - 要返回的最大角点数。如果找到的角点多于此数量,则返回其中最强的角点。maxCorners <= 0 表示未设置最大限制,并返回所有检测到的角点。
        qualityLevel - 表征图像角点最小可接受质量的参数。该参数值乘以最佳角点质量度量,即最小特征值(参见 #cornerMinEigenVal)或 Harris 函数响应(参见 #cornerHarris)。质量度量小于乘积的角点将被拒绝。例如,如果最佳角点的质量度量为 1500,且 qualityLevel=0.01,则所有质量度量小于 15 的角点都将被拒绝。
        minDistance - 返回角点之间最小可能的欧几里德距离。
        mask - 感兴趣区域。如果图像不为空(它需要具有 CV_8UC1 类型并与 image 大小相同),它指定检测角点的区域。
        cornersQuality - 检测到的角点质量度量的输出向量。像素邻域。参见 cornerEigenValsAndVecs。参见 cornerEigenValsAndVecs。或 #cornerMinEigenVal。
      • HoughLines

        public static void HoughLines​(Mat image,
                                      Mat lines,
                                      double rho,
                                      double theta,
                                      int threshold,
                                      double srn,
                                      double stn,
                                      double min_theta,
                                      double max_theta,
                                      boolean use_edgeval)
        使用标准霍夫变换在二值图像中查找线条。此函数实现标准或标准多尺度霍夫变换算法进行线检测。有关霍夫变换的良好解释,请参阅 <https://homepages.inf.ed.ac.uk/rbf/HIPR2/hough.htm>。
        参数
        image - 8 位单通道二值源图像。图像可能被函数修改。
        lines - 线条的输出向量。每条线由一个 2 或 3 元素向量 \((\rho, \theta)\) 或 \((\rho, \theta, \textrm{votes})\) 表示,其中 \(\rho\) 是距坐标原点 \((0,0)\)(图像左上角)的距离,\(\theta\) 是线的弧度旋转角(\(0 \sim \textrm{vertical line}, \pi/2 \sim \textrm{horizontal line}\)),\(\textrm{votes}\) 是累加器的值。
        rho - 累加器在像素中的距离分辨率。
        theta - 累加器在弧度中的角度分辨率。
        threshold - 累加器阈值参数。只返回获得足够票数( \(>\texttt{threshold}\) )的线条。
        srn - 对于多尺度霍夫变换,它是距离分辨率 rho 的除数。粗略累加器距离分辨率是 rho,精确累加器分辨率是 rho/srn。如果 srn=0 和 stn=0 都成立,则使用经典霍夫变换。否则,这两个参数都应为正。
        stn - 对于多尺度霍夫变换,它是距离分辨率 theta 的除数。
        min_theta - 对于标准和多尺度霍夫变换,检查线的最小角度。必须介于 0 和 max_theta 之间。
        max_theta - 对于标准和多尺度霍夫变换,角度的上限。必须介于 min_theta 和 CV_PI 之间。累加器中的实际最大角度可能略小于 max_theta,具体取决于参数 min_theta 和 theta。
        use_edgeval - 如果要使用加权霍夫变换,则为 True。
      • HoughLines

        public static void HoughLines​(Mat image,
                                      Mat lines,
                                      double rho,
                                      double theta,
                                      int threshold,
                                      double srn,
                                      double stn,
                                      double min_theta,
                                      double max_theta)
        使用标准霍夫变换在二值图像中查找线条。此函数实现标准或标准多尺度霍夫变换算法进行线检测。有关霍夫变换的良好解释,请参阅 <https://homepages.inf.ed.ac.uk/rbf/HIPR2/hough.htm>。
        参数
        image - 8 位单通道二值源图像。图像可能被函数修改。
        lines - 线条的输出向量。每条线由一个 2 或 3 元素向量 \((\rho, \theta)\) 或 \((\rho, \theta, \textrm{votes})\) 表示,其中 \(\rho\) 是距坐标原点 \((0,0)\)(图像左上角)的距离,\(\theta\) 是线的弧度旋转角(\(0 \sim \textrm{vertical line}, \pi/2 \sim \textrm{horizontal line}\)),\(\textrm{votes}\) 是累加器的值。
        rho - 累加器在像素中的距离分辨率。
        theta - 累加器在弧度中的角度分辨率。
        threshold - 累加器阈值参数。只返回获得足够票数( \(>\texttt{threshold}\) )的线条。
        srn - 对于多尺度霍夫变换,它是距离分辨率 rho 的除数。粗略累加器距离分辨率是 rho,精确累加器分辨率是 rho/srn。如果 srn=0 和 stn=0 都成立,则使用经典霍夫变换。否则,这两个参数都应为正。
        stn - 对于多尺度霍夫变换,它是距离分辨率 theta 的除数。
        min_theta - 对于标准和多尺度霍夫变换,检查线的最小角度。必须介于 0 和 max_theta 之间。
        max_theta - 对于标准和多尺度霍夫变换,角度的上限。必须介于 min_theta 和 CV_PI 之间。累加器中的实际最大角度可能略小于 max_theta,具体取决于参数 min_theta 和 theta。
      • HoughLines

        public static void HoughLines​(Mat image,
                                      Mat lines,
                                      double rho,
                                      double theta,
                                      int threshold,
                                      double srn,
                                      double stn,
                                      double min_theta)
        使用标准霍夫变换在二值图像中查找线条。此函数实现标准或标准多尺度霍夫变换算法进行线检测。有关霍夫变换的良好解释,请参阅 <https://homepages.inf.ed.ac.uk/rbf/HIPR2/hough.htm>。
        参数
        image - 8 位单通道二值源图像。图像可能被函数修改。
        lines - 线条的输出向量。每条线由一个 2 或 3 元素向量 \((\rho, \theta)\) 或 \((\rho, \theta, \textrm{votes})\) 表示,其中 \(\rho\) 是距坐标原点 \((0,0)\)(图像左上角)的距离,\(\theta\) 是线的弧度旋转角(\(0 \sim \textrm{vertical line}, \pi/2 \sim \textrm{horizontal line}\)),\(\textrm{votes}\) 是累加器的值。
        rho - 累加器在像素中的距离分辨率。
        theta - 累加器在弧度中的角度分辨率。
        threshold - 累加器阈值参数。只返回获得足够票数( \(>\texttt{threshold}\) )的线条。
        srn - 对于多尺度霍夫变换,它是距离分辨率 rho 的除数。粗略累加器距离分辨率是 rho,精确累加器分辨率是 rho/srn。如果 srn=0 和 stn=0 都成立,则使用经典霍夫变换。否则,这两个参数都应为正。
        stn - 对于多尺度霍夫变换,它是距离分辨率 theta 的除数。
        min_theta - 对于标准和多尺度霍夫变换,检查线的最小角度。必须介于 0 和 max_theta 之间。必须介于 min_theta 和 CV_PI 之间。累加器中的实际最大角度可能略小于 max_theta,具体取决于参数 min_theta 和 theta。
      • HoughLines

        public static void HoughLines​(Mat image,
                                      Mat lines,
                                      double rho,
                                      double theta,
                                      int threshold,
                                      double srn,
                                      double stn)
        使用标准霍夫变换在二值图像中查找线条。此函数实现标准或标准多尺度霍夫变换算法进行线检测。有关霍夫变换的良好解释,请参阅 <https://homepages.inf.ed.ac.uk/rbf/HIPR2/hough.htm>。
        参数
        image - 8 位单通道二值源图像。图像可能被函数修改。
        lines - 线条的输出向量。每条线由一个 2 或 3 元素向量 \((\rho, \theta)\) 或 \((\rho, \theta, \textrm{votes})\) 表示,其中 \(\rho\) 是距坐标原点 \((0,0)\)(图像左上角)的距离,\(\theta\) 是线的弧度旋转角(\(0 \sim \textrm{vertical line}, \pi/2 \sim \textrm{horizontal line}\)),\(\textrm{votes}\) 是累加器的值。
        rho - 累加器在像素中的距离分辨率。
        theta - 累加器在弧度中的角度分辨率。
        threshold - 累加器阈值参数。只返回获得足够票数( \(>\texttt{threshold}\) )的线条。
        srn - 对于多尺度霍夫变换,它是距离分辨率 rho 的除数。粗略累加器距离分辨率是 rho,精确累加器分辨率是 rho/srn。如果 srn=0 和 stn=0 都成立,则使用经典霍夫变换。否则,这两个参数都应为正。
        stn - 对于多尺度霍夫变换,它是距离分辨率 theta 的除数。必须介于 0 和 max_theta 之间。必须介于 min_theta 和 CV_PI 之间。累加器中的实际最大角度可能略小于 max_theta,具体取决于参数 min_theta 和 theta。
      • HoughLines

        public static void HoughLines​(Mat image,
                                      Mat lines,
                                      double rho,
                                      double theta,
                                      int threshold,
                                      double srn)
        使用标准霍夫变换在二值图像中查找线条。此函数实现标准或标准多尺度霍夫变换算法进行线检测。有关霍夫变换的良好解释,请参阅 <https://homepages.inf.ed.ac.uk/rbf/HIPR2/hough.htm>。
        参数
        image - 8 位单通道二值源图像。图像可能被函数修改。
        lines - 线条的输出向量。每条线由一个 2 或 3 元素向量 \((\rho, \theta)\) 或 \((\rho, \theta, \textrm{votes})\) 表示,其中 \(\rho\) 是距坐标原点 \((0,0)\)(图像左上角)的距离,\(\theta\) 是线的弧度旋转角(\(0 \sim \textrm{vertical line}, \pi/2 \sim \textrm{horizontal line}\)),\(\textrm{votes}\) 是累加器的值。
        rho - 累加器在像素中的距离分辨率。
        theta - 累加器在弧度中的角度分辨率。
        threshold - 累加器阈值参数。只返回获得足够票数( \(>\texttt{threshold}\) )的线条。
        srn - 对于多尺度霍夫变换,它是距离分辨率 rho 的除数。粗略累加器距离分辨率是 rho,精确累加器分辨率是 rho/srn。如果 srn=0 和 stn=0 都成立,则使用经典霍夫变换。否则,这两个参数都应为正。必须介于 0 和 max_theta 之间。必须介于 min_theta 和 CV_PI 之间。累加器中的实际最大角度可能略小于 max_theta,具体取决于参数 min_theta 和 theta。
      • HoughLines

        public static void HoughLines​(Mat image,
                                      Mat lines,
                                      double rho,
                                      double theta,
                                      int threshold)
        使用标准霍夫变换在二值图像中查找线条。此函数实现标准或标准多尺度霍夫变换算法进行线检测。有关霍夫变换的良好解释,请参阅 <https://homepages.inf.ed.ac.uk/rbf/HIPR2/hough.htm>。
        参数
        image - 8 位单通道二值源图像。图像可能被函数修改。
        lines - 线条的输出向量。每条线由一个 2 或 3 元素向量 \((\rho, \theta)\) 或 \((\rho, \theta, \textrm{votes})\) 表示,其中 \(\rho\) 是距坐标原点 \((0,0)\)(图像左上角)的距离,\(\theta\) 是线的弧度旋转角(\(0 \sim \textrm{vertical line}, \pi/2 \sim \textrm{horizontal line}\)),\(\textrm{votes}\) 是累加器的值。
        rho - 累加器在像素中的距离分辨率。
        theta - 累加器在弧度中的角度分辨率。
        threshold - 累加器阈值参数。只返回获得足够票数( \(>\texttt{threshold}\) )的线条。粗略累加器距离分辨率是 rho,精确累加器分辨率是 rho/srn。如果 srn=0 和 stn=0 都成立,则使用经典霍夫变换。否则,这两个参数都应为正。必须介于 0 和 max_theta 之间。必须介于 min_theta 和 CV_PI 之间。累加器中的实际最大角度可能略小于 max_theta,具体取决于参数 min_theta 和 theta。
      • HoughLinesP

        public static void HoughLinesP​(Mat image,
                                       Mat lines,
                                       double rho,
                                       double theta,
                                       int threshold,
                                       double minLineLength,
                                       double maxLineGap)
        使用概率霍夫变换在二值图像中查找线段。此函数实现了 CITE: Matas00 中描述的用于线检测的概率霍夫变换算法。请参阅下面的线检测示例:INCLUDE: snippets/imgproc_HoughLinesP.cpp 这是为函数参数调优的示例图片:![image](pics/building.jpg) 这是上述程序在概率霍夫变换情况下的输出:![image](pics/houghp.png)
        参数
        image - 8 位单通道二值源图像。图像可能被函数修改。
        lines - 线条的输出向量。每条线由一个 4 元素向量 \((x_1, y_1, x_2, y_2)\) 表示,其中 \((x_1,y_1)\) 和 \((x_2, y_2)\) 是每个检测到的线段的终点。
        rho - 累加器在像素中的距离分辨率。
        theta - 累加器在弧度中的角度分辨率。
        threshold - 累加器阈值参数。只返回获得足够票数( \(>\texttt{threshold}\) )的线条。
        minLineLength - 最小线段长度。比此长度短的线段将被拒绝。
        maxLineGap - 同一条线上点之间允许的最大间隙,用于连接它们。SEE: LineSegmentDetector
      • HoughLinesP

        public static void HoughLinesP​(Mat image,
                                       Mat lines,
                                       double rho,
                                       double theta,
                                       int threshold,
                                       double minLineLength)
        使用概率霍夫变换在二值图像中查找线段。此函数实现了 CITE: Matas00 中描述的用于线检测的概率霍夫变换算法。请参阅下面的线检测示例:INCLUDE: snippets/imgproc_HoughLinesP.cpp 这是为函数参数调优的示例图片:![image](pics/building.jpg) 这是上述程序在概率霍夫变换情况下的输出:![image](pics/houghp.png)
        参数
        image - 8 位单通道二值源图像。图像可能被函数修改。
        lines - 线条的输出向量。每条线由一个 4 元素向量 \((x_1, y_1, x_2, y_2)\) 表示,其中 \((x_1,y_1)\) 和 \((x_2, y_2)\) 是每个检测到的线段的终点。
        rho - 累加器在像素中的距离分辨率。
        theta - 累加器在弧度中的角度分辨率。
        threshold - 累加器阈值参数。只返回获得足够票数( \(>\texttt{threshold}\) )的线条。
        minLineLength - 最小线段长度。比此长度短的线段将被拒绝。SEE: LineSegmentDetector
      • HoughLinesP

        public static void HoughLinesP​(Mat image,
                                       Mat lines,
                                       double rho,
                                       double theta,
                                       int threshold)
        使用概率霍夫变换在二值图像中查找线段。此函数实现了 CITE: Matas00 中描述的用于线检测的概率霍夫变换算法。请参阅下面的线检测示例:INCLUDE: snippets/imgproc_HoughLinesP.cpp 这是为函数参数调优的示例图片:![image](pics/building.jpg) 这是上述程序在概率霍夫变换情况下的输出:![image](pics/houghp.png)
        参数
        image - 8 位单通道二值源图像。图像可能被函数修改。
        lines - 线条的输出向量。每条线由一个 4 元素向量 \((x_1, y_1, x_2, y_2)\) 表示,其中 \((x_1,y_1)\) 和 \((x_2, y_2)\) 是每个检测到的线段的终点。
        rho - 累加器在像素中的距离分辨率。
        theta - 累加器在弧度中的角度分辨率。
        threshold - 累加器阈值参数。只返回获得足够票数( \(>\texttt{threshold}\) )的线条。SEE: LineSegmentDetector
      • HoughLinesPointSet

        public static void HoughLinesPointSet​(Mat point,
                                              Mat lines,
                                              int lines_max,
                                              int threshold,
                                              double min_rho,
                                              double max_rho,
                                              double rho_step,
                                              double min_theta,
                                              double max_theta,
                                              double theta_step)
        使用标准霍夫变换在点集中查找线条。此函数使用霍夫变换的修改版本在点集中查找线条。INCLUDE: snippets/imgproc_HoughLinesPointSet.cpp
        参数
        point - 输入点向量。每个向量必须编码为 Point 向量 \((x,y)\)。类型必须为 CV_32FC2 或 CV_32SC2。
        lines - 找到的线的输出向量。每个向量编码为 vector<Vec3d> \((votes, rho, theta)\)。'votes' 的值越大,霍夫线的可靠性越高。
        lines_max - 霍夫线的最大数量。
        threshold - 累加器阈值参数。只返回获得足够票数( \(>\texttt{threshold}\) )的线条。
        min_rho - 累加器中 \(\rho\) 的最小值(注意:\(\rho\) 可以是负数。绝对值 \(|\rho|\) 是一条线到原点的距离)。
        max_rho - 累加器中 \(\rho\) 的最大值。
        rho_step - 累加器的距离分辨率。
        min_theta - 累加器中最小角度值(弧度)。
        max_theta - 累加器中角度值的上限(弧度)。实际最大角度可能略小于 max_theta,具体取决于参数 min_theta 和 theta_step。
        theta_step - 累加器在弧度中的角度分辨率。
      • HoughCircles

        public static void HoughCircles​(Mat image,
                                        Mat circles,
                                        int method,
                                        double dp,
                                        double minDist,
                                        double param1,
                                        double param2,
                                        int minRadius,
                                        int maxRadius)
        使用霍夫变换在灰度图像中查找圆。此函数使用霍夫变换的修改版本在灰度图像中查找圆。示例:INCLUDE: snippets/imgproc_HoughLinesCircles.cpp 注意:通常,此函数能很好地检测圆心。但是,它可能无法找到正确的半径。如果您知道半径范围(minRadius 和 maxRadius),可以通过指定它们来辅助函数。或者,在使用 #HOUGH_GRADIENT 方法时,您可以将 maxRadius 设置为负数,以便只返回圆心而不搜索半径,然后使用额外的过程找到正确的半径。如果图像不是已经很柔和,稍微平滑一下图像也会有所帮助。例如,使用 7x7 核和 1.5x1.5 sigma 的 GaussianBlur() 或类似的模糊处理可能会有所帮助。
        参数
        image - 8 位单通道灰度输入图像。
        circles - 找到的圆的输出向量。每个向量编码为 3 或 4 元素的浮点向量 \((x, y, radius)\) 或 \((x, y, radius, votes)\)。
        method - 检测方法,请参阅 #HoughModes。可用方法有 #HOUGH_GRADIENT 和 #HOUGH_GRADIENT_ALT。
        dp - 累加器分辨率与图像分辨率的反比。例如,如果 dp=1,累加器与输入图像具有相同的分辨率。如果 dp=2,累加器的宽度和高度减半。对于 #HOUGH_GRADIENT_ALT,推荐值为 dp=1.5,除非需要检测非常小的圆。
        minDist - 检测到的圆心之间的最小距离。如果参数太小,除了真实的圆外,可能会错误地检测到多个相邻圆。如果参数太大,可能会漏检一些圆。
        param1 - 第一个方法特定参数。对于 #HOUGH_GRADIENT 和 #HOUGH_GRADIENT_ALT,它是传递给 Canny 边缘检测器的两个阈值中较高的一个(较低的阈值是其两倍小)。请注意,#HOUGH_GRADIENT_ALT 使用 #Scharr 算法计算图像导数,因此阈值通常应更高,例如 300,或者对于正常曝光和对比度图像。
        param2 - 第二个方法特定参数。对于 #HOUGH_GRADIENT,它是检测阶段圆心的累加器阈值。值越小,可能检测到的假圆越多。对应于较大累加器值的圆将首先返回。对于 #HOUGH_GRADIENT_ALT 算法,这是圆的“完美度”度量。越接近 1,算法选择的圆形状越好。在大多数情况下,0.9 应该没问题。如果您想更好地检测小圆,可以将其降低到 0.85、0.8 甚至更低。但同时也要尝试限制搜索范围 [minRadius, maxRadius] 以避免出现许多假圆。
        minRadius - 最小圆半径。
        maxRadius - 最大圆半径。如果 <= 0,则使用最大图像尺寸。如果 < 0,#HOUGH_GRADIENT 只返回圆心而不查找半径。#HOUGH_GRADIENT_ALT 总是计算圆半径。SEE: fitEllipse, minEnclosingCircle
      • HoughCircles

        public static void HoughCircles​(Mat image,
                                        Mat circles,
                                        int method,
                                        double dp,
                                        double minDist,
                                        double param1,
                                        double param2,
                                        int minRadius)
        使用霍夫变换在灰度图像中查找圆。此函数使用霍夫变换的修改版本在灰度图像中查找圆。示例:INCLUDE: snippets/imgproc_HoughLinesCircles.cpp 注意:通常,此函数能很好地检测圆心。但是,它可能无法找到正确的半径。如果您知道半径范围(minRadius 和 maxRadius),可以通过指定它们来辅助函数。或者,在使用 #HOUGH_GRADIENT 方法时,您可以将 maxRadius 设置为负数,以便只返回圆心而不搜索半径,然后使用额外的过程找到正确的半径。如果图像不是已经很柔和,稍微平滑一下图像也会有所帮助。例如,使用 7x7 核和 1.5x1.5 sigma 的 GaussianBlur() 或类似的模糊处理可能会有所帮助。
        参数
        image - 8 位单通道灰度输入图像。
        circles - 找到的圆的输出向量。每个向量编码为 3 或 4 元素的浮点向量 \((x, y, radius)\) 或 \((x, y, radius, votes)\)。
        method - 检测方法,请参阅 #HoughModes。可用方法有 #HOUGH_GRADIENT 和 #HOUGH_GRADIENT_ALT。
        dp - 累加器分辨率与图像分辨率的反比。例如,如果 dp=1,累加器与输入图像具有相同的分辨率。如果 dp=2,累加器的宽度和高度减半。对于 #HOUGH_GRADIENT_ALT,推荐值为 dp=1.5,除非需要检测非常小的圆。
        minDist - 检测到的圆心之间的最小距离。如果参数太小,除了真实的圆外,可能会错误地检测到多个相邻圆。如果参数太大,可能会漏检一些圆。
        param1 - 第一个方法特定参数。对于 #HOUGH_GRADIENT 和 #HOUGH_GRADIENT_ALT,它是传递给 Canny 边缘检测器的两个阈值中较高的一个(较低的阈值是其两倍小)。请注意,#HOUGH_GRADIENT_ALT 使用 #Scharr 算法计算图像导数,因此阈值通常应更高,例如 300,或者对于正常曝光和对比度图像。
        param2 - 第二个方法特定参数。对于 #HOUGH_GRADIENT,它是检测阶段圆心的累加器阈值。值越小,可能检测到的假圆越多。对应于较大累加器值的圆将首先返回。对于 #HOUGH_GRADIENT_ALT 算法,这是圆的“完美度”度量。越接近 1,算法选择的圆形状越好。在大多数情况下,0.9 应该没问题。如果您想更好地检测小圆,可以将其降低到 0.85、0.8 甚至更低。但同时也要尝试限制搜索范围 [minRadius, maxRadius] 以避免出现许多假圆。
        minRadius - 最小圆半径。只返回圆心而不查找半径。#HOUGH_GRADIENT_ALT 总是计算圆半径。SEE: fitEllipse, minEnclosingCircle
      • HoughCircles

        public static void HoughCircles​(Mat image,
                                        Mat circles,
                                        int method,
                                        double dp,
                                        double minDist,
                                        double param1,
                                        double param2)
        使用霍夫变换在灰度图像中查找圆。此函数使用霍夫变换的修改版本在灰度图像中查找圆。示例:INCLUDE: snippets/imgproc_HoughLinesCircles.cpp 注意:通常,此函数能很好地检测圆心。但是,它可能无法找到正确的半径。如果您知道半径范围(minRadius 和 maxRadius),可以通过指定它们来辅助函数。或者,在使用 #HOUGH_GRADIENT 方法时,您可以将 maxRadius 设置为负数,以便只返回圆心而不搜索半径,然后使用额外的过程找到正确的半径。如果图像不是已经很柔和,稍微平滑一下图像也会有所帮助。例如,使用 7x7 核和 1.5x1.5 sigma 的 GaussianBlur() 或类似的模糊处理可能会有所帮助。
        参数
        image - 8 位单通道灰度输入图像。
        circles - 找到的圆的输出向量。每个向量编码为 3 或 4 元素的浮点向量 \((x, y, radius)\) 或 \((x, y, radius, votes)\)。
        method - 检测方法,请参阅 #HoughModes。可用方法有 #HOUGH_GRADIENT 和 #HOUGH_GRADIENT_ALT。
        dp - 累加器分辨率与图像分辨率的反比。例如,如果 dp=1,累加器与输入图像具有相同的分辨率。如果 dp=2,累加器的宽度和高度减半。对于 #HOUGH_GRADIENT_ALT,推荐值为 dp=1.5,除非需要检测非常小的圆。
        minDist - 检测到的圆心之间的最小距离。如果参数太小,除了真实的圆外,可能会错误地检测到多个相邻圆。如果参数太大,可能会漏检一些圆。
        param1 - 第一个方法特定参数。对于 #HOUGH_GRADIENT 和 #HOUGH_GRADIENT_ALT,它是传递给 Canny 边缘检测器的两个阈值中较高的一个(较低的阈值是其两倍小)。请注意,#HOUGH_GRADIENT_ALT 使用 #Scharr 算法计算图像导数,因此阈值通常应更高,例如 300,或者对于正常曝光和对比度图像。
        param2 - 第二个方法特定参数。对于 #HOUGH_GRADIENT,它是检测阶段圆心的累加器阈值。值越小,可能检测到的假圆越多。对应于较大累加器值的圆将首先返回。对于 #HOUGH_GRADIENT_ALT 算法,这是圆的“完美度”度量。越接近 1,算法选择的圆形状越好。在大多数情况下,0.9 应该没问题。如果您想更好地检测小圆,可以将其降低到 0.85、0.8 甚至更低。但同时也要尝试限制搜索范围 [minRadius, maxRadius] 以避免出现许多假圆。只返回圆心而不查找半径。#HOUGH_GRADIENT_ALT 总是计算圆半径。SEE: fitEllipse, minEnclosingCircle
      • HoughCircles

        public static void HoughCircles​(Mat image,
                                        Mat circles,
                                        int method,
                                        double dp,
                                        double minDist,
                                        double param1)
        使用霍夫变换在灰度图像中查找圆。此函数使用霍夫变换的修改版本在灰度图像中查找圆。示例:INCLUDE: snippets/imgproc_HoughLinesCircles.cpp 注意:通常,此函数能很好地检测圆心。但是,它可能无法找到正确的半径。如果您知道半径范围(minRadius 和 maxRadius),可以通过指定它们来辅助函数。或者,在使用 #HOUGH_GRADIENT 方法时,您可以将 maxRadius 设置为负数,以便只返回圆心而不搜索半径,然后使用额外的过程找到正确的半径。如果图像不是已经很柔和,稍微平滑一下图像也会有所帮助。例如,使用 7x7 核和 1.5x1.5 sigma 的 GaussianBlur() 或类似的模糊处理可能会有所帮助。
        参数
        image - 8 位单通道灰度输入图像。
        circles - 找到的圆的输出向量。每个向量编码为 3 或 4 元素的浮点向量 \((x, y, radius)\) 或 \((x, y, radius, votes)\)。
        method - 检测方法,请参阅 #HoughModes。可用方法有 #HOUGH_GRADIENT 和 #HOUGH_GRADIENT_ALT。
        dp - 累加器分辨率与图像分辨率的反比。例如,如果 dp=1,累加器与输入图像具有相同的分辨率。如果 dp=2,累加器的宽度和高度减半。对于 #HOUGH_GRADIENT_ALT,推荐值为 dp=1.5,除非需要检测非常小的圆。
        minDist - 检测到的圆心之间的最小距离。如果参数太小,除了真实的圆外,可能会错误地检测到多个相邻圆。如果参数太大,可能会漏检一些圆。
        param1 - 第一个方法特定参数。对于 #HOUGH_GRADIENT 和 #HOUGH_GRADIENT_ALT,它是传递给 Canny 边缘检测器的两个阈值中较高的一个(较低的阈值是其两倍小)。请注意,#HOUGH_GRADIENT_ALT 使用 #Scharr 算法计算图像导数,因此阈值通常应更高,例如 300,或者对于正常曝光和对比度图像。检测阶段圆心的累加器阈值。值越小,可能检测到的假圆越多。对应于较大累加器值的圆将首先返回。对于 #HOUGH_GRADIENT_ALT 算法,这是圆的“完美度”度量。越接近 1,算法选择的圆形状越好。在大多数情况下,0.9 应该没问题。如果您想更好地检测小圆,可以将其降低到 0.85、0.8 甚至更低。但同时也要尝试限制搜索范围 [minRadius, maxRadius] 以避免出现许多假圆。只返回圆心而不查找半径。#HOUGH_GRADIENT_ALT 总是计算圆半径。SEE: fitEllipse, minEnclosingCircle
      • HoughCircles

        public static void HoughCircles​(Mat image,
                                        Mat circles,
                                        int method,
                                        double dp,
                                        double minDist)
        使用霍夫变换在灰度图像中查找圆。此函数使用霍夫变换的修改版本在灰度图像中查找圆。示例:INCLUDE: snippets/imgproc_HoughLinesCircles.cpp 注意:通常,此函数能很好地检测圆心。但是,它可能无法找到正确的半径。如果您知道半径范围(minRadius 和 maxRadius),可以通过指定它们来辅助函数。或者,在使用 #HOUGH_GRADIENT 方法时,您可以将 maxRadius 设置为负数,以便只返回圆心而不搜索半径,然后使用额外的过程找到正确的半径。如果图像不是已经很柔和,稍微平滑一下图像也会有所帮助。例如,使用 7x7 核和 1.5x1.5 sigma 的 GaussianBlur() 或类似的模糊处理可能会有所帮助。
        参数
        image - 8 位单通道灰度输入图像。
        circles - 找到的圆的输出向量。每个向量编码为 3 或 4 元素的浮点向量 \((x, y, radius)\) 或 \((x, y, radius, votes)\)。
        method - 检测方法,请参阅 #HoughModes。可用方法有 #HOUGH_GRADIENT 和 #HOUGH_GRADIENT_ALT。
        dp - 累加器分辨率与图像分辨率的反比。例如,如果 dp=1,累加器与输入图像具有相同的分辨率。如果 dp=2,累加器的宽度和高度减半。对于 #HOUGH_GRADIENT_ALT,推荐值为 dp=1.5,除非需要检测非常小的圆。
        minDist - 检测到的圆心之间的最小距离。如果参数太小,除了真实的圆外,可能会错误地检测到多个相邻圆。如果参数太大,可能会漏检一些圆。它是传递给 Canny 边缘检测器的两个阈值中较高的一个(较低的阈值是其两倍小)。请注意,#HOUGH_GRADIENT_ALT 使用 #Scharr 算法计算图像导数,因此阈值通常应更高,例如 300,或者对于正常曝光和对比度图像。检测阶段圆心的累加器阈值。值越小,可能检测到的假圆越多。对应于较大累加器值的圆将首先返回。对于 #HOUGH_GRADIENT_ALT 算法,这是圆的“完美度”度量。越接近 1,算法选择的圆形状越好。在大多数情况下,0.9 应该没问题。如果您想更好地检测小圆,可以将其降低到 0.85、0.8 甚至更低。但同时也要尝试限制搜索范围 [minRadius, maxRadius] 以避免出现许多假圆。只返回圆心而不查找半径。#HOUGH_GRADIENT_ALT 总是计算圆半径。SEE: fitEllipse, minEnclosingCircle
      • erode

        public static void erode​(Mat src,
                                 Mat dst,
                                 Mat kernel,
                                 Point anchor,
                                 int iterations,
                                 int borderType,
                                 Scalar borderValue)
        使用特定结构元素腐蚀图像。此函数使用指定的结构元素腐蚀源图像,该结构元素确定像素邻域的形状,在该邻域上取最小值:\(\texttt{dst} (x,y) = \min _{(x',y'): \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y')\)。该函数支持原地模式。腐蚀可以应用多次(iterations)。对于多通道图像,每个通道独立处理。
        参数
        src - 输入图像;通道数可以是任意的,但深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。
        dst - 与 src 大小和类型相同的输出图像。
        kernel - 用于腐蚀的结构元素;如果 element=Mat(),则使用 3 x 3 矩形结构元素。核可以使用 #getStructuringElement 创建。
        anchor - 元素内锚点的位置;默认值 (-1, -1) 表示锚点位于元素的中心。
        iterations - 应用腐蚀的次数。
        borderType - 像素外推法,参见 #BorderTypes。不支持 #BORDER_WRAP。
        borderValue - 常量边界情况下的边界值。SEE: dilate, morphologyEx, getStructuringElement
      • erode

        public static void erode​(Mat src,
                                 Mat dst,
                                 Mat kernel,
                                 Point anchor,
                                 int iterations,
                                 int borderType)
        使用特定结构元素腐蚀图像。此函数使用指定的结构元素腐蚀源图像,该结构元素确定像素邻域的形状,在该邻域上取最小值:\(\texttt{dst} (x,y) = \min _{(x',y'): \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y')\)。该函数支持原地模式。腐蚀可以应用多次(iterations)。对于多通道图像,每个通道独立处理。
        参数
        src - 输入图像;通道数可以是任意的,但深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。
        dst - 与 src 大小和类型相同的输出图像。
        kernel - 用于腐蚀的结构元素;如果 element=Mat(),则使用 3 x 3 矩形结构元素。核可以使用 #getStructuringElement 创建。
        anchor - 元素内锚点的位置;默认值 (-1, -1) 表示锚点位于元素的中心。
        iterations - 应用腐蚀的次数。
        borderType - 像素外推方法,请参阅 #BorderTypes。不支持 #BORDER_WRAP。SEE: dilate, morphologyEx, getStructuringElement
      • erode

        public static void erode​(Mat src,
                                 Mat dst,
                                 Mat kernel,
                                 Point anchor,
                                 int iterations)
        使用特定结构元素腐蚀图像。此函数使用指定的结构元素腐蚀源图像,该结构元素确定像素邻域的形状,在该邻域上取最小值:\(\texttt{dst} (x,y) = \min _{(x',y'): \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y')\)。该函数支持原地模式。腐蚀可以应用多次(iterations)。对于多通道图像,每个通道独立处理。
        参数
        src - 输入图像;通道数可以是任意的,但深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。
        dst - 与 src 大小和类型相同的输出图像。
        kernel - 用于腐蚀的结构元素;如果 element=Mat(),则使用 3 x 3 矩形结构元素。核可以使用 #getStructuringElement 创建。
        anchor - 元素内锚点的位置;默认值 (-1, -1) 表示锚点位于元素的中心。
        iterations - 应用腐蚀的次数。SEE: dilate, morphologyEx, getStructuringElement
      • erode

        public static void erode​(Mat src,
                                 Mat dst,
                                 Mat kernel,
                                 Point anchor)
        使用特定结构元素腐蚀图像。此函数使用指定的结构元素腐蚀源图像,该结构元素确定像素邻域的形状,在该邻域上取最小值:\(\texttt{dst} (x,y) = \min _{(x',y'): \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y')\)。该函数支持原地模式。腐蚀可以应用多次(iterations)。对于多通道图像,每个通道独立处理。
        参数
        src - 输入图像;通道数可以是任意的,但深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。
        dst - 与 src 大小和类型相同的输出图像。
        kernel - 用于腐蚀的结构元素;如果 element=Mat(),则使用 3 x 3 矩形结构元素。核可以使用 #getStructuringElement 创建。
        anchor - 元素内锚点的位置;默认值 (-1, -1) 表示锚点位于元素的中心。SEE: dilate, morphologyEx, getStructuringElement
      • erode

        public static void erode​(Mat src,
                                 Mat dst,
                                 Mat kernel)
        使用特定结构元素腐蚀图像。此函数使用指定的结构元素腐蚀源图像,该结构元素确定像素邻域的形状,在该邻域上取最小值:\(\texttt{dst} (x,y) = \min _{(x',y'): \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y')\)。该函数支持原地模式。腐蚀可以应用多次(iterations)。对于多通道图像,每个通道独立处理。
        参数
        src - 输入图像;通道数可以是任意的,但深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。
        dst - 与 src 大小和类型相同的输出图像。
        kernel - 用于腐蚀的结构元素;如果 element=Mat(),则使用 3 x 3 矩形结构元素。核可以使用 #getStructuringElement 创建。锚点位于元素的中心。SEE: dilate, morphologyEx, getStructuringElement
      • dilate

        public static void dilate​(Mat src,
                                  Mat dst,
                                  Mat kernel,
                                  Point anchor,
                                  int iterations,
                                  int borderType,
                                  Scalar borderValue)
        使用特定结构元素膨胀图像。此函数使用指定的结构元素膨胀源图像,该结构元素确定像素邻域的形状,在该邻域上取最大值:\(\texttt{dst} (x,y) = \max _{(x',y'): \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y')\)。该函数支持原地模式。膨胀可以应用多次(iterations)。对于多通道图像,每个通道独立处理。
        参数
        src - 输入图像;通道数可以是任意的,但深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。
        dst - 与 src 大小和类型相同的输出图像。
        kernel - 用于膨胀的结构元素;如果 element=Mat(),则使用 3 x 3 矩形结构元素。核可以使用 #getStructuringElement 创建。
        anchor - 元素内锚点的位置;默认值 (-1, -1) 表示锚点位于元素的中心。
        iterations - 应用膨胀的次数。
        borderType - 像素外推方法,请参阅 #BorderTypes。不支持 #BORDER_WRAP。
        borderValue - 常量边界情况下的边界值。SEE: erode, morphologyEx, getStructuringElement
      • dilate

        public static void dilate​(Mat src,
                                  Mat dst,
                                  Mat kernel,
                                  Point anchor,
                                  int iterations,
                                  int borderType)
        使用特定结构元素膨胀图像。此函数使用指定的结构元素膨胀源图像,该结构元素确定像素邻域的形状,在该邻域上取最大值:\(\texttt{dst} (x,y) = \max _{(x',y'): \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y')\)。该函数支持原地模式。膨胀可以应用多次(iterations)。对于多通道图像,每个通道独立处理。
        参数
        src - 输入图像;通道数可以是任意的,但深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。
        dst - 与 src 大小和类型相同的输出图像。
        kernel - 用于膨胀的结构元素;如果 element=Mat(),则使用 3 x 3 矩形结构元素。核可以使用 #getStructuringElement 创建。
        anchor - 元素内锚点的位置;默认值 (-1, -1) 表示锚点位于元素的中心。
        iterations - 应用膨胀的次数。
        borderType - 像素外推方法,请参阅 #BorderTypes。不支持 #BORDER_WRAP。SEE: erode, morphologyEx, getStructuringElement
      • dilate

        public static void dilate​(Mat src,
                                  Mat dst,
                                  Mat kernel,
                                  Point anchor,
                                  int iterations)
        使用特定结构元素膨胀图像。此函数使用指定的结构元素膨胀源图像,该结构元素确定像素邻域的形状,在该邻域上取最大值:\(\texttt{dst} (x,y) = \max _{(x',y'): \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y')\)。该函数支持原地模式。膨胀可以应用多次(iterations)。对于多通道图像,每个通道独立处理。
        参数
        src - 输入图像;通道数可以是任意的,但深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。
        dst - 与 src 大小和类型相同的输出图像。
        kernel - 用于膨胀的结构元素;如果 element=Mat(),则使用 3 x 3 矩形结构元素。核可以使用 #getStructuringElement 创建。
        anchor - 元素内锚点的位置;默认值 (-1, -1) 表示锚点位于元素的中心。
        iterations - 应用膨胀的次数。SEE: erode, morphologyEx, getStructuringElement
      • dilate

        public static void dilate​(Mat src,
                                  Mat dst,
                                  Mat kernel,
                                  Point anchor)
        使用特定结构元素膨胀图像。此函数使用指定的结构元素膨胀源图像,该结构元素确定像素邻域的形状,在该邻域上取最大值:\(\texttt{dst} (x,y) = \max _{(x',y'): \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y')\)。该函数支持原地模式。膨胀可以应用多次(iterations)。对于多通道图像,每个通道独立处理。
        参数
        src - 输入图像;通道数可以是任意的,但深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。
        dst - 与 src 大小和类型相同的输出图像。
        kernel - 用于膨胀的结构元素;如果 element=Mat(),则使用 3 x 3 矩形结构元素。核可以使用 #getStructuringElement 创建。
        anchor - 元素内锚点的位置;默认值 (-1, -1) 表示锚点位于元素的中心。SEE: erode, morphologyEx, getStructuringElement
      • dilate

        public static void dilate​(Mat src,
                                  Mat dst,
                                  Mat kernel)
        使用特定结构元素膨胀图像。此函数使用指定的结构元素膨胀源图像,该结构元素确定像素邻域的形状,在该邻域上取最大值:\(\texttt{dst} (x,y) = \max _{(x',y'): \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y')\)。该函数支持原地模式。膨胀可以应用多次(iterations)。对于多通道图像,每个通道独立处理。
        参数
        src - 输入图像;通道数可以是任意的,但深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。
        dst - 与 src 大小和类型相同的输出图像。
        kernel - 用于膨胀的结构元素;如果 element=Mat(),则使用 3 x 3 矩形结构元素。核可以使用 #getStructuringElement 创建。锚点位于元素的中心。SEE: erode, morphologyEx, getStructuringElement
      • morphologyEx

        public static void morphologyEx​(Mat src,
                                        Mat dst,
                                        int op,
                                        Mat kernel,
                                        Point anchor,
                                        int iterations,
                                        int borderType,
                                        Scalar borderValue)
        执行高级形态学变换。函数 cv::morphologyEx 可以使用腐蚀和膨胀作为基本操作来执行高级形态学变换。任何操作都可以在原地完成。对于多通道图像,每个通道独立处理。
        参数
        src - 源图像。通道数可以是任意的。深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。
        dst - 目标图像,与源图像具有相同的大小和类型。
        op - 形态学操作类型,请参阅 #MorphTypes。
        kernel - 结构元素。可以使用 #getStructuringElement 创建。
        anchor - 核内的锚点位置。负值表示锚点位于核的中心。
        iterations - 腐蚀和膨胀应用的次数。
        borderType - 像素外推方法,请参阅 #BorderTypes。不支持 #BORDER_WRAP。
        borderValue - 常量边界情况下的边界值。默认值具有特殊含义。SEE: dilate, erode, getStructuringElement 注意:迭代次数是腐蚀或膨胀操作将应用的次数。例如,两次迭代的开运算(#MORPH_OPEN)等效于依次应用:腐蚀 -> 腐蚀 -> 膨胀 -> 膨胀(而不是腐蚀 -> 膨胀 -> 腐蚀 -> 膨胀)。
      • morphologyEx

        public static void morphologyEx​(Mat src,
                                        Mat dst,
                                        int op,
                                        Mat kernel,
                                        Point anchor,
                                        int iterations,
                                        int borderType)
        执行高级形态学变换。函数 cv::morphologyEx 可以使用腐蚀和膨胀作为基本操作来执行高级形态学变换。任何操作都可以在原地完成。对于多通道图像,每个通道独立处理。
        参数
        src - 源图像。通道数可以是任意的。深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。
        dst - 目标图像,与源图像具有相同的大小和类型。
        op - 形态学操作类型,请参阅 #MorphTypes。
        kernel - 结构元素。可以使用 #getStructuringElement 创建。
        anchor - 核内的锚点位置。负值表示锚点位于核的中心。
        iterations - 腐蚀和膨胀应用的次数。
        borderType - 像素外推方法,请参阅 #BorderTypes。不支持 #BORDER_WRAP。含义。SEE: dilate, erode, getStructuringElement 注意:迭代次数是腐蚀或膨胀操作将应用的次数。例如,两次迭代的开运算(#MORPH_OPEN)等效于依次应用:腐蚀 -> 腐蚀 -> 膨胀 -> 膨胀(而不是腐蚀 -> 膨胀 -> 腐蚀 -> 膨胀)。
      • morphologyEx

        public static void morphologyEx​(Mat src,
                                        Mat dst,
                                        int op,
                                        Mat kernel,
                                        Point anchor,
                                        int iterations)
        执行高级形态学变换。函数 cv::morphologyEx 可以使用腐蚀和膨胀作为基本操作来执行高级形态学变换。任何操作都可以在原地完成。对于多通道图像,每个通道独立处理。
        参数
        src - 源图像。通道数可以是任意的。深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。
        dst - 目标图像,与源图像具有相同的大小和类型。
        op - 形态学操作类型,请参阅 #MorphTypes。
        kernel - 结构元素。可以使用 #getStructuringElement 创建。
        anchor - 核内的锚点位置。负值表示锚点位于核的中心。
        iterations - 腐蚀和膨胀应用的次数。含义。SEE: dilate, erode, getStructuringElement 注意:迭代次数是腐蚀或膨胀操作将应用的次数。例如,两次迭代的开运算(#MORPH_OPEN)等效于依次应用:腐蚀 -> 腐蚀 -> 膨胀 -> 膨胀(而不是腐蚀 -> 膨胀 -> 腐蚀 -> 膨胀)。
      • morphologyEx

        public static void morphologyEx​(Mat src,
                                        Mat dst,
                                        int op,
                                        Mat kernel,
                                        Point anchor)
        执行高级形态学变换。函数 cv::morphologyEx 可以使用腐蚀和膨胀作为基本操作来执行高级形态学变换。任何操作都可以在原地完成。对于多通道图像,每个通道独立处理。
        参数
        src - 源图像。通道数可以是任意的。深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。
        dst - 目标图像,与源图像具有相同的大小和类型。
        op - 形态学操作类型,请参阅 #MorphTypes。
        kernel - 结构元素。可以使用 #getStructuringElement 创建。
        anchor - 核内的锚点位置。负值表示锚点位于核的中心。含义。SEE: dilate, erode, getStructuringElement 注意:迭代次数是腐蚀或膨胀操作将应用的次数。例如,两次迭代的开运算(#MORPH_OPEN)等效于依次应用:腐蚀 -> 腐蚀 -> 膨胀 -> 膨胀(而不是腐蚀 -> 膨胀 -> 腐蚀 -> 膨胀)。
      • morphologyEx

        public static void morphologyEx​(Mat src,
                                        Mat dst,
                                        int op,
                                        Mat kernel)
        执行高级形态学变换。函数 cv::morphologyEx 可以使用腐蚀和膨胀作为基本操作来执行高级形态学变换。任何操作都可以在原地完成。对于多通道图像,每个通道独立处理。
        参数
        src - 源图像。通道数可以是任意的。深度应为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。
        dst - 目标图像,与源图像具有相同的大小和类型。
        op - 形态学操作类型,请参阅 #MorphTypes。
        kernel - 结构元素。可以使用 #getStructuringElement 创建。核中心。含义。SEE: dilate, erode, getStructuringElement 注意:迭代次数是腐蚀或膨胀操作将应用的次数。例如,两次迭代的开运算(#MORPH_OPEN)等效于依次应用:腐蚀 -> 腐蚀 -> 膨胀 -> 膨胀(而不是腐蚀 -> 膨胀 -> 腐蚀 -> 膨胀)。
      • resize

        public static void resize​(Mat src,
                                  Mat dst,
                                  Size dsize,
                                  double fx,
                                  double fy,
                                  int interpolation)
        调整图像大小。函数 resize 将图像 src 缩小或放大到指定大小。请注意,不考虑初始 dst 类型或大小。相反,大小和类型是从 srcdsizefxfy 派生出来的。如果您想调整 src 的大小以适应预创建的 dst,可以按如下方式调用函数: // explicitly specify dsize=dst.size(); fx and fy will be computed from that. resize(src, dst, dst.size(), 0, 0, interpolation); 如果您想将图像在每个方向上以 2 倍因子进行抽样,可以这样调用函数: // specify fx and fy and let the function compute the destination image size. resize(src, dst, Size(), 0.5, 0.5, interpolation); 缩小图像时,通常使用 #INTER_AREA 插值效果最佳;而放大图像时,通常使用 #INTER_CUBIC(慢)或 #INTER_LINEAR(更快但看起来仍然不错)插值效果最佳。
        参数
        src - 输入图像。
        dst - 输出图像;它具有 dsize 大小(当它非零时)或从 src.size()、fx 和 fy 计算得到的大小;dst 的类型与 src 相同。
        dsize - 输出图像大小;如果为零(Python 中的 None),则计算为:\(\texttt{dsize = Size(round(fx*src.cols), round(fy*src.rows))}\)。dsize 或 fx 和 fy 必须都非零。
        fx - 沿水平轴的比例因子;当它等于 0 时,计算为 \(\texttt{(double)dsize.width/src.cols}\)。
        fy - 沿垂直轴的比例因子;当它等于 0 时,计算为 \(\texttt{(double)dsize.height/src.rows}\)。
        interpolation - 插值方法,请参阅 #InterpolationFlags。SEE: warpAffine, warpPerspective, remap
      • resize

        public static void resize​(Mat src,
                                  Mat dst,
                                  Size dsize,
                                  double fx,
                                  double fy)
        调整图像大小。函数 resize 将图像 src 缩小或放大到指定大小。请注意,不考虑初始 dst 类型或大小。相反,大小和类型是从 srcdsizefxfy 派生出来的。如果您想调整 src 的大小以适应预创建的 dst,可以按如下方式调用函数: // explicitly specify dsize=dst.size(); fx and fy will be computed from that. resize(src, dst, dst.size(), 0, 0, interpolation); 如果您想将图像在每个方向上以 2 倍因子进行抽样,可以这样调用函数: // specify fx and fy and let the function compute the destination image size. resize(src, dst, Size(), 0.5, 0.5, interpolation); 缩小图像时,通常使用 #INTER_AREA 插值效果最佳;而放大图像时,通常使用 #INTER_CUBIC(慢)或 #INTER_LINEAR(更快但看起来仍然不错)插值效果最佳。
        参数
        src - 输入图像。
        dst - 输出图像;它具有 dsize 大小(当它非零时)或从 src.size()、fx 和 fy 计算得到的大小;dst 的类型与 src 相同。
        dsize - 输出图像大小;如果为零(Python 中的 None),则计算为:\(\texttt{dsize = Size(round(fx*src.cols), round(fy*src.rows))}\)。dsize 或 fx 和 fy 必须都非零。
        fx - 沿水平轴的比例因子;当它等于 0 时,计算为 \(\texttt{(double)dsize.width/src.cols}\)。
        fy - 沿垂直轴的比例因子;当它等于 0 时,计算为 \(\texttt{(double)dsize.height/src.rows}\)。SEE: warpAffine, warpPerspective, remap
      • resize

        public static void resize​(Mat src,
                                  Mat dst,
                                  Size dsize,
                                  double fx)
        调整图像大小。函数 resize 将图像 src 缩小或放大到指定大小。请注意,不考虑初始 dst 类型或大小。相反,大小和类型是从 srcdsizefxfy 派生出来的。如果您想调整 src 的大小以适应预创建的 dst,可以按如下方式调用函数: // explicitly specify dsize=dst.size(); fx and fy will be computed from that. resize(src, dst, dst.size(), 0, 0, interpolation); 如果您想将图像在每个方向上以 2 倍因子进行抽样,可以这样调用函数: // specify fx and fy and let the function compute the destination image size. resize(src, dst, Size(), 0.5, 0.5, interpolation); 缩小图像时,通常使用 #INTER_AREA 插值效果最佳;而放大图像时,通常使用 #INTER_CUBIC(慢)或 #INTER_LINEAR(更快但看起来仍然不错)插值效果最佳。
        参数
        src - 输入图像。
        dst - 输出图像;它具有 dsize 大小(当它非零时)或从 src.size()、fx 和 fy 计算得到的大小;dst 的类型与 src 相同。
        dsize - 输出图像大小;如果为零(Python 中的 None),则计算为:\(\texttt{dsize = Size(round(fx*src.cols), round(fy*src.rows))}\)。dsize 或 fx 和 fy 必须都非零。
        fx - 沿水平轴的比例因子;当它等于 0 时,计算为 \(\texttt{(double)dsize.width/src.cols}\) \(\texttt{(double)dsize.height/src.rows}\)。SEE: warpAffine, warpPerspective, remap
      • resize

        public static void resize​(Mat src,
                                  Mat dst,
                                  Size dsize)
        调整图像大小。函数 resize 将图像 src 缩小或放大到指定大小。请注意,不考虑初始 dst 类型或大小。相反,大小和类型是从 srcdsizefxfy 派生出来的。如果您想调整 src 的大小以适应预创建的 dst,可以按如下方式调用函数: // explicitly specify dsize=dst.size(); fx and fy will be computed from that. resize(src, dst, dst.size(), 0, 0, interpolation); 如果您想将图像在每个方向上以 2 倍因子进行抽样,可以这样调用函数: // specify fx and fy and let the function compute the destination image size. resize(src, dst, Size(), 0.5, 0.5, interpolation); 缩小图像时,通常使用 #INTER_AREA 插值效果最佳;而放大图像时,通常使用 #INTER_CUBIC(慢)或 #INTER_LINEAR(更快但看起来仍然不错)插值效果最佳。
        参数
        src - 输入图像。
        dst - 输出图像;它具有 dsize 大小(当它非零时)或从 src.size()、fx 和 fy 计算得到的大小;dst 的类型与 src 相同。
        dsize - 输出图像大小;如果为零(Python 中的 None),则计算为:\(\texttt{dsize = Size(round(fx*src.cols), round(fy*src.rows))}\)。dsize 或 fx 和 fy 必须都非零。\(\texttt{(double)dsize.width/src.cols}\) \(\texttt{(double)dsize.height/src.rows}\)。SEE: warpAffine, warpPerspective, remap
      • warpAffine

        public static void warpAffine​(Mat src,
                                      Mat dst,
                                      Mat M,
                                      Size dsize,
                                      int flags,
                                      int borderMode,
                                      Scalar borderValue)
        对图像应用仿射变换。当设置了标志 #WARP_INVERSE_MAP 时,函数 warpAffine 使用指定的矩阵变换源图像:\(\texttt{dst} (x,y) = \texttt{src} ( \texttt{M} _{11} x + \texttt{M} _{12} y + \texttt{M} _{13}, \texttt{M} _{21} x + \texttt{M} _{22} y + \texttt{M} _{23})\)。否则,变换首先通过 #invertAffineTransform 反转,然后将其替换 M 放入上述公式中。此函数不能原地操作。
        参数
        src - 输入图像。
        dst - 输出图像,具有 dsize 大小且与 src 类型相同。
        M - \(2\times 3\) 变换矩阵。
        dsize - 输出图像的大小。
        flags - 插值方法(参见 #InterpolationFlags)和可选标志 #WARP_INVERSE_MAP 的组合,表示 M 是逆变换(\(\texttt{dst}\rightarrow\texttt{src}\))。
        borderMode - 像素外推方法(参见 #BorderTypes);当 borderMode=#BORDER_TRANSPARENT 时,表示目标图像中对应于源图像“异常值”的像素不被函数修改。
        borderValue - 常量边界情况下的使用值;默认情况下为 0。SEE: warpPerspective, resize, remap, getRectSubPix, transform
      • warpAffine

        public static void warpAffine​(Mat src,
                                      Mat dst,
                                      Mat M,
                                      Size dsize,
                                      int flags,
                                      int borderMode)
        对图像应用仿射变换。当设置了标志 #WARP_INVERSE_MAP 时,函数 warpAffine 使用指定的矩阵变换源图像:\(\texttt{dst} (x,y) = \texttt{src} ( \texttt{M} _{11} x + \texttt{M} _{12} y + \texttt{M} _{13}, \texttt{M} _{21} x + \texttt{M} _{22} y + \texttt{M} _{23})\)。否则,变换首先通过 #invertAffineTransform 反转,然后将其替换 M 放入上述公式中。此函数不能原地操作。
        参数
        src - 输入图像。
        dst - 输出图像,具有 dsize 大小且与 src 类型相同。
        M - \(2\times 3\) 变换矩阵。
        dsize - 输出图像的大小。
        flags - 插值方法(参见 #InterpolationFlags)和可选标志 #WARP_INVERSE_MAP 的组合,表示 M 是逆变换(\(\texttt{dst}\rightarrow\texttt{src}\))。
        borderMode - 像素外推方法(参见 #BorderTypes);当 borderMode=#BORDER_TRANSPARENT 时,表示目标图像中对应于源图像“异常值”的像素不被函数修改。SEE: warpPerspective, resize, remap, getRectSubPix, transform
      • warpAffine

        public static void warpAffine​(Mat src,
                                      Mat dst,
                                      Mat M,
                                      Size dsize,
                                      int flags)
        对图像应用仿射变换。当设置了标志 #WARP_INVERSE_MAP 时,函数 warpAffine 使用指定的矩阵变换源图像:\(\texttt{dst} (x,y) = \texttt{src} ( \texttt{M} _{11} x + \texttt{M} _{12} y + \texttt{M} _{13}, \texttt{M} _{21} x + \texttt{M} _{22} y + \texttt{M} _{23})\)。否则,变换首先通过 #invertAffineTransform 反转,然后将其替换 M 放入上述公式中。此函数不能原地操作。
        参数
        src - 输入图像。
        dst - 输出图像,具有 dsize 大小且与 src 类型相同。
        M - \(2\times 3\) 变换矩阵。
        dsize - 输出图像的大小。
        flags - 插值方法(参见 #InterpolationFlags)和可选标志 #WARP_INVERSE_MAP 的组合,表示 M 是逆变换(\(\texttt{dst}\rightarrow\texttt{src}\))。borderMode=#BORDER_TRANSPARENT,表示目标图像中对应于源图像“异常值”的像素不被函数修改。SEE: warpPerspective, resize, remap, getRectSubPix, transform
      • warpAffine

        public static void warpAffine​(Mat src,
                                      Mat dst,
                                      Mat M,
                                      Size dsize)
        对图像应用仿射变换。当设置了标志 #WARP_INVERSE_MAP 时,函数 warpAffine 使用指定的矩阵变换源图像:\(\texttt{dst} (x,y) = \texttt{src} ( \texttt{M} _{11} x + \texttt{M} _{12} y + \texttt{M} _{13}, \texttt{M} _{21} x + \texttt{M} _{22} y + \texttt{M} _{23})\)。否则,变换首先通过 #invertAffineTransform 反转,然后将其替换 M 放入上述公式中。此函数不能原地操作。
        参数
        src - 输入图像。
        dst - 输出图像,具有 dsize 大小且与 src 类型相同。
        M - \(2\times 3\) 变换矩阵。
        dsize - 输出图像的大小。标志 #WARP_INVERSE_MAP,表示 M 是逆变换(\(\texttt{dst}\rightarrow\texttt{src}\))。borderMode=#BORDER_TRANSPARENT,表示目标图像中对应于源图像“异常值”的像素不被函数修改。SEE: warpPerspective, resize, remap, getRectSubPix, transform
      • warpPerspective

        public static void warpPerspective​(Mat src,
                                           Mat dst,
                                           Mat M,
                                           Size dsize,
                                           int flags,
                                           int borderMode,
                                           Scalar borderValue)
        对图像应用透视变换。当设置了标志 #WARP_INVERSE_MAP 时,函数 warpPerspective 使用指定的矩阵变换源图像:\(\texttt{dst} (x,y) = \texttt{src} \left ( \frac{M_{11} x + M_{12} y + M_{13}}{M_{31} x + M_{32} y + M_{33}} , \frac{M_{21} x + M_{22} y + M_{23}}{M_{31} x + M_{32} y + M_{33}} \right )\)。否则,变换首先通过 invert 反转,然后将其替换 M 放入上述公式中。此函数不能原地操作。
        参数
        src - 输入图像。
        dst - 输出图像,具有 dsize 大小且与 src 类型相同。
        M - \(3\times 3\) 变换矩阵。
        dsize - 输出图像的大小。
        flags - 插值方法(#INTER_LINEAR 或 #INTER_NEAREST)和可选标志 #WARP_INVERSE_MAP 的组合,该标志将 M 设置为逆变换(\(\texttt{dst}\rightarrow\texttt{src}\))。
        borderMode - 像素外推方法(#BORDER_CONSTANT 或 #BORDER_REPLICATE)。
        borderValue - 常量边界情况下的使用值;默认情况下为 0。SEE: warpAffine, resize, remap, getRectSubPix, perspectiveTransform
      • warpPerspective

        public static void warpPerspective​(Mat src,
                                           Mat dst,
                                           Mat M,
                                           Size dsize,
                                           int flags,
                                           int borderMode)
        对图像应用透视变换。当设置了标志 #WARP_INVERSE_MAP 时,函数 warpPerspective 使用指定的矩阵变换源图像:\(\texttt{dst} (x,y) = \texttt{src} \left ( \frac{M_{11} x + M_{12} y + M_{13}}{M_{31} x + M_{32} y + M_{33}} , \frac{M_{21} x + M_{22} y + M_{23}}{M_{31} x + M_{32} y + M_{33}} \right )\)。否则,变换首先通过 invert 反转,然后将其替换 M 放入上述公式中。此函数不能原地操作。
        参数
        src - 输入图像。
        dst - 输出图像,具有 dsize 大小且与 src 类型相同。
        M - \(3\times 3\) 变换矩阵。
        dsize - 输出图像的大小。
        flags - 插值方法(#INTER_LINEAR 或 #INTER_NEAREST)和可选标志 #WARP_INVERSE_MAP 的组合,该标志将 M 设置为逆变换(\(\texttt{dst}\rightarrow\texttt{src}\))。
        borderMode - 像素外推方法(#BORDER_CONSTANT 或 #BORDER_REPLICATE)。SEE: warpAffine, resize, remap, getRectSubPix, perspectiveTransform
      • warpPerspective

        public static void warpPerspective​(Mat src,
                                           Mat dst,
                                           Mat M,
                                           Size dsize,
                                           int flags)
        对图像应用透视变换。当设置了标志 #WARP_INVERSE_MAP 时,函数 warpPerspective 使用指定的矩阵变换源图像:\(\texttt{dst} (x,y) = \texttt{src} \left ( \frac{M_{11} x + M_{12} y + M_{13}}{M_{31} x + M_{32} y + M_{33}} , \frac{M_{21} x + M_{22} y + M_{23}}{M_{31} x + M_{32} y + M_{33}} \right )\)。否则,变换首先通过 invert 反转,然后将其替换 M 放入上述公式中。此函数不能原地操作。
        参数
        src - 输入图像。
        dst - 输出图像,具有 dsize 大小且与 src 类型相同。
        M - \(3\times 3\) 变换矩阵。
        dsize - 输出图像的大小。
        flags - 插值方法(#INTER_LINEAR 或 #INTER_NEAREST)和可选标志 #WARP_INVERSE_MAP 的组合,该标志将 M 设置为逆变换(\(\texttt{dst}\rightarrow\texttt{src}\))。SEE: warpAffine, resize, remap, getRectSubPix, perspectiveTransform
      • warpPerspective

        public static void warpPerspective​(Mat src,
                                           Mat dst,
                                           Mat M,
                                           Size dsize)
        对图像应用透视变换。当设置了标志 #WARP_INVERSE_MAP 时,函数 warpPerspective 使用指定的矩阵变换源图像:\(\texttt{dst} (x,y) = \texttt{src} \left ( \frac{M_{11} x + M_{12} y + M_{13}}{M_{31} x + M_{32} y + M_{33}} , \frac{M_{21} x + M_{22} y + M_{23}}{M_{31} x + M_{32} y + M_{33}} \right )\)。否则,变换首先通过 invert 反转,然后将其替换 M 放入上述公式中。此函数不能原地操作。
        参数
        src - 输入图像。
        dst - 输出图像,具有 dsize 大小且与 src 类型相同。
        M - \(3\times 3\) 变换矩阵。
        dsize - 输出图像的大小。可选标志 #WARP_INVERSE_MAP,该标志将 M 设置为逆变换(\(\texttt{dst}\rightarrow\texttt{src}\))。SEE: warpAffine, resize, remap, getRectSubPix, perspectiveTransform
      • remap

        public static void remap​(Mat src,
                                 Mat dst,
                                 Mat map1,
                                 Mat map2,
                                 int interpolation,
                                 int borderMode,
                                 Scalar borderValue)
        对图像应用通用几何变换。函数 remap 使用指定的映射变换源图像:\(\texttt{dst} (x,y) = \texttt{src} (map_x(x,y),map_y(x,y))\),当带有 WARP_RELATIVE_MAP 标志时:\(\texttt{dst} (x,y) = \texttt{src} (x+map_x(x,y),y+map_y(x,y))\),其中非整数坐标的像素值使用可用的插值方法之一计算。\(map_x\) 和 \(map_y\) 可以分别编码为 \(map_1\) 和 \(map_2\) 中的单独浮点映射,或者 \(map_1\) 中交错的 \((x,y)\) 浮点映射,或者通过使用 #convertMaps 创建的定点映射。将映射从浮点表示转换为定点表示的原因是它们可以显著加速(约 2 倍)重映射操作。在转换后的情况下,\(map_1\) 包含对 (cvFloor(x), cvFloor(y)),\(map_2\) 包含插值系数表中的索引。此函数不能原地操作。
        参数
        src - 源图像。
        dst - 目标图像。它与 map1 具有相同的大小,并且与 src 具有相同的类型。
        map1 - 第一个映射,可以是 (x,y) 点或仅 x 值,类型为 CV_16SC2、CV_32FC1 或 CV_32FC2。有关将浮点表示转换为定点以提高速度的详细信息,请参阅 #convertMaps。
        map2 - 第二个 y 值映射,类型分别为 CV_16UC1、CV_32FC1 或无(如果 map1 是 (x,y) 点,则为空映射)。
        interpolation - 插值方法(参见 #InterpolationFlags)。此函数不支持 #INTER_AREA #INTER_LINEAR_EXACT 和 #INTER_NEAREST_EXACT 方法。额外标志 WARP_RELATIVE_MAP 可以与插值方法进行或运算(例如 INTER_LINEAR | WARP_RELATIVE_MAP)。
        borderMode - 像素外推方法(参见 #BorderTypes)。当 borderMode=#BORDER_TRANSPARENT 时,表示目标图像中对应于源图像“异常值”的像素不被函数修改。
        borderValue - 常量边界情况下的使用值。默认情况下为 0。注意:由于当前的实现限制,输入和输出图像的大小应小于 32767x32767。
      • remap

        public static void remap​(Mat src,
                                 Mat dst,
                                 Mat map1,
                                 Mat map2,
                                 int interpolation,
                                 int borderMode)
        对图像应用通用几何变换。函数 remap 使用指定的映射变换源图像:\(\texttt{dst} (x,y) = \texttt{src} (map_x(x,y),map_y(x,y))\),当带有 WARP_RELATIVE_MAP 标志时:\(\texttt{dst} (x,y) = \texttt{src} (x+map_x(x,y),y+map_y(x,y))\),其中非整数坐标的像素值使用可用的插值方法之一计算。\(map_x\) 和 \(map_y\) 可以分别编码为 \(map_1\) 和 \(map_2\) 中的单独浮点映射,或者 \(map_1\) 中交错的 \((x,y)\) 浮点映射,或者通过使用 #convertMaps 创建的定点映射。将映射从浮点表示转换为定点表示的原因是它们可以显著加速(约 2 倍)重映射操作。在转换后的情况下,\(map_1\) 包含对 (cvFloor(x), cvFloor(y)),\(map_2\) 包含插值系数表中的索引。此函数不能原地操作。
        参数
        src - 源图像。
        dst - 目标图像。它与 map1 具有相同的大小,并且与 src 具有相同的类型。
        map1 - 第一个映射,可以是 (x,y) 点或仅 x 值,类型为 CV_16SC2、CV_32FC1 或 CV_32FC2。有关将浮点表示转换为定点以提高速度的详细信息,请参阅 #convertMaps。
        map2 - 第二个 y 值映射,类型分别为 CV_16UC1、CV_32FC1 或无(如果 map1 是 (x,y) 点,则为空映射)。
        interpolation - 插值方法(参见 #InterpolationFlags)。此函数不支持 #INTER_AREA #INTER_LINEAR_EXACT 和 #INTER_NEAREST_EXACT 方法。额外标志 WARP_RELATIVE_MAP 可以与插值方法进行或运算(例如 INTER_LINEAR | WARP_RELATIVE_MAP)。
        borderMode - 像素外推方法(参见 #BorderTypes)。当 borderMode=#BORDER_TRANSPARENT 时,表示目标图像中对应于源图像“异常值”的像素不被函数修改。注意:由于当前的实现限制,输入和输出图像的大小应小于 32767x32767。
      • remap

        public static void remap​(Mat src,
                                 Mat dst,
                                 Mat map1,
                                 Mat map2,
                                 int interpolation)
        对图像应用通用几何变换。函数 remap 使用指定的映射变换源图像:\(\texttt{dst} (x,y) = \texttt{src} (map_x(x,y),map_y(x,y))\),当带有 WARP_RELATIVE_MAP 标志时:\(\texttt{dst} (x,y) = \texttt{src} (x+map_x(x,y),y+map_y(x,y))\),其中非整数坐标的像素值使用可用的插值方法之一计算。\(map_x\) 和 \(map_y\) 可以分别编码为 \(map_1\) 和 \(map_2\) 中的单独浮点映射,或者 \(map_1\) 中交错的 \((x,y)\) 浮点映射,或者通过使用 #convertMaps 创建的定点映射。将映射从浮点表示转换为定点表示的原因是它们可以显著加速(约 2 倍)重映射操作。在转换后的情况下,\(map_1\) 包含对 (cvFloor(x), cvFloor(y)),\(map_2\) 包含插值系数表中的索引。此函数不能原地操作。
        参数
        src - 源图像。
        dst - 目标图像。它与 map1 具有相同的大小,并且与 src 具有相同的类型。
        map1 - 第一个映射,可以是 (x,y) 点或仅 x 值,类型为 CV_16SC2、CV_32FC1 或 CV_32FC2。有关将浮点表示转换为定点以提高速度的详细信息,请参阅 #convertMaps。
        map2 - 第二个 y 值映射,类型分别为 CV_16UC1、CV_32FC1 或无(如果 map1 是 (x,y) 点,则为空映射)。
        interpolation - 插值方法(参见 #InterpolationFlags)。此函数不支持 #INTER_AREA #INTER_LINEAR_EXACT 和 #INTER_NEAREST_EXACT 方法。额外标志 WARP_RELATIVE_MAP 可以与插值方法进行或运算(例如 INTER_LINEAR | WARP_RELATIVE_MAP)。borderMode=#BORDER_TRANSPARENT,表示目标图像中对应于源图像“异常值”的像素不被函数修改。注意:由于当前的实现限制,输入和输出图像的大小应小于 32767x32767。
      • convertMaps

        public static void convertMaps​(Mat map1,
                                       Mat map2,
                                       Mat dstmap1,
                                       Mat dstmap2,
                                       int dstmap1type,
                                       boolean nninterpolation)
        将图像变换映射从一种表示形式转换为另一种表示形式。此函数将用于 remap 的一对映射从一种表示形式转换为另一种。支持以下选项 ( (map1.type(), map2.type()) \(\rightarrow\) (dstmap1.type(), dstmap2.type()) ):
        • \(\texttt{(CV_32FC1, CV_32FC1)} \rightarrow \texttt{(CV_16SC2, CV_16UC1)}\)。这是最常用的转换操作,其中原始浮点映射(参见 #remap)被转换为更紧凑、更快的定点表示。第一个输出数组包含四舍五入的坐标,第二个数组(仅当 nninterpolation=false 时创建)包含插值表中的索引。
        • \(\texttt{(CV_32FC2)} \rightarrow \texttt{(CV_16SC2, CV_16UC1)}\)。与上述相同,但原始映射存储在一个 2 通道矩阵中。
        • 反向转换。显然,重建的浮点映射不会与原始映射完全相同。
        参数
        map1 - 第一个输入映射,类型为 CV_16SC2、CV_32FC1 或 CV_32FC2。
        map2 - 第二个输入映射,类型分别为 CV_16UC1、CV_32FC1 或无(如果 map1 是 (x,y) 点,则为空矩阵)。
        dstmap1 - 第一个输出映射,类型为 dstmap1type,大小与 src 相同。
        dstmap2 - 第二个输出映射。
        dstmap1type - 第一个输出映射的类型,应为 CV_16SC2、CV_32FC1 或 CV_32FC2。
        nninterpolation - 标志,指示定点映射是用于最近邻插值还是更复杂的插值。SEE: remap, undistort, initUndistortRectifyMap
      • convertMaps

        public static void convertMaps​(Mat map1,
                                       Mat map2,
                                       Mat dstmap1,
                                       Mat dstmap2,
                                       int dstmap1type)
        将图像变换映射从一种表示形式转换为另一种表示形式。此函数将用于 remap 的一对映射从一种表示形式转换为另一种。支持以下选项 ( (map1.type(), map2.type()) \(\rightarrow\) (dstmap1.type(), dstmap2.type()) ):
        • \(\texttt{(CV_32FC1, CV_32FC1)} \rightarrow \texttt{(CV_16SC2, CV_16UC1)}\)。这是最常用的转换操作,其中原始浮点映射(参见 #remap)被转换为更紧凑、更快的定点表示。第一个输出数组包含四舍五入的坐标,第二个数组(仅当 nninterpolation=false 时创建)包含插值表中的索引。
        • \(\texttt{(CV_32FC2)} \rightarrow \texttt{(CV_16SC2, CV_16UC1)}\)。与上述相同,但原始映射存储在一个 2 通道矩阵中。
        • 反向转换。显然,重建的浮点映射不会与原始映射完全相同。
        参数
        map1 - 第一个输入映射,类型为 CV_16SC2、CV_32FC1 或 CV_32FC2。
        map2 - 第二个输入映射,类型分别为 CV_16UC1、CV_32FC1 或无(如果 map1 是 (x,y) 点,则为空矩阵)。
        dstmap1 - 第一个输出映射,类型为 dstmap1type,大小与 src 相同。
        dstmap2 - 第二个输出映射。
        dstmap1type - 第一个输出映射的类型,应为 CV_16SC2、CV_32FC1 或 CV_32FC2。最近邻或更复杂的插值。SEE: remap, undistort, initUndistortRectifyMap
      • getRotationMatrix2D

        public static Mat getRotationMatrix2D​(Point center,
                                              double angle,
                                              double scale)
        计算 2D 旋转的仿射矩阵。此函数计算以下矩阵:\(\begin{bmatrix} \alpha & \beta & (1- \alpha ) \cdot \texttt{center.x} - \beta \cdot \texttt{center.y} \\ - \beta & \alpha & \beta \cdot \texttt{center.x} + (1- \alpha ) \cdot \texttt{center.y} \end{bmatrix}\),其中 \(\begin{array}{l} \alpha = \texttt{scale} \cdot \cos \texttt{angle} , \\ \beta = \texttt{scale} \cdot \sin \texttt{angle} \end{array}\)。变换将旋转中心映射到自身。如果这不是目标,请调整偏移。
        参数
        center - 源图像中的旋转中心。
        angle - 旋转角度(度)。正值表示逆时针旋转(坐标原点假定为左上角)。
        scale - 各向同性比例因子。SEE: getAffineTransform, warpAffine, transform
        返回
        自动生成
      • invertAffineTransform

        public static void invertAffineTransform​(Mat M,
                                                 Mat iM)
        反转仿射变换。此函数计算由 \(2 \times 3\) 矩阵 M 表示的逆仿射变换:\(\begin{bmatrix} a_{11} & a_{12} & b_1 \\ a_{21} & a_{22} & b_2 \end{bmatrix}\)。结果也是一个与 M 类型相同的 \(2 \times 3\) 矩阵。
        参数
        M - 原始仿射变换。
        iM - 输出逆仿射变换。
      • getPerspectiveTransform

        public static Mat getPerspectiveTransform​(Mat src,
                                                  Mat dst,
                                                  int solveMethod)
        从四对对应点计算透视变换。此函数计算一个 \(3 \times 3\) 的透视变换矩阵,使得:\(\begin{bmatrix} t_i x'_i \\ t_i y'_i \\ t_i \end{bmatrix} = \texttt{map_matrix} \cdot \begin{bmatrix} x_i \\ y_i \\ 1 \end{bmatrix}\),其中 \(dst(i)=(x'_i,y'_i), src(i)=(x_i, y_i), i=0,1,2,3\)
        参数
        src - 源图像中四边形顶点的坐标。
        dst - 目标图像中对应四边形顶点的坐标。
        solveMethod - 传递给 cv::solve (#DecompTypes) 的方法。SEE: findHomography, warpPerspective, perspectiveTransform
        返回
        自动生成
      • getPerspectiveTransform

        public static Mat getPerspectiveTransform​(Mat src,
                                                  Mat dst)
        从四对对应点计算透视变换。此函数计算一个 \(3 \times 3\) 的透视变换矩阵,使得:\(\begin{bmatrix} t_i x'_i \\ t_i y'_i \\ t_i \end{bmatrix} = \texttt{map_matrix} \cdot \begin{bmatrix} x_i \\ y_i \\ 1 \end{bmatrix}\),其中 \(dst(i)=(x'_i,y'_i), src(i)=(x_i, y_i), i=0,1,2,3\)
        参数
        src - 源图像中四边形顶点的坐标。
        dst - 目标图像中对应四边形顶点的坐标。SEE: findHomography, warpPerspective, perspectiveTransform
        返回
        自动生成
      • getRectSubPix

        public static void getRectSubPix​(Mat image,
                                         Size patchSize,
                                         Point center,
                                         Mat patch,
                                         int patchType)
        从图像中以亚像素精度检索像素矩形。函数 getRectSubPix 从 src 中提取像素:\(patch(x, y) = src(x + \texttt{center.x} - ( \texttt{dst.cols} -1)*0.5, y + \texttt{center.y} - ( \texttt{dst.rows} -1)*0.5)\),其中非整数坐标处的像素值使用双线性插值检索。多通道图像的每个通道独立处理。此外,图像应为单通道或三通道图像。虽然矩形的中心必须在图像内部,但矩形的部分可能在外部。
        参数
        image - 源图像。
        patchSize - 提取块的大小。
        center - 源图像中提取矩形中心的浮点坐标。中心必须在图像内部。
        patch - 提取的块,大小为 patchSize,通道数与 src 相同。
        patchType - 提取像素的深度。默认情况下,它们与 src 具有相同的深度。SEE: warpAffine, warpPerspective
      • getRectSubPix

        public static void getRectSubPix​(Mat image,
                                         Size patchSize,
                                         Point center,
                                         Mat patch)
        从图像中以亚像素精度检索像素矩形。函数 getRectSubPix 从 src 中提取像素:\(patch(x, y) = src(x + \texttt{center.x} - ( \texttt{dst.cols} -1)*0.5, y + \texttt{center.y} - ( \texttt{dst.rows} -1)*0.5)\),其中非整数坐标处的像素值使用双线性插值检索。多通道图像的每个通道独立处理。此外,图像应为单通道或三通道图像。虽然矩形的中心必须在图像内部,但矩形的部分可能在外部。
        参数
        image - 源图像。
        patchSize - 提取块的大小。
        center - 源图像中提取矩形中心的浮点坐标。中心必须在图像内部。
        patch - 提取的块,大小为 patchSize,通道数与 src 相同。SEE: warpAffine, warpPerspective
      • logPolar

        @Deprecated
        public static void logPolar​(Mat src,
                                    Mat dst,
                                    Point center,
                                    double M,
                                    int flags)
        已弃用。
        此函数产生与 cv::warpPolar(src, dst, src.size(), center, maxRadius, flags+WARP_POLAR_LOG) 相同的结果;使用以下变换对源图像进行变换(参见 REF: polar_remaps_reference_image "极坐标重映射参考图像 d)"): \(\begin{array}{l} dst( \rho , \phi ) = src(x,y) \\ dst.size() \leftarrow src.size() \end{array}\) 其中 \(\begin{array}{l} I = (dx,dy) = (x - center.x,y - center.y) \\ \rho = M \cdot log_e(\texttt{magnitude} (I)) ,\\ \phi = Kangle \cdot \texttt{angle} (I) \\ \end{array}\) 且 \(\begin{array}{l} M = src.cols / log_e(maxRadius) \\ Kangle = src.rows / 2\Pi \\ \end{array}\) 此函数模拟人类“中央凹”视觉,可用于快速尺度和旋转不变的模板匹配、对象跟踪等。
        将图像重映射到半对数极坐标空间。
        参数
        src - 源图像。
        dst - 目标图像。它将与 src 具有相同的大小和类型。
        center - 变换中心;输出精度在此处最大。
        M - 幅度比例参数。它也决定了要变换的边界圆的半径。
        flags - 插值方法的组合,请参阅 #InterpolationFlags。注意:
        • 此函数不能原地操作。
        • 为了计算幅度和角度(以度为单位),内部使用了 #cartToPolar,因此角度从 0 到 360 度测量,精度约为 0.3 度。
        SEE: cv::linearPolar
      • linearPolar

        @Deprecated
        public static void linearPolar​(Mat src,
                                       Mat dst,
                                       Point center,
                                       double maxRadius,
                                       int flags)
        已弃用。
        此函数产生与 cv::warpPolar(src, dst, src.size(), center, maxRadius, flags) 相同的结果。使用以下变换对源图像进行变换(参见 REF: polar_remaps_reference_image "极坐标重映射参考图像 c)"): \(\begin{array}{l} dst( \rho , \phi ) = src(x,y) \\ dst.size() \leftarrow src.size() \end{array}\) 其中 \(\begin{array}{l} I = (dx,dy) = (x - center.x,y - center.y) \\ \rho = Kmag \cdot \texttt{magnitude} (I) ,\\ \phi = angle \cdot \texttt{angle} (I) \end{array}\) 且 \(\begin{array}{l} Kx = src.cols / maxRadius \\ Ky = src.rows / 2\Pi \end{array}\)
        将图像重映射到极坐标空间。
        参数
        src - 源图像。
        dst - 目标图像。它将与 src 具有相同的大小和类型。
        center - 变换中心;
        maxRadius - 要变换的边界圆的半径。它也决定了逆幅度比例参数。
        flags - 插值方法的组合,请参阅 #InterpolationFlags。注意:
        • 此函数不能原地操作。
        • 为了计算幅度和角度(以度为单位),内部使用了 #cartToPolar,因此角度从 0 到 360 度测量,精度约为 0.3 度。
        SEE: cv::logPolar
      • warpPolar

        public static void warpPolar​(Mat src,
                                     Mat dst,
                                     Size dsize,
                                     Point center,
                                     double maxRadius,
                                     int flags)
        将图像重映射到极坐标或半对数极坐标空间 polar_remaps_reference_image ![Polar remaps reference](pics/polar_remap_doc.png) 使用以下变换对源图像进行变换:\( dst(\rho , \phi ) = src(x,y) \),其中 \( \begin{array}{l} \vec{I} = (x - center.x, \;y - center.y) \\ \phi = Kangle \cdot \texttt{angle} (\vec{I}) \\ \rho = \left\{\begin{matrix} Klin \cdot \texttt{magnitude} (\vec{I}) & default \\ Klog \cdot log_e(\texttt{magnitude} (\vec{I})) & if \; semilog \\ \end{matrix}\right. \end{array} \) 和 \( \begin{array}{l} Kangle = dsize.height / 2\Pi \\ Klin = dsize.width / maxRadius \\ Klog = dsize.width / log_e(maxRadius) \\ \end{array} \)。\par 线性映射与半对数映射 极坐标映射可以是线性或半对数。将 #WarpPolarMode 之一添加到 flags 以指定极坐标映射模式。线性是默认模式。半对数映射模拟了人类的“中央凹”视觉,允许在视线(中央视觉)上具有非常高的敏锐度,而与外围视觉的低敏锐度形成对比。\par dsize 选项
        • 如果 dsize 中的两个值都 <=0(默认),则目标图像将具有(几乎)与源边界圆相同的面积:\(\begin{array}{l} dsize.area \leftarrow (maxRadius^2 \cdot \Pi) \\ dsize.width = \texttt{cvRound}(maxRadius) \\ dsize.height = \texttt{cvRound}(maxRadius \cdot \Pi) \\ \end{array}\)。
        • 如果只有 dsize.height <= 0,则目标图像面积将与边界圆面积成比例,但按 Kx * Kx 缩放:\(\begin{array}{l} dsize.height = \texttt{cvRound}(dsize.width \cdot \Pi) \\ \end{array} \)。
        • 如果 dsize 中的两个值都 > 0,则目标图像将具有给定大小,因此边界圆的面积将缩放到 dsize
        \par 反向映射 您可以通过将 #WARP_INVERSE_MAP 添加到 flags 来获得反向映射 \snippet polar_transforms.cpp InverseMap 此外,要从极坐标映射的坐标 \((rho, phi)\) 计算原始坐标 \((x, y)\): \snippet polar_transforms.cpp InverseCoordinate
        参数
        src - 源图像。
        dst - 目标图像。它将与 src 具有相同的类型。
        dsize - 目标图像大小(参见描述了解有效选项)。
        center - 变换中心。
        maxRadius - 要变换的边界圆的半径。它也决定了逆幅度比例参数。
        flags - 插值方法的组合,#InterpolationFlags + #WarpPolarMode。
        • 添加 #WARP_POLAR_LINEAR 以选择线性极坐标映射(默认)。
        • 添加 #WARP_POLAR_LOG 选择半对数极坐标映射。
        • 添加 #WARP_INVERSE_MAP 用于反向映射。
        注意
        • 此函数不能原地操作。
        • 为了计算幅度和角度(以度为单位),内部使用了 #cartToPolar,因此角度从 0 到 360 度测量,精度约为 0.3 度。
        • 此函数使用 #remap。由于当前的实现限制,输入和输出图像的大小应小于 32767x32767。
        参见:cv::remap
      • integral3

        public static void integral3​(Mat src,
                                     Mat sum,
                                     Mat sqsum,
                                     Mat tilted,
                                     int sdepth,
                                     int sqdepth)
        计算图像的积分。该函数按以下方式计算源图像的一个或多个积分图像: \(\texttt{sum} (X,Y) = \sum _{x<X,y<Y} \texttt{image} (x,y)\) \(\texttt{sqsum} (X,Y) = \sum _{x<X,y<Y} \texttt{image} (x,y)^2\) \(\texttt{tilted} (X,Y) = \sum _{y<Y,abs(x-X+1) \leq Y-y-1} \texttt{image} (x,y)\) 使用这些积分图像,您可以在常数时间内计算图像特定直立或旋转矩形区域内的和、均值和标准差,例如: \(\sum _{x_1 \leq x < x_2, \, y_1 \leq y < y_2} \texttt{image} (x,y) = \texttt{sum} (x_2,y_2)- \texttt{sum} (x_1,y_2)- \texttt{sum} (x_2,y_1)+ \texttt{sum} (x_1,y_1)\) 这使得例如可变窗口大小的快速模糊或快速块相关成为可能。对于多通道图像,每个通道的和独立累加。作为一个实际例子,下图显示了计算直立矩形 Rect(4,4,3,2) 和倾斜矩形 Rect(5,1,2,3) 的积分。原始图像中选定的像素以及积分图像 sum 和 tilted 中的相对像素均已显示。 ![integral calculation example](pics/integral.png)
        参数
        src - 输入图像,大小为 \(W \times H\),8 位或浮点型(32f 或 64f)。
        sum - 积分图像,大小为 \((W+1)\times (H+1)\),32 位整数或浮点型(32f 或 64f)。
        sqsum - 像素值平方的积分图像;大小为 \((W+1)\times (H+1)\),双精度浮点型(64f)数组。
        tilted - 图像旋转 45 度后的积分;大小为 \((W+1)\times (H+1)\),与 sum 相同的数据类型。
        sdepth - 积分图像和倾斜积分图像的所需深度,CV_32S、CV_32F 或 CV_64F。
        sqdepth - 像素值平方的积分图像的所需深度,CV_32F 或 CV_64F。
      • integral3

        public static void integral3​(Mat src,
                                     Mat sum,
                                     Mat sqsum,
                                     Mat tilted,
                                     int sdepth)
        计算图像的积分。该函数按以下方式计算源图像的一个或多个积分图像: \(\texttt{sum} (X,Y) = \sum _{x<X,y<Y} \texttt{image} (x,y)\) \(\texttt{sqsum} (X,Y) = \sum _{x<X,y<Y} \texttt{image} (x,y)^2\) \(\texttt{tilted} (X,Y) = \sum _{y<Y,abs(x-X+1) \leq Y-y-1} \texttt{image} (x,y)\) 使用这些积分图像,您可以在常数时间内计算图像特定直立或旋转矩形区域内的和、均值和标准差,例如: \(\sum _{x_1 \leq x < x_2, \, y_1 \leq y < y_2} \texttt{image} (x,y) = \texttt{sum} (x_2,y_2)- \texttt{sum} (x_1,y_2)- \texttt{sum} (x_2,y_1)+ \texttt{sum} (x_1,y_1)\) 这使得例如可变窗口大小的快速模糊或快速块相关成为可能。对于多通道图像,每个通道的和独立累加。作为一个实际例子,下图显示了计算直立矩形 Rect(4,4,3,2) 和倾斜矩形 Rect(5,1,2,3) 的积分。原始图像中选定的像素以及积分图像 sum 和 tilted 中的相对像素均已显示。 ![integral calculation example](pics/integral.png)
        参数
        src - 输入图像,大小为 \(W \times H\),8 位或浮点型(32f 或 64f)。
        sum - 积分图像,大小为 \((W+1)\times (H+1)\),32 位整数或浮点型(32f 或 64f)。
        sqsum - 像素值平方的积分图像;大小为 \((W+1)\times (H+1)\),双精度浮点型(64f)数组。
        tilted - 图像旋转 45 度后的积分;大小为 \((W+1)\times (H+1)\),与 sum 相同的数据类型。
        sdepth - 积分图像和倾斜积分图像的所需深度,CV_32S、CV_32F 或 CV_64F。
      • integral3

        public static void integral3​(Mat src,
                                     Mat sum,
                                     Mat sqsum,
                                     Mat tilted)
        计算图像的积分。该函数按以下方式计算源图像的一个或多个积分图像: \(\texttt{sum} (X,Y) = \sum _{x<X,y<Y} \texttt{image} (x,y)\) \(\texttt{sqsum} (X,Y) = \sum _{x<X,y<Y} \texttt{image} (x,y)^2\) \(\texttt{tilted} (X,Y) = \sum _{y<Y,abs(x-X+1) \leq Y-y-1} \texttt{image} (x,y)\) 使用这些积分图像,您可以在常数时间内计算图像特定直立或旋转矩形区域内的和、均值和标准差,例如: \(\sum _{x_1 \leq x < x_2, \, y_1 \leq y < y_2} \texttt{image} (x,y) = \texttt{sum} (x_2,y_2)- \texttt{sum} (x_1,y_2)- \texttt{sum} (x_2,y_1)+ \texttt{sum} (x_1,y_1)\) 这使得例如可变窗口大小的快速模糊或快速块相关成为可能。对于多通道图像,每个通道的和独立累加。作为一个实际例子,下图显示了计算直立矩形 Rect(4,4,3,2) 和倾斜矩形 Rect(5,1,2,3) 的积分。原始图像中选定的像素以及积分图像 sum 和 tilted 中的相对像素均已显示。 ![integral calculation example](pics/integral.png)
        参数
        src - 输入图像,大小为 \(W \times H\),8 位或浮点型(32f 或 64f)。
        sum - 积分图像,大小为 \((W+1)\times (H+1)\),32 位整数或浮点型(32f 或 64f)。
        sqsum - 像素值平方的积分图像;大小为 \((W+1)\times (H+1)\),双精度浮点型(64f)数组。
        tilted - 图像旋转 45 度后的积分;大小为 \((W+1)\times (H+1)\),与 sum 相同的数据类型。CV_64F。
      • integral

        public static void integral​(Mat src,
                                    Mat sum,
                                    int sdepth)
      • integral

        public static void integral​(Mat src,
                                    Mat sum)
      • integral2

        public static void integral2​(Mat src,
                                     Mat sum,
                                     Mat sqsum,
                                     int sdepth,
                                     int sqdepth)
      • integral2

        public static void integral2​(Mat src,
                                     Mat sum,
                                     Mat sqsum,
                                     int sdepth)
      • integral2

        public static void integral2​(Mat src,
                                     Mat sum,
                                     Mat sqsum)
      • accumulate

        public static void accumulate​(Mat src,
                                      Mat dst,
                                      Mat mask)
        将图像添加到累加器图像。此函数将 src 或其部分元素添加到 dst: \(\texttt{dst} (x,y) \leftarrow \texttt{dst} (x,y) + \texttt{src} (x,y) \quad \text{if} \quad \texttt{mask} (x,y) \ne 0\) 该函数支持多通道图像。每个通道独立处理。例如,cv::accumulate 函数可用于收集静止相机拍摄的场景背景统计信息,以及进一步的前景-背景分割。
        参数
        src - 输入图像,类型为 CV_8UC(n)、CV_16UC(n)、CV_32FC(n) 或 CV_64FC(n),其中 n 为正整数。
        dst - 累加器图像,与输入图像具有相同的通道数,深度为 CV_32F 或 CV_64F。
        mask - 可选操作掩码。参见:accumulateSquare, accumulateProduct, accumulateWeighted
      • accumulate

        public static void accumulate​(Mat src,
                                      Mat dst)
        将图像添加到累加器图像。此函数将 src 或其部分元素添加到 dst: \(\texttt{dst} (x,y) \leftarrow \texttt{dst} (x,y) + \texttt{src} (x,y) \quad \text{if} \quad \texttt{mask} (x,y) \ne 0\) 该函数支持多通道图像。每个通道独立处理。例如,cv::accumulate 函数可用于收集静止相机拍摄的场景背景统计信息,以及进一步的前景-背景分割。
        参数
        src - 输入图像,类型为 CV_8UC(n)、CV_16UC(n)、CV_32FC(n) 或 CV_64FC(n),其中 n 为正整数。
        dst - 累加器图像,与输入图像具有相同的通道数,深度为 CV_32F 或 CV_64F。参见:accumulateSquare, accumulateProduct, accumulateWeighted
      • accumulateSquare

        public static void accumulateSquare​(Mat src,
                                            Mat dst,
                                            Mat mask)
        将源图像的平方添加到累加器图像。该函数将输入图像 src 或其选定区域的平方值添加到累加器 dst: \(\texttt{dst} (x,y) \leftarrow \texttt{dst} (x,y) + \texttt{src} (x,y)^2 \quad \text{if} \quad \texttt{mask} (x,y) \ne 0\) 该函数支持多通道图像。每个通道独立处理。
        参数
        src - 输入图像,1 或 3 通道,8 位或 32 位浮点型。
        dst - 累加器图像,与输入图像具有相同的通道数,32 位或 64 位浮点型。
        mask - 可选操作掩码。参见:accumulateSquare, accumulateProduct, accumulateWeighted
      • accumulateSquare

        public static void accumulateSquare​(Mat src,
                                            Mat dst)
        将源图像的平方添加到累加器图像。该函数将输入图像 src 或其选定区域的平方值添加到累加器 dst: \(\texttt{dst} (x,y) \leftarrow \texttt{dst} (x,y) + \texttt{src} (x,y)^2 \quad \text{if} \quad \texttt{mask} (x,y) \ne 0\) 该函数支持多通道图像。每个通道独立处理。
        参数
        src - 输入图像,1 或 3 通道,8 位或 32 位浮点型。
        dst - 累加器图像,与输入图像具有相同的通道数,32 位或 64 位浮点型。参见:accumulateSquare, accumulateProduct, accumulateWeighted
      • accumulateProduct

        public static void accumulateProduct​(Mat src1,
                                             Mat src2,
                                             Mat dst,
                                             Mat mask)
        将两个输入图像的逐元素乘积添加到累加器图像。该函数将两个图像或其选定区域的乘积添加到累加器 dst: \(\texttt{dst} (x,y) \leftarrow \texttt{dst} (x,y) + \texttt{src1} (x,y) \cdot \texttt{src2} (x,y) \quad \text{if} \quad \texttt{mask} (x,y) \ne 0\) 该函数支持多通道图像。每个通道独立处理。
        参数
        src1 - 第一个输入图像,1 或 3 通道,8 位或 32 位浮点型。
        src2 - 第二个输入图像,与 src1 类型和大小相同。
        dst - 累加器图像,与输入图像具有相同的通道数,32 位或 64 位浮点型。
        mask - 可选操作掩码。参见:accumulate, accumulateSquare, accumulateWeighted
      • accumulateProduct

        public static void accumulateProduct​(Mat src1,
                                             Mat src2,
                                             Mat dst)
        将两个输入图像的逐元素乘积添加到累加器图像。该函数将两个图像或其选定区域的乘积添加到累加器 dst: \(\texttt{dst} (x,y) \leftarrow \texttt{dst} (x,y) + \texttt{src1} (x,y) \cdot \texttt{src2} (x,y) \quad \text{if} \quad \texttt{mask} (x,y) \ne 0\) 该函数支持多通道图像。每个通道独立处理。
        参数
        src1 - 第一个输入图像,1 或 3 通道,8 位或 32 位浮点型。
        src2 - 第二个输入图像,与 src1 类型和大小相同。
        dst - 累加器图像,与输入图像具有相同的通道数,32 位或 64 位浮点型。参见:accumulate, accumulateSquare, accumulateWeighted
      • accumulateWeighted

        public static void accumulateWeighted​(Mat src,
                                              Mat dst,
                                              double alpha,
                                              Mat mask)
        更新移动平均值。此函数计算输入图像 src 和累加器 dst 的加权和,使 dst 成为帧序列的移动平均值: \(\texttt{dst} (x,y) \leftarrow (1- \texttt{alpha} ) \cdot \texttt{dst} (x,y) + \texttt{alpha} \cdot \texttt{src} (x,y) \quad \text{if} \quad \texttt{mask} (x,y) \ne 0\) 也就是说,alpha 调节更新速度(累加器“遗忘”早期图像的速度)。该函数支持多通道图像。每个通道独立处理。
        参数
        src - 输入图像,1 或 3 通道,8 位或 32 位浮点型。
        dst - 累加器图像,与输入图像具有相同的通道数,32 位或 64 位浮点型。
        alpha - 输入图像的权重。
        mask - 可选操作掩码。参见:accumulate, accumulateSquare, accumulateProduct
      • accumulateWeighted

        public static void accumulateWeighted​(Mat src,
                                              Mat dst,
                                              double alpha)
        更新移动平均值。此函数计算输入图像 src 和累加器 dst 的加权和,使 dst 成为帧序列的移动平均值: \(\texttt{dst} (x,y) \leftarrow (1- \texttt{alpha} ) \cdot \texttt{dst} (x,y) + \texttt{alpha} \cdot \texttt{src} (x,y) \quad \text{if} \quad \texttt{mask} (x,y) \ne 0\) 也就是说,alpha 调节更新速度(累加器“遗忘”早期图像的速度)。该函数支持多通道图像。每个通道独立处理。
        参数
        src - 输入图像,1 或 3 通道,8 位或 32 位浮点型。
        dst - 累加器图像,与输入图像具有相同的通道数,32 位或 64 位浮点型。
        alpha - 输入图像的权重。参见:accumulate, accumulateSquare, accumulateProduct
      • phaseCorrelate

        public static Point phaseCorrelate​(Mat src1,
                                           Mat src2,
                                           Mat window,
                                           double[] response)
        该函数用于检测两个图像之间发生的平移。该操作利用傅里叶位移定理来检测频域中的平移。它可用于快速图像配准和运动估计。更多信息请参见 。计算两个提供的源数组的互功率谱。如果需要,数组将使用 getOptimalDFTSize 进行填充。该函数执行以下方程式:
        • 首先,如果用户提供,它会对每个图像应用汉宁窗以消除可能的边缘效应。参见 REF: createHanningWindow 和 。此窗口可以缓存,直到数组大小改变以加快处理时间。
        • 接下来,它计算每个源数组的正向 DFT: \(\mathbf{G}_a = \mathcal{F}\{src_1\}, \; \mathbf{G}_b = \mathcal{F}\{src_2\}\) 其中 \(\mathcal{F}\) 是正向 DFT。
        • 然后,它计算每个频域数组的互功率谱: \(R = \frac{ \mathbf{G}_a \mathbf{G}_b^*}{|\mathbf{G}_a \mathbf{G}_b^*|}\)
        • 接下来,通过逆 DFT 将互相关转换回时域: \(r = \mathcal{F}^{-1}\{R\}\)
        • 最后,它计算峰值位置,并围绕峰值计算一个 5x5 加权质心,以实现亚像素精度。 \((\Delta x, \Delta y) = \texttt{weightedCentroid} \{\arg \max_{(x, y)}\{r\}\}\)
        • 如果非零,响应参数将计算为峰值位置周围 5x5 质心内 r 元素的总和。它被归一化为最大值 1(表示存在单个峰值),当存在多个峰值时将更小。
        参数
        src1 - 源浮点数组(CV_32FC1 或 CV_64FC1)
        src2 - 源浮点数组(CV_32FC1 或 CV_64FC1)
        window - 带有窗口系数的浮点数组,用于减少边缘效应(可选)。
        response - 峰值周围 5x5 质心内的信号功率,介于 0 和 1 之间(可选)。
        返回
        检测到的两个数组之间的相位偏移(亚像素)。参见:dft, getOptimalDFTSize, idft, mulSpectrums createHanningWindow
      • phaseCorrelate

        public static Point phaseCorrelate​(Mat src1,
                                           Mat src2,
                                           Mat window)
        该函数用于检测两个图像之间发生的平移。该操作利用傅里叶位移定理来检测频域中的平移。它可用于快速图像配准和运动估计。更多信息请参见 。计算两个提供的源数组的互功率谱。如果需要,数组将使用 getOptimalDFTSize 进行填充。该函数执行以下方程式:
        • 首先,如果用户提供,它会对每个图像应用汉宁窗以消除可能的边缘效应。参见 REF: createHanningWindow 和 。此窗口可以缓存,直到数组大小改变以加快处理时间。
        • 接下来,它计算每个源数组的正向 DFT: \(\mathbf{G}_a = \mathcal{F}\{src_1\}, \; \mathbf{G}_b = \mathcal{F}\{src_2\}\) 其中 \(\mathcal{F}\) 是正向 DFT。
        • 然后,它计算每个频域数组的互功率谱: \(R = \frac{ \mathbf{G}_a \mathbf{G}_b^*}{|\mathbf{G}_a \mathbf{G}_b^*|}\)
        • 接下来,通过逆 DFT 将互相关转换回时域: \(r = \mathcal{F}^{-1}\{R\}\)
        • 最后,它计算峰值位置,并围绕峰值计算一个 5x5 加权质心,以实现亚像素精度。 \((\Delta x, \Delta y) = \texttt{weightedCentroid} \{\arg \max_{(x, y)}\{r\}\}\)
        • 如果非零,响应参数将计算为峰值位置周围 5x5 质心内 r 元素的总和。它被归一化为最大值 1(表示存在单个峰值),当存在多个峰值时将更小。
        参数
        src1 - 源浮点数组(CV_32FC1 或 CV_64FC1)
        src2 - 源浮点数组(CV_32FC1 或 CV_64FC1)
        window - 带有窗口系数的浮点数组,用于减少边缘效应(可选)。
        返回
        检测到的两个数组之间的相位偏移(亚像素)。参见:dft, getOptimalDFTSize, idft, mulSpectrums createHanningWindow
      • phaseCorrelate

        public static Point phaseCorrelate​(Mat src1,
                                           Mat src2)
        该函数用于检测两个图像之间发生的平移。该操作利用傅里叶位移定理来检测频域中的平移。它可用于快速图像配准和运动估计。更多信息请参见 。计算两个提供的源数组的互功率谱。如果需要,数组将使用 getOptimalDFTSize 进行填充。该函数执行以下方程式:
        • 首先,如果用户提供,它会对每个图像应用汉宁窗以消除可能的边缘效应。参见 REF: createHanningWindow 和 。此窗口可以缓存,直到数组大小改变以加快处理时间。
        • 接下来,它计算每个源数组的正向 DFT: \(\mathbf{G}_a = \mathcal{F}\{src_1\}, \; \mathbf{G}_b = \mathcal{F}\{src_2\}\) 其中 \(\mathcal{F}\) 是正向 DFT。
        • 然后,它计算每个频域数组的互功率谱: \(R = \frac{ \mathbf{G}_a \mathbf{G}_b^*}{|\mathbf{G}_a \mathbf{G}_b^*|}\)
        • 接下来,通过逆 DFT 将互相关转换回时域: \(r = \mathcal{F}^{-1}\{R\}\)
        • 最后,它计算峰值位置,并围绕峰值计算一个 5x5 加权质心,以实现亚像素精度。 \((\Delta x, \Delta y) = \texttt{weightedCentroid} \{\arg \max_{(x, y)}\{r\}\}\)
        • 如果非零,响应参数将计算为峰值位置周围 5x5 质心内 r 元素的总和。它被归一化为最大值 1(表示存在单个峰值),当存在多个峰值时将更小。
        参数
        src1 - 源浮点数组(CV_32FC1 或 CV_64FC1)
        src2 - 源浮点数组(CV_32FC1 或 CV_64FC1)
        返回
        检测到的两个数组之间的相位偏移(亚像素)。参见:dft, getOptimalDFTSize, idft, mulSpectrums createHanningWindow
      • createHanningWindow

        public static void createHanningWindow​(Mat dst,
                                               Size winSize,
                                               int type)
        此函数计算二维汉宁窗系数。更多信息请参见(https://en.wikipedia.org/wiki/Hann_function)和(https://en.wikipedia.org/wiki/Window_function)。示例如下: // create hanning window of size 100x100 and type CV_32F Mat hann; createHanningWindow(hann, Size(100, 100), CV_32F);
        参数
        dst - 放置汉宁系数的目标数组。
        winSize - 窗口大小规格(宽度和高度都必须 > 1)
        type - 创建的数组类型
      • divSpectrums

        public static void divSpectrums​(Mat a,
                                        Mat b,
                                        Mat c,
                                        int flags,
                                        boolean conjB)
        执行第一个傅里叶谱除以第二个傅里叶谱的逐元素运算。函数 cv::divSpectrums 执行第一个数组除以第二个数组的逐元素运算。这些数组是 CCS-packed 或复数矩阵,它们是实数或复数傅里叶变换的结果。
        参数
        a - 第一个输入数组。
        b - 第二个输入数组,与 src1 具有相同的大小和类型。
        c - 输出数组,与 src1 具有相同的大小和类型。
        flags - 操作标志;目前,唯一支持的标志是 cv::DFT_ROWS,表示 src1 和 src2 的每一行都是独立的 1D 傅里叶谱。如果您不想使用此标志,则只需添加一个 0 作为值。
        conjB - 可选标志,指示在乘法之前(true)或不(false)共轭第二个输入数组。
      • divSpectrums

        public static void divSpectrums​(Mat a,
                                        Mat b,
                                        Mat c,
                                        int flags)
        执行第一个傅里叶谱除以第二个傅里叶谱的逐元素运算。函数 cv::divSpectrums 执行第一个数组除以第二个数组的逐元素运算。这些数组是 CCS-packed 或复数矩阵,它们是实数或复数傅里叶变换的结果。
        参数
        a - 第一个输入数组。
        b - 第二个输入数组,与 src1 具有相同的大小和类型。
        c - 输出数组,与 src1 具有相同的大小和类型。
        flags - 操作标志;目前,唯一支持的标志是 cv::DFT_ROWS,表示 src1 和 src2 的每一行都是独立的 1D 傅里叶谱。如果您不想使用此标志,则只需添加一个 0 作为值。或不(false)。
      • RANSAC参数。它是点到像素中对极线的最大距离,超过此距离的点将被视为异常值,不用于计算最终的基本矩阵。它可以设置为1-3左右,具体取决于点定位的精度、图像分辨率和图像噪声。

        public static double threshold​(Mat src,
                                       Mat dst,
                                       double thresh,
                                       double maxval,
                                       int type)
        对每个数组元素应用固定级别的阈值。该函数对多通道数组应用固定级别的阈值。该函数通常用于从灰度图像中获取双层(二值)图像(#compare 也可用于此目的)或用于去除噪声,即过滤掉值过小或过大的像素。该函数支持多种阈值类型。它们由 type 参数确定。此外,特殊值 #THRESH_OTSU 或 #THRESH_TRIANGLE 可以与上述值之一结合使用。在这些情况下,函数使用 Otsu 或 Triangle 算法确定最佳阈值,并使用它而不是指定的 thresh。注意:目前,Otsu 方法仅对 CV_8UC1 和 CV_16UC1 图像实现,Triangle 方法仅对 CV_8UC1 图像实现。
        参数
        src - 输入数组(多通道,CV_8U、CV_16S、CV_16U、CV_32F 或 CV_64F)。
        dst - 输出数组,与 src 具有相同的大小、类型和通道数。
        thresh - 阈值。
        maxval - 与 #THRESH_BINARY 和 #THRESH_BINARY_INV 阈值类型一起使用的最大值。
        type - 阈值类型(参见 #ThresholdTypes)。
        返回
        如果使用 Otsu 或 Triangle 方法,则为计算出的阈值。参见:thresholdWithMask, adaptiveThreshold, findContours, compare, min, max
      • thresholdWithMask

        public static double thresholdWithMask​(Mat src,
                                               Mat dst,
                                               Mat mask,
                                               double thresh,
                                               double maxval,
                                               int type)
        与 #threshold 相同,但带有可选掩码。注意:如果掩码为空,#thresholdWithMask 等效于 #threshold。如果掩码不为空,dst *必须*与 src 具有相同的大小和类型,以便将异常像素保持原样。
        参数
        src - 输入数组(多通道,8 位或 32 位浮点型)。
        dst - 输出数组,与 src 具有相同的大小、类型和通道数。
        mask - 可选掩码(与 src 大小相同,8 位)。
        thresh - 阈值。
        maxval - 与 #THRESH_BINARY 和 #THRESH_BINARY_INV 阈值类型一起使用的最大值。
        type - 阈值类型(参见 #ThresholdTypes)。
        返回
        如果使用 Otsu 或 Triangle 方法,则为计算出的阈值。参见:threshold, adaptiveThreshold, findContours, compare, min, max
      • adaptiveThreshold

        public static void adaptiveThreshold​(Mat src,
                                             Mat dst,
                                             double maxValue,
                                             int adaptiveMethod,
                                             int thresholdType,
                                             int blockSize,
                                             double C)
        对数组应用自适应阈值。此函数根据以下公式将灰度图像转换为二值图像:
        • THRESH_BINARY \(dst(x,y) = \fork{\texttt{maxValue}}{if \(src(x,y) > T(x,y)\)}{0}{otherwise}\)
        • THRESH_BINARY_INV \(dst(x,y) = \fork{0}{if \(src(x,y) > T(x,y)\)}{\texttt{maxValue}}{otherwise}\) 其中 \(T(x,y)\) 是为每个像素单独计算的阈值(参见 adaptiveMethod 参数)。
        此函数可以就地处理图像。
        参数
        src - 源 8 位单通道图像。
        dst - 目标图像,与 src 具有相同的大小和类型。
        maxValue - 满足条件的像素的非零值
        adaptiveMethod - 要使用的自适应阈值算法,请参见 #AdaptiveThresholdTypes。#BORDER_REPLICATE | #BORDER_ISOLATED 用于处理边界。
        thresholdType - 阈值类型,必须是 #THRESH_BINARY 或 #THRESH_BINARY_INV 之一,请参见 #ThresholdTypes。
        blockSize - 用于计算像素阈值值的像素邻域大小:3、5、7 等。
        C - 从均值或加权均值中减去的常数(参见下面的详细信息)。通常为正,但也可以为零或负。参见:threshold, blur, GaussianBlur
      • pyrDown

        public static void pyrDown​(Mat src,
                                   Mat dst,
                                   Size dstsize,
                                   int borderType)
        模糊图像并进行下采样。默认情况下,输出图像的大小计算为 Size((src.cols+1)/2, (src.rows+1)/2),但在任何情况下,应满足以下条件: \(\begin{array}{l} | \texttt{dstsize.width} *2-src.cols| \leq 2 \\ | \texttt{dstsize.height} *2-src.rows| \leq 2 \end{array}\) 该函数执行高斯金字塔构建的下采样步骤。首先,它将源图像与核进行卷积: \(\frac{1}{256} \begin{bmatrix} 1 & 4 & 6 & 4 & 1 \\ 4 & 16 & 24 & 16 & 4 \\ 6 & 24 & 36 & 24 & 6 \\ 4 & 16 & 24 & 16 & 4 \\ 1 & 4 & 6 & 4 & 1 \end{bmatrix}\) 然后,通过剔除偶数行和偶数列对图像进行下采样。
        参数
        src - 输入图像。
        dst - 输出图像;它具有指定的大小和与 src 相同的类型。
        dstsize - 输出图像的大小。
        borderType - 像素外推方法,参见 #BorderTypes(不支持 #BORDER_CONSTANT)
      • pyrDown

        public static void pyrDown​(Mat src,
                                   Mat dst,
                                   Size dstsize)
        模糊图像并进行下采样。默认情况下,输出图像的大小计算为 Size((src.cols+1)/2, (src.rows+1)/2),但在任何情况下,应满足以下条件: \(\begin{array}{l} | \texttt{dstsize.width} *2-src.cols| \leq 2 \\ | \texttt{dstsize.height} *2-src.rows| \leq 2 \end{array}\) 该函数执行高斯金字塔构建的下采样步骤。首先,它将源图像与核进行卷积: \(\frac{1}{256} \begin{bmatrix} 1 & 4 & 6 & 4 & 1 \\ 4 & 16 & 24 & 16 & 4 \\ 6 & 24 & 36 & 24 & 6 \\ 4 & 16 & 24 & 16 & 4 \\ 1 & 4 & 6 & 4 & 1 \end{bmatrix}\) 然后,通过剔除偶数行和偶数列对图像进行下采样。
        参数
        src - 输入图像。
        dst - 输出图像;它具有指定的大小和与 src 相同的类型。
        dstsize - 输出图像的大小。
      • pyrDown

        public static void pyrDown​(Mat src,
                                   Mat dst)
        模糊图像并进行下采样。默认情况下,输出图像的大小计算为 Size((src.cols+1)/2, (src.rows+1)/2),但在任何情况下,应满足以下条件: \(\begin{array}{l} | \texttt{dstsize.width} *2-src.cols| \leq 2 \\ | \texttt{dstsize.height} *2-src.rows| \leq 2 \end{array}\) 该函数执行高斯金字塔构建的下采样步骤。首先,它将源图像与核进行卷积: \(\frac{1}{256} \begin{bmatrix} 1 & 4 & 6 & 4 & 1 \\ 4 & 16 & 24 & 16 & 4 \\ 6 & 24 & 36 & 24 & 6 \\ 4 & 16 & 24 & 16 & 4 \\ 1 & 4 & 6 & 4 & 1 \end{bmatrix}\) 然后,通过剔除偶数行和偶数列对图像进行下采样。
        参数
        src - 输入图像。
        dst - 输出图像;它具有指定的大小和与 src 相同的类型。
      • pyrUp

        public static void pyrUp​(Mat src,
                                 Mat dst,
                                 Size dstsize,
                                 int borderType)
        上采样图像,然后对其进行模糊处理。默认情况下,输出图像的大小计算为 Size(src.cols*2, (src.rows*2),但在任何情况下,应满足以下条件: \(\begin{array}{l} | \texttt{dstsize.width} -src.cols*2| \leq ( \texttt{dstsize.width} \mod 2) \\ | \texttt{dstsize.height} -src.rows*2| \leq ( \texttt{dstsize.height} \mod 2) \end{array}\) 该函数执行高斯金字塔构建的上采样步骤,尽管它实际上可用于构建拉普拉斯金字塔。首先,它通过插入偶数零行和列来上采样源图像,然后将结果与 pyrDown 中乘以 4 的相同核进行卷积。
        参数
        src - 输入图像。
        dst - 输出图像。它具有指定的大小和与 src 相同的类型。
        dstsize - 输出图像的大小。
        borderType - 像素外推方法,参见 #BorderTypes(仅支持 #BORDER_DEFAULT)
      • pyrUp

        public static void pyrUp​(Mat src,
                                 Mat dst,
                                 Size dstsize)
        上采样图像,然后对其进行模糊处理。默认情况下,输出图像的大小计算为 Size(src.cols*2, (src.rows*2),但在任何情况下,应满足以下条件: \(\begin{array}{l} | \texttt{dstsize.width} -src.cols*2| \leq ( \texttt{dstsize.width} \mod 2) \\ | \texttt{dstsize.height} -src.rows*2| \leq ( \texttt{dstsize.height} \mod 2) \end{array}\) 该函数执行高斯金字塔构建的上采样步骤,尽管它实际上可用于构建拉普拉斯金字塔。首先,它通过插入偶数零行和列来上采样源图像,然后将结果与 pyrDown 中乘以 4 的相同核进行卷积。
        参数
        src - 输入图像。
        dst - 输出图像。它具有指定的大小和与 src 相同的类型。
        dstsize - 输出图像的大小。
      • pyrUp

        public static void pyrUp​(Mat src,
                                 Mat dst)
        上采样图像,然后对其进行模糊处理。默认情况下,输出图像的大小计算为 Size(src.cols*2, (src.rows*2),但在任何情况下,应满足以下条件: \(\begin{array}{l} | \texttt{dstsize.width} -src.cols*2| \leq ( \texttt{dstsize.width} \mod 2) \\ | \texttt{dstsize.height} -src.rows*2| \leq ( \texttt{dstsize.height} \mod 2) \end{array}\) 该函数执行高斯金字塔构建的上采样步骤,尽管它实际上可用于构建拉普拉斯金字塔。首先,它通过插入偶数零行和列来上采样源图像,然后将结果与 pyrDown 中乘以 4 的相同核进行卷积。
        参数
        src - 输入图像。
        dst - 输出图像。它具有指定的大小和与 src 相同的类型。
      • calcHist

        public static void calcHist​(java.util.List<Mat> images,
                                    MatOfInt channels,
                                    Mat mask,
                                    Mat hist,
                                    MatOfInt histSize,
                                    MatOfFloat ranges,
                                    boolean accumulate)
        此变体仅支持均匀直方图。ranges 参数可以是空向量,也可以是 histSize.size()*2 个元素的扁平向量(histSize.size() 对元素)。每对的第一个和第二个元素指定下限和上限。
        参数
        images - 自动生成
        channels - 自动生成
        mask - 自动生成
        hist - 自动生成
        histSize - 自动生成
        ranges - 自动生成
        accumulate - 自动生成
      • calcHist

        public static void calcHist​(java.util.List<Mat> images,
                                    MatOfInt channels,
                                    Mat mask,
                                    Mat hist,
                                    MatOfInt histSize,
                                    MatOfFloat ranges)
        此变体仅支持均匀直方图。ranges 参数可以是空向量,也可以是 histSize.size()*2 个元素的扁平向量(histSize.size() 对元素)。每对的第一个和第二个元素指定下限和上限。
        参数
        images - 自动生成
        channels - 自动生成
        mask - 自动生成
        hist - 自动生成
        histSize - 自动生成
        ranges - 自动生成
      • calcBackProject

        public static void calcBackProject​(java.util.List<Mat> images,
                                           MatOfInt channels,
                                           Mat hist,
                                           Mat dst,
                                           MatOfFloat ranges,
                                           double scale)
      • compareHist

        public static double compareHist​(Mat H1,
                                         Mat H2,
                                         int method)
        比较两个直方图。函数 cv::compareHist 使用指定的方法比较两个密集或两个稀疏直方图。函数返回 \(d(H_1, H_2)\)。虽然该函数在 1 维、2 维、3 维密集直方图上表现良好,但可能不适用于高维稀疏直方图。在此类直方图中,由于混叠和采样问题,非零直方图bin的坐标可能会略微偏移。为了比较此类直方图或更一般的加权点稀疏配置,请考虑使用 #EMD 函数。
        参数
        H1 - 第一个被比较的直方图。
        H2 - 第二个被比较的直方图,与 H1 大小相同。
        method - 比较方法,参见 #HistCompMethods
        返回
        自动生成
      • equalizeHist

        public static void equalizeHist​(Mat src,
                                        Mat dst)
        均衡灰度图像的直方图。该函数使用以下算法均衡输入图像的直方图:
        • 计算src的直方图\(H\)。
        • 归一化直方图,使直方图 bin 的总和为 255。
        • 计算直方图的积分:\(H'_i = \sum _{0 \le j < i} H(j)\)
        • 使用 \(H'\) 作为查找表转换图像:\(\texttt{dst}(x,y) = H'(\texttt{src}(x,y))\)
        该算法可归一化图像亮度并增加对比度。
        参数
        src - 源 8 位单通道图像。
        dst - 与 src 大小和类型相同的目标图像。
      • createCLAHE

        public static CLAHE createCLAHE​(double clipLimit,
                                        Size tileGridSize)
        创建一个指向 cv::CLAHE 类的智能指针并对其进行初始化。
        参数
        clipLimit - 对比度限制的阈值。
        tileGridSize - 直方图均衡化的网格大小。输入图像将被分割成大小相等的矩形块。tileGridSize 定义了行和列中的块数。
        返回
        自动生成
      • createCLAHE

        public static CLAHE createCLAHE​(double clipLimit)
        创建一个指向 cv::CLAHE 类的智能指针并对其进行初始化。
        参数
        clipLimit - 对比度限制的阈值。大小相等的矩形块。tileGridSize 定义了行和列中的块数。
        返回
        自动生成
      • createCLAHE

        public static CLAHE createCLAHE()
        创建 cv::CLAHE 类的智能指针并初始化它。大小相等的矩形块。tileGridSize 定义了行和列中的块数。
        返回
        自动生成
      • EMD

        public static float EMD​(Mat signature1,
                                Mat signature2,
                                int distType,
                                Mat cost,
                                Mat flow)
        计算两个加权点配置之间的“最小功”距离。该函数计算两个加权点配置之间的推土机距离和/或该距离的下界。在 CITE: RubnerSept98, CITE: Rubner2000 中描述的应用之一是用于图像检索的多维直方图比较。EMD 是一个运输问题,使用单纯形算法的一些修改来解决,因此在最坏情况下复杂度呈指数级,但平均而言它快得多。在真实度量的情况下,下界甚至可以更快地计算(使用线性时间算法),并且可以用来粗略判断两个特征是否足够远,以至于它们不能关联到同一个对象。
        参数
        signature1 - 第一个签名,一个 \(\texttt{size1}\times \texttt{dims}+1\) 浮点矩阵。每行存储点权重,然后是点坐标。如果使用用户定义的成本矩阵,则允许矩阵只有一列(仅权重)。权重必须是非负数且至少有一个非零值。
        signature2 - 第二个签名,格式与 signature1 相同,但行数可能不同。总权重可能不同。在这种情况下,一个额外的“虚拟”点被添加到 signature1 或 signature2。权重必须是非负数且至少有一个非零值。
        distType - 使用的度量。参见 #DistanceTypes。
        cost - 用户定义的 \(\texttt{size1}\times \texttt{size2}\) 成本矩阵。此外,如果使用成本矩阵,则无法计算下界 lowerBound,因为它需要度量函数。这是质量中心之间的距离。如果使用用户定义的成本矩阵、点配置的总权重不相等或签名仅由权重组成(签名矩阵只有一列),则可能无法计算下界。您必须初始化 \*lowerBound。如果计算的质量中心之间的距离大于或等于 \*lowerBound(这意味着签名足够远),则函数不计算 EMD。在任何情况下,\*lowerBound 在返回时都设置为计算的质量中心之间的距离。因此,如果您想计算质量中心之间的距离和 EMD,\*lowerBound 应设置为 0。
        flow - 结果 \(\texttt{size1} \times \texttt{size2}\) 流矩阵:\(\texttt{flow}_{i,j}\) 是从 signature1 的第 \(i\) 个点到 signature2 的第 \(j\) 个点的流。
        返回
        自动生成
      • EMD

        public static float EMD​(Mat signature1,
                                Mat signature2,
                                int distType,
                                Mat cost)
        计算两个加权点配置之间的“最小功”距离。该函数计算两个加权点配置之间的推土机距离和/或该距离的下界。在 CITE: RubnerSept98, CITE: Rubner2000 中描述的应用之一是用于图像检索的多维直方图比较。EMD 是一个运输问题,使用单纯形算法的一些修改来解决,因此在最坏情况下复杂度呈指数级,但平均而言它快得多。在真实度量的情况下,下界甚至可以更快地计算(使用线性时间算法),并且可以用来粗略判断两个特征是否足够远,以至于它们不能关联到同一个对象。
        参数
        signature1 - 第一个签名,一个 \(\texttt{size1}\times \texttt{dims}+1\) 浮点矩阵。每行存储点权重,然后是点坐标。如果使用用户定义的成本矩阵,则允许矩阵只有一列(仅权重)。权重必须是非负数且至少有一个非零值。
        signature2 - 第二个签名,格式与 signature1 相同,但行数可能不同。总权重可能不同。在这种情况下,一个额外的“虚拟”点被添加到 signature1 或 signature2。权重必须是非负数且至少有一个非零值。
        distType - 使用的度量。参见 #DistanceTypes。
        cost - 用户定义的 \(\texttt{size1}\times \texttt{size2}\) 成本矩阵。此外,如果使用成本矩阵,则无法计算下界 lowerBound,因为它需要度量函数。这是质量中心之间的距离。如果使用用户定义的成本矩阵、点配置的总权重不相等或签名仅由权重组成(签名矩阵只有一列),则可能无法计算下界。您必须初始化 \*lowerBound。如果计算的质量中心之间的距离大于或等于 \*lowerBound(这意味着签名足够远),则函数不计算 EMD。在任何情况下,\*lowerBound 在返回时都设置为计算的质量中心之间的距离。因此,如果您想计算质量中心之间的距离和 EMD,\*lowerBound 应设置为 0。这是从 signature1 的第 \(i\) 个点到 signature2 的第 \(j\) 个点的流。
        返回
        自动生成
      • EMD

        public static float EMD​(Mat signature1,
                                Mat signature2,
                                int distType)
        计算两个加权点配置之间的“最小功”距离。该函数计算两个加权点配置之间的推土机距离和/或该距离的下界。在 CITE: RubnerSept98, CITE: Rubner2000 中描述的应用之一是用于图像检索的多维直方图比较。EMD 是一个运输问题,使用单纯形算法的一些修改来解决,因此在最坏情况下复杂度呈指数级,但平均而言它快得多。在真实度量的情况下,下界甚至可以更快地计算(使用线性时间算法),并且可以用来粗略判断两个特征是否足够远,以至于它们不能关联到同一个对象。
        参数
        signature1 - 第一个签名,一个 \(\texttt{size1}\times \texttt{dims}+1\) 浮点矩阵。每行存储点权重,然后是点坐标。如果使用用户定义的成本矩阵,则允许矩阵只有一列(仅权重)。权重必须是非负数且至少有一个非零值。
        signature2 - 第二个签名,格式与 signature1 相同,但行数可能不同。总权重可能不同。在这种情况下,一个额外的“虚拟”点被添加到 signature1 或 signature2。权重必须是非负数且至少有一个非零值。
        distType - 使用的度量。参见 #DistanceTypes。如果使用,则无法计算下限 lowerBound,因为它需要度量函数。这是质量中心之间的距离。如果使用用户定义的成本矩阵,点配置的总权重不相等,或者签名仅由权重组成(签名矩阵只有一列),则可能无法计算下限。您必须初始化 *lowerBound。如果计算的质量中心之间的距离大于或等于 *lowerBound(这意味着签名足够远),则函数不计算 EMD。在任何情况下,*lowerBound 在返回时都设置为计算的质量中心之间的距离。因此,如果您想计算质量中心之间的距离和 EMD,*lowerBound 应设置为 0。这是从 signature1 的第 \(i\) 个点到 signature2 的第 \(j\) 个点的流。
        返回
        自动生成
      • watershed

        public static void watershed​(Mat image,
                                     Mat markers)
        使用分水岭算法执行基于标记的图像分割。该函数实现了分水岭的其中一个变体,即 Meyer92 中描述的非参数基于标记的分割算法。在将图像传递给函数之前,您必须在图像标记中用正(>0)索引粗略勾勒出所需的区域。因此,每个区域表示为一个或多个像素值分别为 1、2、3 等的连通分量。此类标记可以从二值掩码中通过 #findContours 和 #drawContours 获取(参见 watershed.cpp 演示)。这些标记是未来图像区域的“种子”。标记中与勾勒区域关系未知且应由算法定义的其他所有像素都应设置为 0。在函数输出中,标记中的每个像素都设置为“种子”分量的值,或在区域边界处设置为 -1。注意:任意两个相邻的连通分量不一定由分水岭边界(-1 像素)分隔;例如,它们可以在传递给函数的初始标记图像中相互接触。
        参数
        image - 输入 8 位 3 通道图像。
        markers - 输入/输出 32 位单通道标记图像(映射)。其大小应与 image 相同。参见:findContours
      • pyrMeanShiftFiltering

        public static void pyrMeanShiftFiltering​(Mat src,
                                                 Mat dst,
                                                 double sp,
                                                 double sr,
                                                 int maxLevel,
                                                 TermCriteria termcrit)
        执行图像均值漂移分割的初始步骤。该函数实现均值漂移分割的滤波阶段,即函数的输出是经过滤波的“海报化”图像,其中颜色梯度和细粒度纹理被平滑。在输入图像(或缩小尺寸的输入图像,见下文)的每个像素 (X,Y) 处,函数执行均值漂移迭代,即考虑联合空间-颜色超空间中的像素 (X,Y) 邻域: \((x,y): X- \texttt{sp} \le x \le X+ \texttt{sp} , Y- \texttt{sp} \le y \le Y+ \texttt{sp} , ||(R,G,B)-(r,g,b)|| \le \texttt{sr}\) 其中 (R,G,B) 和 (r,g,b) 分别是 (X,Y) 和 (x,y) 处的颜色分量向量(尽管算法不依赖于所使用的颜色空间,因此可以使用任何 3 分量颜色空间)。在邻域中找到平均空间值 (X',Y') 和平均颜色向量 (R',G',B'),它们在下一次迭代中充当邻域中心: \((X,Y)~(X',Y'), (R,G,B)~(R',G',B').\) 迭代结束后,初始像素(即迭代开始的像素)的颜色分量设置为最终值(最后一次迭代的平均颜色): \(I(X,Y) <- (R*,G*,B*)\) 当 maxLevel > 0 时,将构建 maxLevel+1 层的高斯金字塔,并首先在最小层上运行上述过程。之后,结果传播到更大层,并且仅在那些层颜色与金字塔较低分辨率层相差超过 sr 的像素上再次运行迭代。这使得颜色区域的边界更清晰。请注意,结果将与在整个原始图像上运行均值漂移过程(即当 maxLevel==0 时)获得的结果实际不同。
        参数
        src - 源 8 位 3 通道图像。
        dst - 目标图像,格式和大小与源图像相同。
        sp - 空间窗口半径。
        sr - 颜色窗口半径。
        maxLevel - 用于分割的金字塔最大层数。
        termcrit - 终止条件:何时停止均值漂移迭代。
      • pyrMeanShiftFiltering

        public static void pyrMeanShiftFiltering​(Mat src,
                                                 Mat dst,
                                                 double sp,
                                                 double sr,
                                                 int maxLevel)
        执行图像均值漂移分割的初始步骤。该函数实现均值漂移分割的滤波阶段,即函数的输出是经过滤波的“海报化”图像,其中颜色梯度和细粒度纹理被平滑。在输入图像(或缩小尺寸的输入图像,见下文)的每个像素 (X,Y) 处,函数执行均值漂移迭代,即考虑联合空间-颜色超空间中的像素 (X,Y) 邻域: \((x,y): X- \texttt{sp} \le x \le X+ \texttt{sp} , Y- \texttt{sp} \le y \le Y+ \texttt{sp} , ||(R,G,B)-(r,g,b)|| \le \texttt{sr}\) 其中 (R,G,B) 和 (r,g,b) 分别是 (X,Y) 和 (x,y) 处的颜色分量向量(尽管算法不依赖于所使用的颜色空间,因此可以使用任何 3 分量颜色空间)。在邻域中找到平均空间值 (X',Y') 和平均颜色向量 (R',G',B'),它们在下一次迭代中充当邻域中心: \((X,Y)~(X',Y'), (R,G,B)~(R',G',B').\) 迭代结束后,初始像素(即迭代开始的像素)的颜色分量设置为最终值(最后一次迭代的平均颜色): \(I(X,Y) <- (R*,G*,B*)\) 当 maxLevel > 0 时,将构建 maxLevel+1 层的高斯金字塔,并首先在最小层上运行上述过程。之后,结果传播到更大层,并且仅在那些层颜色与金字塔较低分辨率层相差超过 sr 的像素上再次运行迭代。这使得颜色区域的边界更清晰。请注意,结果将与在整个原始图像上运行均值漂移过程(即当 maxLevel==0 时)获得的结果实际不同。
        参数
        src - 源 8 位 3 通道图像。
        dst - 目标图像,格式和大小与源图像相同。
        sp - 空间窗口半径。
        sr - 颜色窗口半径。
        maxLevel - 用于分割的金字塔最大层数。
      • pyrMeanShiftFiltering

        public static void pyrMeanShiftFiltering​(Mat src,
                                                 Mat dst,
                                                 double sp,
                                                 double sr)
        执行图像均值漂移分割的初始步骤。该函数实现均值漂移分割的滤波阶段,即函数的输出是经过滤波的“海报化”图像,其中颜色梯度和细粒度纹理被平滑。在输入图像(或缩小尺寸的输入图像,见下文)的每个像素 (X,Y) 处,函数执行均值漂移迭代,即考虑联合空间-颜色超空间中的像素 (X,Y) 邻域: \((x,y): X- \texttt{sp} \le x \le X+ \texttt{sp} , Y- \texttt{sp} \le y \le Y+ \texttt{sp} , ||(R,G,B)-(r,g,b)|| \le \texttt{sr}\) 其中 (R,G,B) 和 (r,g,b) 分别是 (X,Y) 和 (x,y) 处的颜色分量向量(尽管算法不依赖于所使用的颜色空间,因此可以使用任何 3 分量颜色空间)。在邻域中找到平均空间值 (X',Y') 和平均颜色向量 (R',G',B'),它们在下一次迭代中充当邻域中心: \((X,Y)~(X',Y'), (R,G,B)~(R',G',B').\) 迭代结束后,初始像素(即迭代开始的像素)的颜色分量设置为最终值(最后一次迭代的平均颜色): \(I(X,Y) <- (R*,G*,B*)\) 当 maxLevel > 0 时,将构建 maxLevel+1 层的高斯金字塔,并首先在最小层上运行上述过程。之后,结果传播到更大层,并且仅在那些层颜色与金字塔较低分辨率层相差超过 sr 的像素上再次运行迭代。这使得颜色区域的边界更清晰。请注意,结果将与在整个原始图像上运行均值漂移过程(即当 maxLevel==0 时)获得的结果实际不同。
        参数
        src - 源 8 位 3 通道图像。
        dst - 目标图像,格式和大小与源图像相同。
        sp - 空间窗口半径。
        sr - 颜色窗口半径。
      • grabCut

        public static void grabCut​(Mat img,
                                   Mat mask,
                                   Rect rect,
                                   Mat bgdModel,
                                   Mat fgdModel,
                                   int iterCount,
                                   int mode)
        运行 GrabCut 算法。该函数实现了 [GrabCut 图像分割算法](https://en.wikipedia.org/wiki/GrabCut)。
        参数
        img - 输入 8 位 3 通道图像。
        mask - 输入/输出 8 位单通道掩码。当模式设置为 #GC_INIT_WITH_RECT 时,掩码由函数初始化。其元素可以具有 #GrabCutClasses 中的一个。
        rect - 包含分割对象的 ROI。ROI 外部的像素标记为“明显背景”。该参数仅在 mode==#GC_INIT_WITH_RECT 时使用。
        bgdModel - 背景模型的临时数组。在处理同一图像时请勿修改它。
        fgdModel - 前景模型的临时数组。在处理同一图像时请勿修改它。
        iterCount - 算法在返回结果之前应进行的迭代次数。请注意,结果可以通过后续调用 mode==#GC_INIT_WITH_MASK 或 mode==GC_EVAL 进行细化。
        mode - 操作模式,可以是 #GrabCutModes 之一
      • grabCut

        public static void grabCut​(Mat img,
                                   Mat mask,
                                   Rect rect,
                                   Mat bgdModel,
                                   Mat fgdModel,
                                   int iterCount)
        运行 GrabCut 算法。该函数实现了 [GrabCut 图像分割算法](https://en.wikipedia.org/wiki/GrabCut)。
        参数
        img - 输入 8 位 3 通道图像。
        mask - 输入/输出 8 位单通道掩码。当模式设置为 #GC_INIT_WITH_RECT 时,掩码由函数初始化。其元素可以具有 #GrabCutClasses 中的一个。
        rect - 包含分割对象的 ROI。ROI 外部的像素标记为“明显背景”。该参数仅在 mode==#GC_INIT_WITH_RECT 时使用。
        bgdModel - 背景模型的临时数组。在处理同一图像时请勿修改它。
        fgdModel - 前景模型的临时数组。在处理同一图像时请勿修改它。
        iterCount - 算法在返回结果之前应进行的迭代次数。请注意,结果可以通过后续调用 mode==#GC_INIT_WITH_MASK 或 mode==GC_EVAL 进行细化。
      • distanceTransformWithLabels

        public static void distanceTransformWithLabels​(Mat src,
                                                       Mat dst,
                                                       Mat labels,
                                                       int distanceType,
                                                       int maskSize,
                                                       int labelType)
        计算源图像每个像素到最近零像素的距离。函数 cv::distanceTransform 计算每个二值图像像素到最近零像素的近似或精确距离。对于零图像像素,距离显然为零。当 maskSize == #DIST_MASK_PRECISE 且 distanceType == #DIST_L2 时,函数运行 CITE: Felzenszwalb04 中描述的算法。此算法使用 TBB 库进行并行化。在其他情况下,使用算法 CITE: Borgefors86。这意味着对于一个像素,函数会找到到最近零像素的最短路径,该路径由基本位移组成:水平、垂直、对角线或骑士跳跃(后者适用于 \(5\times 5\) 掩码)。总距离计算为这些基本距离的总和。由于距离函数应该是对称的,所有水平和垂直位移必须具有相同的成本(记为 a),所有对角线位移必须具有相同的成本(记为 b),所有骑士跳跃必须具有相同的成本(记为 c)。对于 #DIST_C 和 #DIST_L1 类型,距离精确计算,而对于 #DIST_L2(欧几里得距离),距离只能以相对误差计算(\(5\times 5\) 掩码提供更准确的结果)。对于 abc,OpenCV 使用原始论文中建议的值:
        • DIST_L1:a = 1, b = 2
        • DIST_L2
          • 3 x 3: a=0.955, b=1.3693
          • 5 x 5: a=1, b=1.4, c=2.1969
        • DIST_C: a = 1, b = 1
        通常,为了快速、粗略的距离估计,使用 #DIST_L2 和 \(3\times 3\) 掩码。为了更精确的距离估计,使用 #DIST_L2 和 \(5\times 5\) 掩码或精确算法。请注意,精确算法和近似算法都与像素数量呈线性关系。此函数变体不仅计算每个像素 \((x, y)\) 的最小距离,还识别由零像素组成的最近连通分量(labelType==#DIST_LABEL_CCOMP)或最近的零像素(labelType==#DIST_LABEL_PIXEL)。分量/像素的索引存储在 labels(x, y) 中。当 labelType==#DIST_LABEL_CCOMP 时,函数自动查找输入图像中零像素的连通分量,并用不同的标签标记它们。当 labelType==#DIST_LABEL_PIXEL 时,函数扫描输入图像并用不同的标签标记所有零像素。在此模式下,复杂度仍然是线性的。也就是说,该函数提供了一种非常快速的方法来计算二值图像的 Voronoi 图。目前,第二种变体只能使用近似距离变换算法,即尚不支持 maskSize=#DIST_MASK_PRECISE。
        参数
        src - 8 位单通道(二值)源图像。
        dst - 输出图像,包含计算出的距离。它是 8 位或 32 位浮点型、单通道图像,大小与 src 相同。
        labels - 标签的输出 2D 数组(离散 Voronoi 图)。其类型为 CV_32SC1,大小与 src 相同。
        distanceType - 距离类型,参见 #DistanceTypes
        maskSize - 距离变换掩码的大小,参见 #DistanceTransformMasks。此变体不支持 #DIST_MASK_PRECISE。对于 #DIST_L1 或 #DIST_C 距离类型,该参数强制为 3,因为 \(3\times 3\) 掩码产生与 \(5\times 5\) 或任何更大光圈相同的结果。
        labelType - 要构建的标签数组类型,参见 #DistanceTransformLabelTypes。
      • distanceTransformWithLabels

        public static void distanceTransformWithLabels​(Mat src,
                                                       Mat dst,
                                                       Mat labels,
                                                       int distanceType,
                                                       int maskSize)
        计算源图像每个像素到最近零像素的距离。函数 cv::distanceTransform 计算每个二值图像像素到最近零像素的近似或精确距离。对于零图像像素,距离显然为零。当 maskSize == #DIST_MASK_PRECISE 且 distanceType == #DIST_L2 时,函数运行 CITE: Felzenszwalb04 中描述的算法。此算法使用 TBB 库进行并行化。在其他情况下,使用算法 CITE: Borgefors86。这意味着对于一个像素,函数会找到到最近零像素的最短路径,该路径由基本位移组成:水平、垂直、对角线或骑士跳跃(后者适用于 \(5\times 5\) 掩码)。总距离计算为这些基本距离的总和。由于距离函数应该是对称的,所有水平和垂直位移必须具有相同的成本(记为 a),所有对角线位移必须具有相同的成本(记为 b),所有骑士跳跃必须具有相同的成本(记为 c)。对于 #DIST_C 和 #DIST_L1 类型,距离精确计算,而对于 #DIST_L2(欧几里得距离),距离只能以相对误差计算(\(5\times 5\) 掩码提供更准确的结果)。对于 abc,OpenCV 使用原始论文中建议的值:
        • DIST_L1:a = 1, b = 2
        • DIST_L2
          • 3 x 3: a=0.955, b=1.3693
          • 5 x 5: a=1, b=1.4, c=2.1969
        • DIST_C: a = 1, b = 1
        通常,为了快速、粗略的距离估计,使用 #DIST_L2 和 \(3\times 3\) 掩码。为了更精确的距离估计,使用 #DIST_L2 和 \(5\times 5\) 掩码或精确算法。请注意,精确算法和近似算法都与像素数量呈线性关系。此函数变体不仅计算每个像素 \((x, y)\) 的最小距离,还识别由零像素组成的最近连通分量(labelType==#DIST_LABEL_CCOMP)或最近的零像素(labelType==#DIST_LABEL_PIXEL)。分量/像素的索引存储在 labels(x, y) 中。当 labelType==#DIST_LABEL_CCOMP 时,函数自动查找输入图像中零像素的连通分量,并用不同的标签标记它们。当 labelType==#DIST_LABEL_PIXEL 时,函数扫描输入图像并用不同的标签标记所有零像素。在此模式下,复杂度仍然是线性的。也就是说,该函数提供了一种非常快速的方法来计算二值图像的 Voronoi 图。目前,第二种变体只能使用近似距离变换算法,即尚不支持 maskSize=#DIST_MASK_PRECISE。
        参数
        src - 8 位单通道(二值)源图像。
        dst - 输出图像,包含计算出的距离。它是 8 位或 32 位浮点型、单通道图像,大小与 src 相同。
        labels - 标签的输出 2D 数组(离散 Voronoi 图)。其类型为 CV_32SC1,大小与 src 相同。
        distanceType - 距离类型,参见 #DistanceTypes
        maskSize - 距离变换掩码的大小,参见 #DistanceTransformMasks。此变体不支持 #DIST_MASK_PRECISE。对于 #DIST_L1 或 #DIST_C 距离类型,该参数强制为 3,因为 \(3\times 3\) 掩码产生与 \(5\times 5\) 或任何更大光圈相同的结果。
      • distanceTransform

        public static void distanceTransform​(Mat src,
                                             Mat dst,
                                             int distanceType,
                                             int maskSize,
                                             int dstType)
        参数
        src - 8 位单通道(二值)源图像。
        dst - 输出图像,包含计算出的距离。它是 8 位或 32 位浮点型、单通道图像,大小与 src 相同。
        distanceType - 距离类型,参见 #DistanceTypes
        maskSize - 距离变换掩码的大小,参见 #DistanceTransformMasks。对于 #DIST_L1 或 #DIST_C 距离类型,该参数强制为 3,因为 \(3\times 3\) 掩码产生与 \(5\times 5\) 或任何更大光圈相同的结果。
        dstType - 输出图像类型。可以是 CV_8U 或 CV_32F。CV_8U 类型只能用于函数的第一种变体和 distanceType == #DIST_L1。
      • distanceTransform

        public static void distanceTransform​(Mat src,
                                             Mat dst,
                                             int distanceType,
                                             int maskSize)
        参数
        src - 8 位单通道(二值)源图像。
        dst - 输出图像,包含计算出的距离。它是 8 位或 32 位浮点型、单通道图像,大小与 src 相同。
        distanceType - 距离类型,参见 #DistanceTypes
        maskSize - 距离变换掩码的大小,参见 #DistanceTransformMasks。对于 #DIST_L1 或 #DIST_C 距离类型,该参数强制为 3,因为 \(3\times 3\) 掩码产生与 \(5\times 5\) 或任何更大光圈相同的结果。函数的第一种变体和 distanceType == #DIST_L1。
      • floodFill

        public static int floodFill​(Mat image,
                                    Mat mask,
                                    Point seedPoint,
                                    Scalar newVal,
                                    Rect rect,
                                    Scalar loDiff,
                                    Scalar upDiff,
                                    int flags)
        用给定颜色填充连通分量。函数 cv::floodFill 从种子点开始,用指定颜色填充连通分量。连通性由相邻像素的颜色/亮度接近程度决定。在以下情况下,像素 \((x,y)\) 被认为属于重绘区域:
        • 在灰度图像和浮动范围的情况下 \(\texttt{src} (x',y')- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} (x',y')+ \texttt{upDiff}\)
        • 在灰度图像和固定范围的情况下 \(\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)+ \texttt{upDiff}\)
        • 在彩色图像和浮动范围的情况下 \(\texttt{src} (x',y')_r- \texttt{loDiff} _r \leq \texttt{src} (x,y)_r \leq \texttt{src} (x',y')_r+ \texttt{upDiff} _r,\) \(\texttt{src} (x',y')_g- \texttt{loDiff} _g \leq \texttt{src} (x,y)_g \leq \texttt{src} (x',y')_g+ \texttt{upDiff} _g\) 和 \(\texttt{src} (x',y')_b- \texttt{loDiff} _b \leq \texttt{src} (x,y)_b \leq \texttt{src} (x',y')_b+ \texttt{upDiff} _b\)
        • 在彩色图像和固定范围的情况下 \(\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_r- \texttt{loDiff} _r \leq \texttt{src} (x,y)_r \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_r+ \texttt{upDiff} _r,\) \(\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_g- \texttt{loDiff} _g \leq \texttt{src} (x,y)_g \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_g+ \texttt{upDiff} _g\) 和 \(\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_b- \texttt{loDiff} _b \leq \texttt{src} (x,y)_b \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_b+ \texttt{upDiff} _b\)
        其中 \(src(x',y')\) 是已知属于该分量的某个相邻像素的值。也就是说,要添加到连通分量中,像素的颜色/亮度应足够接近:
        • 在浮动范围的情况下,其已属于连通分量的一个邻居的颜色/亮度。
        • 在固定范围的情况下,种子点的颜色/亮度。
        使用这些函数可以将连通分量就地标记为指定颜色,或者构建掩码然后提取轮廓,或者将区域复制到另一个图像,等等。
        参数
        image - 输入/输出 1 或 3 通道、8 位或浮点图像。除非在函数的第二种变体中设置了 #FLOODFILL_MASK_ONLY 标志,否则函数会修改此图像。详情请参阅下文。
        mask - 操作掩码,应为单通道 8 位图像,比 image 宽 2 像素高 2 像素。如果传入空的 Mat,它将自动创建。由于这是一个输入和输出参数,您必须负责对其进行初始化。在输入掩码中,填充不能穿过非零像素。例如,边缘检测器输出可以用作掩码以在边缘处停止填充。在输出时,掩码中与图像中填充像素对应的像素将设置为 1 或设置为 flags 中指定的值,如下所述。此外,函数会用 1 填充掩码的边框以简化内部处理。因此,可以在对函数的多次调用中使用相同的掩码,以确保填充区域不重叠。
        seedPoint - 起始点。
        newVal - 重绘域像素的新值。
        loDiff - 当前观察到的像素与其属于该分量的邻居之一或添加到该分量的种子像素之间的最大亮度/颜色下限差。
        upDiff - 当前观察到的像素与其属于该分量的邻居之一或添加到该分量的种子像素之间的最大亮度/颜色上限差。
        rect - 可选输出参数,由函数设置为重绘域的最小边界矩形。
        flags - 操作标志。前 8 位包含连通性值。默认值 4 表示只考虑最近的四个邻居像素(共享一条边的像素)。连通性值 8 表示将考虑最近的八个邻居像素(共享一个角的像素)。接下来的 8 位(8-16)包含一个介于 1 到 255 之间的值,用于填充掩码(默认值为 1)。例如,4 | ( 255 << 8 ) 将考虑 4 个最近的邻居并用值 255 填充掩码。以下附加选项占据更高位,因此可以通过位或 (|) 与连通性和掩码填充值进一步组合,参见 #FloodFillFlags。注意:由于掩码比填充图像大,因此图像中的像素 \((x, y)\) 对应于掩码中的像素 \((x+1, y+1)\)。参见:findContours
        返回
        自动生成
      • floodFill

        public static int floodFill​(Mat image,
                                    Mat mask,
                                    Point seedPoint,
                                    Scalar newVal,
                                    Rect rect,
                                    Scalar loDiff,
                                    Scalar upDiff)
        用给定颜色填充连通分量。函数 cv::floodFill 从种子点开始,用指定颜色填充连通分量。连通性由相邻像素的颜色/亮度接近程度决定。在以下情况下,像素 \((x,y)\) 被认为属于重绘区域:
        • 在灰度图像和浮动范围的情况下 \(\texttt{src} (x',y')- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} (x',y')+ \texttt{upDiff}\)
        • 在灰度图像和固定范围的情况下 \(\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)+ \texttt{upDiff}\)
        • 在彩色图像和浮动范围的情况下 \(\texttt{src} (x',y')_r- \texttt{loDiff} _r \leq \texttt{src} (x,y)_r \leq \texttt{src} (x',y')_r+ \texttt{upDiff} _r,\) \(\texttt{src} (x',y')_g- \texttt{loDiff} _g \leq \texttt{src} (x,y)_g \leq \texttt{src} (x',y')_g+ \texttt{upDiff} _g\) 和 \(\texttt{src} (x',y')_b- \texttt{loDiff} _b \leq \texttt{src} (x,y)_b \leq \texttt{src} (x',y')_b+ \texttt{upDiff} _b\)
        • 在彩色图像和固定范围的情况下 \(\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_r- \texttt{loDiff} _r \leq \texttt{src} (x,y)_r \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_r+ \texttt{upDiff} _r,\) \(\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_g- \texttt{loDiff} _g \leq \texttt{src} (x,y)_g \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_g+ \texttt{upDiff} _g\) 和 \(\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_b- \texttt{loDiff} _b \leq \texttt{src} (x,y)_b \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_b+ \texttt{upDiff} _b\)
        其中 \(src(x',y')\) 是已知属于该分量的某个相邻像素的值。也就是说,要添加到连通分量中,像素的颜色/亮度应足够接近:
        • 在浮动范围的情况下,其已属于连通分量的一个邻居的颜色/亮度。
        • 在固定范围的情况下,种子点的颜色/亮度。
        使用这些函数可以将连通分量就地标记为指定颜色,或者构建掩码然后提取轮廓,或者将区域复制到另一个图像,等等。
        参数
        image - 输入/输出 1 或 3 通道、8 位或浮点图像。除非在函数的第二种变体中设置了 #FLOODFILL_MASK_ONLY 标志,否则函数会修改此图像。详情请参阅下文。
        mask - 操作掩码,应为单通道 8 位图像,比 image 宽 2 像素高 2 像素。如果传入空的 Mat,它将自动创建。由于这是一个输入和输出参数,您必须负责对其进行初始化。在输入掩码中,填充不能穿过非零像素。例如,边缘检测器输出可以用作掩码以在边缘处停止填充。在输出时,掩码中与图像中填充像素对应的像素将设置为 1 或设置为 flags 中指定的值,如下所述。此外,函数会用 1 填充掩码的边框以简化内部处理。因此,可以在对函数的多次调用中使用相同的掩码,以确保填充区域不重叠。
        seedPoint - 起始点。
        newVal - 重绘域像素的新值。
        loDiff - 当前观察到的像素与其属于该分量的邻居之一或添加到该分量的种子像素之间的最大亮度/颜色下限差。
        upDiff - 当前观察到的像素与其属于该分量的邻居之一或添加到该分量的种子像素之间的最大亮度/颜色上限差。
        rect - 可选输出参数,由函数设置为重绘域的最小边界矩形。4 表示只考虑最近的四个邻居像素(共享一条边的像素)。连通性值 8 表示将考虑最近的八个邻居像素(共享一个角的像素)。接下来的 8 位(8-16)包含一个介于 1 到 255 之间的值,用于填充掩码(默认值为 1)。例如,4 | ( 255 << 8 ) 将考虑 4 个最近的邻居并用值 255 填充掩码。以下附加选项占据更高位,因此可以通过位或 (|) 与连通性和掩码填充值进一步组合,参见 #FloodFillFlags。注意:由于掩码比填充图像大,因此图像中的像素 \((x, y)\) 对应于掩码中的像素 \((x+1, y+1)\)。参见:findContours
        返回
        自动生成
      • floodFill

        public static int floodFill​(Mat image,
                                    Mat mask,
                                    Point seedPoint,
                                    Scalar newVal,
                                    Rect rect,
                                    Scalar loDiff)
        用给定颜色填充连通分量。函数 cv::floodFill 从种子点开始,用指定颜色填充连通分量。连通性由相邻像素的颜色/亮度接近程度决定。在以下情况下,像素 \((x,y)\) 被认为属于重绘区域:
        • 在灰度图像和浮动范围的情况下 \(\texttt{src} (x',y')- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} (x',y')+ \texttt{upDiff}\)
        • 在灰度图像和固定范围的情况下 \(\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)+ \texttt{upDiff}\)
        • 在彩色图像和浮动范围的情况下 \(\texttt{src} (x',y')_r- \texttt{loDiff} _r \leq \texttt{src} (x,y)_r \leq \texttt{src} (x',y')_r+ \texttt{upDiff} _r,\) \(\texttt{src} (x',y')_g- \texttt{loDiff} _g \leq \texttt{src} (x,y)_g \leq \texttt{src} (x',y')_g+ \texttt{upDiff} _g\) 和 \(\texttt{src} (x',y')_b- \texttt{loDiff} _b \leq \texttt{src} (x,y)_b \leq \texttt{src} (x',y')_b+ \texttt{upDiff} _b\)
        • 在彩色图像和固定范围的情况下 \(\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_r- \texttt{loDiff} _r \leq \texttt{src} (x,y)_r \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_r+ \texttt{upDiff} _r,\) \(\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_g- \texttt{loDiff} _g \leq \texttt{src} (x,y)_g \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_g+ \texttt{upDiff} _g\) 和 \(\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_b- \texttt{loDiff} _b \leq \texttt{src} (x,y)_b \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_b+ \texttt{upDiff} _b\)
        其中 \(src(x',y')\) 是已知属于该分量的某个相邻像素的值。也就是说,要添加到连通分量中,像素的颜色/亮度应足够接近:
        • 在浮动范围的情况下,其已属于连通分量的一个邻居的颜色/亮度。
        • 在固定范围的情况下,种子点的颜色/亮度。
        使用这些函数可以将连通分量就地标记为指定颜色,或者构建掩码然后提取轮廓,或者将区域复制到另一个图像,等等。
        参数
        image - 输入/输出 1 或 3 通道、8 位或浮点图像。除非在函数的第二种变体中设置了 #FLOODFILL_MASK_ONLY 标志,否则函数会修改此图像。详情请参阅下文。
        mask - 操作掩码,应为单通道 8 位图像,比 image 宽 2 像素高 2 像素。如果传入空的 Mat,它将自动创建。由于这是一个输入和输出参数,您必须负责对其进行初始化。在输入掩码中,填充不能穿过非零像素。例如,边缘检测器输出可以用作掩码以在边缘处停止填充。在输出时,掩码中与图像中填充像素对应的像素将设置为 1 或设置为 flags 中指定的值,如下所述。此外,函数会用 1 填充掩码的边框以简化内部处理。因此,可以在对函数的多次调用中使用相同的掩码,以确保填充区域不重叠。
        seedPoint - 起始点。
        newVal - 重绘域像素的新值。
        loDiff - 当前观察到的像素与其属于该分量的邻居之一或添加到该分量的种子像素之间的最大亮度/颜色下限差。其属于该分量的邻居之一或添加到该分量的种子像素。
        rect - 可选输出参数,由函数设置为重绘域的最小边界矩形。4 表示只考虑最近的四个邻居像素(共享一条边的像素)。连通性值 8 表示将考虑最近的八个邻居像素(共享一个角的像素)。接下来的 8 位(8-16)包含一个介于 1 到 255 之间的值,用于填充掩码(默认值为 1)。例如,4 | ( 255 << 8 ) 将考虑 4 个最近的邻居并用值 255 填充掩码。以下附加选项占据更高位,因此可以通过位或 (|) 与连通性和掩码填充值进一步组合,参见 #FloodFillFlags。注意:由于掩码比填充图像大,因此图像中的像素 \((x, y)\) 对应于掩码中的像素 \((x+1, y+1)\)。参见:findContours
        返回
        自动生成
      • floodFill

        public static int floodFill​(Mat image,
                                    Mat mask,
                                    Point seedPoint,
                                    Scalar newVal,
                                    Rect rect)
        用给定颜色填充连通分量。函数 cv::floodFill 从种子点开始,用指定颜色填充连通分量。连通性由相邻像素的颜色/亮度接近程度决定。在以下情况下,像素 \((x,y)\) 被认为属于重绘区域:
        • 在灰度图像和浮动范围的情况下 \(\texttt{src} (x',y')- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} (x',y')+ \texttt{upDiff}\)
        • 在灰度图像和固定范围的情况下 \(\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)+ \texttt{upDiff}\)
        • 在彩色图像和浮动范围的情况下 \(\texttt{src} (x',y')_r- \texttt{loDiff} _r \leq \texttt{src} (x,y)_r \leq \texttt{src} (x',y')_r+ \texttt{upDiff} _r,\) \(\texttt{src} (x',y')_g- \texttt{loDiff} _g \leq \texttt{src} (x,y)_g \leq \texttt{src} (x',y')_g+ \texttt{upDiff} _g\) 和 \(\texttt{src} (x',y')_b- \texttt{loDiff} _b \leq \texttt{src} (x,y)_b \leq \texttt{src} (x',y')_b+ \texttt{upDiff} _b\)
        • 在彩色图像和固定范围的情况下 \(\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_r- \texttt{loDiff} _r \leq \texttt{src} (x,y)_r \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_r+ \texttt{upDiff} _r,\) \(\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_g- \texttt{loDiff} _g \leq \texttt{src} (x,y)_g \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_g+ \texttt{upDiff} _g\) 和 \(\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_b- \texttt{loDiff} _b \leq \texttt{src} (x,y)_b \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_b+ \texttt{upDiff} _b\)
        其中 \(src(x',y')\) 是已知属于该分量的某个相邻像素的值。也就是说,要添加到连通分量中,像素的颜色/亮度应足够接近:
        • 在浮动范围的情况下,其已属于连通分量的一个邻居的颜色/亮度。
        • 在固定范围的情况下,种子点的颜色/亮度。
        使用这些函数可以将连通分量就地标记为指定颜色,或者构建掩码然后提取轮廓,或者将区域复制到另一个图像,等等。
        参数
        image - 输入/输出 1 或 3 通道、8 位或浮点图像。除非在函数的第二种变体中设置了 #FLOODFILL_MASK_ONLY 标志,否则函数会修改此图像。详情请参阅下文。
        mask - 操作掩码,应为单通道 8 位图像,比 image 宽 2 像素高 2 像素。如果传入空的 Mat,它将自动创建。由于这是一个输入和输出参数,您必须负责对其进行初始化。在输入掩码中,填充不能穿过非零像素。例如,边缘检测器输出可以用作掩码以在边缘处停止填充。在输出时,掩码中与图像中填充像素对应的像素将设置为 1 或设置为 flags 中指定的值,如下所述。此外,函数会用 1 填充掩码的边框以简化内部处理。因此,可以在对函数的多次调用中使用相同的掩码,以确保填充区域不重叠。
        seedPoint - 起始点。
        newVal - 重绘域像素的新值。其属于该分量的邻居之一或添加到该分量的种子像素。其属于该分量的邻居之一或添加到该分量的种子像素。
        rect - 可选输出参数,由函数设置为重绘域的最小边界矩形。4 表示只考虑最近的四个邻居像素(共享一条边的像素)。连通性值 8 表示将考虑最近的八个邻居像素(共享一个角的像素)。接下来的 8 位(8-16)包含一个介于 1 到 255 之间的值,用于填充掩码(默认值为 1)。例如,4 | ( 255 << 8 ) 将考虑 4 个最近的邻居并用值 255 填充掩码。以下附加选项占据更高位,因此可以通过位或 (|) 与连通性和掩码填充值进一步组合,参见 #FloodFillFlags。注意:由于掩码比填充图像大,因此图像中的像素 \((x, y)\) 对应于掩码中的像素 \((x+1, y+1)\)。参见:findContours
        返回
        自动生成
      • floodFill

        public static int floodFill​(Mat image,
                                    Mat mask,
                                    Point seedPoint,
                                    Scalar newVal)
        用给定颜色填充连通分量。函数 cv::floodFill 从种子点开始,用指定颜色填充连通分量。连通性由相邻像素的颜色/亮度接近程度决定。在以下情况下,像素 \((x,y)\) 被认为属于重绘区域:
        • 在灰度图像和浮动范围的情况下 \(\texttt{src} (x',y')- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} (x',y')+ \texttt{upDiff}\)
        • 在灰度图像和固定范围的情况下 \(\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)+ \texttt{upDiff}\)
        • 在彩色图像和浮动范围的情况下 \(\texttt{src} (x',y')_r- \texttt{loDiff} _r \leq \texttt{src} (x,y)_r \leq \texttt{src} (x',y')_r+ \texttt{upDiff} _r,\) \(\texttt{src} (x',y')_g- \texttt{loDiff} _g \leq \texttt{src} (x,y)_g \leq \texttt{src} (x',y')_g+ \texttt{upDiff} _g\) 和 \(\texttt{src} (x',y')_b- \texttt{loDiff} _b \leq \texttt{src} (x,y)_b \leq \texttt{src} (x',y')_b+ \texttt{upDiff} _b\)
        • 在彩色图像和固定范围的情况下 \(\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_r- \texttt{loDiff} _r \leq \texttt{src} (x,y)_r \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_r+ \texttt{upDiff} _r,\) \(\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_g- \texttt{loDiff} _g \leq \texttt{src} (x,y)_g \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_g+ \texttt{upDiff} _g\) 和 \(\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_b- \texttt{loDiff} _b \leq \texttt{src} (x,y)_b \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)_b+ \texttt{upDiff} _b\)
        其中 \(src(x',y')\) 是已知属于该分量的某个相邻像素的值。也就是说,要添加到连通分量中,像素的颜色/亮度应足够接近:
        • 在浮动范围的情况下,其已属于连通分量的一个邻居的颜色/亮度。
        • 在固定范围的情况下,种子点的颜色/亮度。
        使用这些函数可以将连通分量就地标记为指定颜色,或者构建掩码然后提取轮廓,或者将区域复制到另一个图像,等等。
        参数
        image - 输入/输出 1 或 3 通道、8 位或浮点图像。除非在函数的第二种变体中设置了 #FLOODFILL_MASK_ONLY 标志,否则函数会修改此图像。详情请参阅下文。
        mask - 操作掩码,应为单通道 8 位图像,比 image 宽 2 像素高 2 像素。如果传入空的 Mat,它将自动创建。由于这是一个输入和输出参数,您必须负责对其进行初始化。在输入掩码中,填充不能穿过非零像素。例如,边缘检测器输出可以用作掩码以在边缘处停止填充。在输出时,掩码中与图像中填充像素对应的像素将设置为 1 或设置为 flags 中指定的值,如下所述。此外,函数会用 1 填充掩码的边框以简化内部处理。因此,可以在对函数的多次调用中使用相同的掩码,以确保填充区域不重叠。
        seedPoint - 起始点。
        newVal - 重绘域像素的新值。其属于该分量的邻居之一或添加到该分量的种子像素。其属于该分量的邻居之一或添加到该分量的种子像素。重绘域。4 表示只考虑最近的四个邻居像素(共享一条边的像素)。连通性值 8 表示将考虑最近的八个邻居像素(共享一个角的像素)。接下来的 8 位(8-16)包含一个介于 1 到 255 之间的值,用于填充掩码(默认值为 1)。例如,4 | ( 255 << 8 ) 将考虑 4 个最近的邻居并用值 255 填充掩码。以下附加选项占据更高位,因此可以通过位或 (|) 与连通性和掩码填充值进一步组合,参见 #FloodFillFlags。注意:由于掩码比填充图像大,因此图像中的像素 \((x, y)\) 对应于掩码中的像素 \((x+1, y+1)\)。参见:findContours
        返回
        自动生成
      • blendLinear

        public static void blendLinear​(Mat src1,
                                       Mat src2,
                                       Mat weights1,
                                       Mat weights2,
                                       Mat dst)
        不带 `mask` 参数的变体
        参数
        src1 - 自动生成
        src2 - 自动生成
        weights1 - 自动生成
        weights2 - 自动生成
        dst - 自动生成
      • cvtColor

        public static void cvtColor​(Mat src,
                                    Mat dst,
                                    int code,
                                    int dstCn,
                                    int hint)
        将图像从一个颜色空间转换为另一个颜色空间。该函数将输入图像从一个颜色空间转换为另一个颜色空间。在 RGB 颜色空间转换的情况下,应明确指定通道的顺序(RGB 或 BGR)。请注意,OpenCV 中的默认颜色格式通常称为 RGB,但实际上是 BGR(字节顺序相反)。因此,标准(24 位)彩色图像中的第一个字节将是 8 位蓝色分量,第二个字节将是绿色,第三个字节将是红色。第四、第五和第六个字节将是第二个像素(蓝色,然后是绿色,然后是红色),依此类推。R、G 和 B 通道值的常规范围是:
        • CV_8U 图像为 0 到 255
        • CV_16U 图像为 0 到 65535
        • CV_32F 图像为 0 到 1
        在线性变换的情况下,范围无关紧要。但对于非线性变换,输入 RGB 图像应归一化到适当的值范围以获得正确的结果,例如,对于 RGB \(\rightarrow\) L*u*v* 变换。例如,如果您有一个直接从 8 位图像转换而来且未进行任何缩放的 32 位浮点图像,那么它将具有 0..255 的值范围,而不是函数假定的 0..1。因此,在调用 #cvtColor 之前,您需要先将图像缩小: img *= 1./255; cvtColor(img, img, COLOR_BGR2Luv); 如果您使用 #cvtColor 处理 8 位图像,转换会丢失一些信息。对于许多应用程序来说,这不会很明显,但建议在需要全范围颜色或在操作前转换图像然后再转换回来的应用程序中使用 32 位图像。如果转换添加了 alpha 通道,其值将设置为相应通道范围的最大值:CV_8U 为 255,CV_16U 为 65535,CV_32F 为 1。
        参数
        src - 输入图像:8 位无符号、16 位无符号 ( CV_16UC... ) 或单精度浮点型。
        dst - 输出图像,与 src 具有相同的大小和深度。
        code - 颜色空间转换代码(参见 #ColorConversionCodes)。
        dstCn - 目标图像中的通道数;如果参数为 0,则通道数将根据 src 和 code 自动推导。
        hint - 实现修改标志。参见 #AlgorithmHint 参见:REF: imgproc_color_conversions
      • cvtColor

        public static void cvtColor​(Mat src,
                                    Mat dst,
                                    int code,
                                    int dstCn)
        将图像从一个颜色空间转换为另一个颜色空间。该函数将输入图像从一个颜色空间转换为另一个颜色空间。在 RGB 颜色空间转换的情况下,应明确指定通道的顺序(RGB 或 BGR)。请注意,OpenCV 中的默认颜色格式通常称为 RGB,但实际上是 BGR(字节顺序相反)。因此,标准(24 位)彩色图像中的第一个字节将是 8 位蓝色分量,第二个字节将是绿色,第三个字节将是红色。第四、第五和第六个字节将是第二个像素(蓝色,然后是绿色,然后是红色),依此类推。R、G 和 B 通道值的常规范围是:
        • CV_8U 图像为 0 到 255
        • CV_16U 图像为 0 到 65535
        • CV_32F 图像为 0 到 1
        在线性变换的情况下,范围无关紧要。但对于非线性变换,输入 RGB 图像应归一化到适当的值范围以获得正确的结果,例如,对于 RGB \(\rightarrow\) L*u*v* 变换。例如,如果您有一个直接从 8 位图像转换而来且未进行任何缩放的 32 位浮点图像,那么它将具有 0..255 的值范围,而不是函数假定的 0..1。因此,在调用 #cvtColor 之前,您需要先将图像缩小: img *= 1./255; cvtColor(img, img, COLOR_BGR2Luv); 如果您使用 #cvtColor 处理 8 位图像,转换会丢失一些信息。对于许多应用程序来说,这不会很明显,但建议在需要全范围颜色或在操作前转换图像然后再转换回来的应用程序中使用 32 位图像。如果转换添加了 alpha 通道,其值将设置为相应通道范围的最大值:CV_8U 为 255,CV_16U 为 65535,CV_32F 为 1。
        参数
        src - 输入图像:8 位无符号、16 位无符号 ( CV_16UC... ) 或单精度浮点型。
        dst - 输出图像,与 src 具有相同的大小和深度。
        code - 颜色空间转换代码(参见 #ColorConversionCodes)。
        dstCn - 目标图像中的通道数;如果参数为 0,则通道数将根据 src 和 code 自动推导。参见:REF: imgproc_color_conversions
      • cvtColor

        public static void cvtColor​(Mat src,
                                    Mat dst,
                                    int code)
        将图像从一个颜色空间转换为另一个颜色空间。该函数将输入图像从一个颜色空间转换为另一个颜色空间。在 RGB 颜色空间转换的情况下,应明确指定通道的顺序(RGB 或 BGR)。请注意,OpenCV 中的默认颜色格式通常称为 RGB,但实际上是 BGR(字节顺序相反)。因此,标准(24 位)彩色图像中的第一个字节将是 8 位蓝色分量,第二个字节将是绿色,第三个字节将是红色。第四、第五和第六个字节将是第二个像素(蓝色,然后是绿色,然后是红色),依此类推。R、G 和 B 通道值的常规范围是:
        • CV_8U 图像为 0 到 255
        • CV_16U 图像为 0 到 65535
        • CV_32F 图像为 0 到 1
        在线性变换的情况下,范围无关紧要。但对于非线性变换,输入 RGB 图像应归一化到适当的值范围以获得正确的结果,例如,对于 RGB \(\rightarrow\) L*u*v* 变换。例如,如果您有一个直接从 8 位图像转换而来且未进行任何缩放的 32 位浮点图像,那么它将具有 0..255 的值范围,而不是函数假定的 0..1。因此,在调用 #cvtColor 之前,您需要先将图像缩小: img *= 1./255; cvtColor(img, img, COLOR_BGR2Luv); 如果您使用 #cvtColor 处理 8 位图像,转换会丢失一些信息。对于许多应用程序来说,这不会很明显,但建议在需要全范围颜色或在操作前转换图像然后再转换回来的应用程序中使用 32 位图像。如果转换添加了 alpha 通道,其值将设置为相应通道范围的最大值:CV_8U 为 255,CV_16U 为 65535,CV_32F 为 1。
        参数
        src - 输入图像:8 位无符号、16 位无符号 ( CV_16UC... ) 或单精度浮点型。
        dst - 输出图像,与 src 具有相同的大小和深度。
        code - 颜色空间转换代码(参见 #ColorConversionCodes)。通道数根据 src 和 code 自动推导。参见:REF: imgproc_color_conversions
      • cvtColorTwoPlane

        public static void cvtColorTwoPlane​(Mat src1,
                                            Mat src2,
                                            Mat dst,
                                            int code,
                                            int hint)
        将图像从一个颜色空间转换为另一个颜色空间,其中源图像存储在两个平面中。目前,此函数仅支持 YUV420 到 RGB 转换。
        参数
        src1 - Y 平面的 8 位图像 (#CV_8U)。
        src2 - 包含交错 U/V 平面的图像。
        dst - 输出图像。
        code - 指定转换类型。它可以取以下任何值:
        • #COLOR_YUV2BGR_NV12
        • #COLOR_YUV2RGB_NV12
        • #COLOR_YUV2BGRA_NV12
        • #COLOR_YUV2RGBA_NV12
        • #COLOR_YUV2BGR_NV21
        • #COLOR_YUV2RGB_NV21
        • #COLOR_YUV2BGRA_NV21
        • #COLOR_YUV2RGBA_NV21
        hint - 实现修改标志。参见 #AlgorithmHint
      • cvtColorTwoPlane

        public static void cvtColorTwoPlane​(Mat src1,
                                            Mat src2,
                                            Mat dst,
                                            int code)
        将图像从一个颜色空间转换为另一个颜色空间,其中源图像存储在两个平面中。目前,此函数仅支持 YUV420 到 RGB 转换。
        参数
        src1 - Y 平面的 8 位图像 (#CV_8U)。
        src2 - 包含交错 U/V 平面的图像。
        dst - 输出图像。
        code - 指定转换类型。它可以取以下任何值:
        • #COLOR_YUV2BGR_NV12
        • #COLOR_YUV2RGB_NV12
        • #COLOR_YUV2BGRA_NV12
        • #COLOR_YUV2RGBA_NV12
        • #COLOR_YUV2BGR_NV21
        • #COLOR_YUV2RGB_NV21
        • #COLOR_YUV2BGRA_NV21
        • #COLOR_YUV2RGBA_NV21
      • demosaicing

        public static void demosaicing​(Mat src,
                                       Mat dst,
                                       int code,
                                       int dstCn)
        main function for all demosaicing processes
        参数
        src - 输入图像:8 位无符号或 16 位无符号。
        dst - 输出图像,与 src 具有相同的大小和深度。
        code - 颜色空间转换代码(参见下文描述)。
        dstCn - 目标图像中的通道数;如果参数为 0,则通道数将根据 src 和 code 自动推导。该函数可以执行以下转换:
        • 使用双线性插值去马赛克
        #COLOR_BayerBG2BGR, #COLOR_BayerGB2BGR, #COLOR_BayerRG2BGR, #COLOR_BayerGR2BGR #COLOR_BayerBG2GRAY, #COLOR_BayerGB2GRAY, #COLOR_BayerRG2GRAY, #COLOR_BayerGR2GRAY
        • 使用可变数量梯度的去马赛克。
        #COLOR_BayerBG2BGR_VNG, #COLOR_BayerGB2BGR_VNG, #COLOR_BayerRG2BGR_VNG, #COLOR_BayerGR2BGR_VNG
        • 边缘感知去马赛克。
        #COLOR_BayerBG2BGR_EA, #COLOR_BayerGB2BGR_EA, #COLOR_BayerRG2BGR_EA, #COLOR_BayerGR2BGR_EA
        • 带 Alpha 通道的去马赛克
        #COLOR_BayerBG2BGRA, #COLOR_BayerGB2BGRA, #COLOR_BayerRG2BGRA, #COLOR_BayerGR2BGRA 参见:cvtColor
      • demosaicing

        public static void demosaicing​(Mat src,
                                       Mat dst,
                                       int code)
        main function for all demosaicing processes
        参数
        src - 输入图像:8 位无符号或 16 位无符号。
        dst - 输出图像,与 src 具有相同的大小和深度。
        code - 颜色空间转换代码(参见下文描述)。通道数根据 src 和 code 自动推导。该函数可以执行以下转换:
        • 使用双线性插值去马赛克
        #COLOR_BayerBG2BGR, #COLOR_BayerGB2BGR, #COLOR_BayerRG2BGR, #COLOR_BayerGR2BGR #COLOR_BayerBG2GRAY, #COLOR_BayerGB2GRAY, #COLOR_BayerRG2GRAY, #COLOR_BayerGR2GRAY
        • 使用可变数量梯度的去马赛克。
        #COLOR_BayerBG2BGR_VNG, #COLOR_BayerGB2BGR_VNG, #COLOR_BayerRG2BGR_VNG, #COLOR_BayerGR2BGR_VNG
        • 边缘感知去马赛克。
        #COLOR_BayerBG2BGR_EA, #COLOR_BayerGB2BGR_EA, #COLOR_BayerRG2BGR_EA, #COLOR_BayerGR2BGR_EA
        • 带 Alpha 通道的去马赛克
        #COLOR_BayerBG2BGRA, #COLOR_BayerGB2BGRA, #COLOR_BayerRG2BGRA, #COLOR_BayerGR2BGRA 参见:cvtColor
      • moments

        public static Moments moments​(Mat array,
                                      boolean binaryImage)
        计算多边形或栅格化形状的所有三阶矩。该函数计算矢量形状或栅格化形状的三阶矩。结果在 cv::Moments 结构中返回。
        参数
        array - 单通道栅格图像(CV_8U、CV_16U、CV_16S、CV_32F、CV_64F)或 2D 点数组(\(1 \times N\) 或 \(N \times 1\) )(Point 或 Point2f)。
        binaryImage - 如果为 true,则所有非零图像像素都视为 1。该参数仅用于图像。
        返回
        矩。注意:仅适用于 Python 绑定中的轮廓矩计算:请注意,输入数组的 numpy 类型应为 np.int32 或 np.float32。参见:contourArea, arcLength
      • moments

        public static Moments moments​(Mat array)
        计算多边形或栅格化形状的所有三阶矩。该函数计算矢量形状或栅格化形状的三阶矩。结果在 cv::Moments 结构中返回。
        参数
        array - 单通道栅格图像(CV_8U、CV_16U、CV_16S、CV_32F、CV_64F)或 2D 点数组(\(1 \times N\) 或 \(N \times 1\) )(Point 或 Point2f)。仅用于图像。
        返回
        矩。注意:仅适用于 Python 绑定中的轮廓矩计算:请注意,输入数组的 numpy 类型应为 np.int32 或 np.float32。参见:contourArea, arcLength
      • HuMoments

        public static void HuMoments​(Moments m,
                                     Mat hu)
      • matchTemplate

        public static void matchTemplate​(Mat image,
                                         Mat templ,
                                         Mat result,
                                         int method,
                                         Mat mask)
        将模板与重叠图像区域进行比较。函数滑动图像,使用指定方法将大小为 \(w \times h\) 的重叠块与 templ 进行比较,并将比较结果存储在 result 中。#TemplateMatchModes 描述了可用比较方法的公式(\(I\) 表示图像,\(T\) 模板,\(R\) 结果,\(M\) 可选掩码)。求和是在模板和/或图像块上进行的:\(x' = 0...w-1, y' = 0...h-1\) 函数完成比较后,可以使用 #minMaxLoc 函数找到最佳匹配作为全局最小值(当使用 #TM_SQDIFF 时)或最大值(当使用 #TM_CCORR 或 #TM_CCOEFF 时)。对于彩色图像,分子中的模板求和和分母中的每个求和是在所有通道上进行的,并且每个通道使用单独的平均值。也就是说,该函数可以接受彩色模板和彩色图像。结果仍然是单通道图像,这更容易分析。
        参数
        image - 正在进行搜索的图像。它必须是 8 位或 32 位浮点型。
        templ - 搜索的模板。它必须不大于源图像,并且具有相同的数据类型。
        result - 比较结果映射。它必须是单通道 32 位浮点型。如果 image 大小为 \(W \times H\),templ 大小为 \(w \times h\),则 result 大小为 \((W-w+1) \times (H-h+1)\)。
        method - 指定比较方法的参数,参见 #TemplateMatchModes
        mask - 可选掩码。它必须与 templ 大小相同。它必须具有与模板相同的通道数或仅有一个通道,该通道将用于所有模板和图像通道。如果数据类型是 #CV_8U,则掩码被解释为二值掩码,这意味着只有掩码非零的元素才会被使用,并且保持不变,无论实际掩码值(权重等于 1)如何。对于数据类型 #CV_32F,掩码值用作权重。精确公式记录在 #TemplateMatchModes 中。
      • matchTemplate

        public static void matchTemplate​(Mat image,
                                         Mat templ,
                                         Mat result,
                                         int method)
        将模板与重叠图像区域进行比较。函数滑动图像,使用指定方法将大小为 \(w \times h\) 的重叠块与 templ 进行比较,并将比较结果存储在 result 中。#TemplateMatchModes 描述了可用比较方法的公式(\(I\) 表示图像,\(T\) 模板,\(R\) 结果,\(M\) 可选掩码)。求和是在模板和/或图像块上进行的:\(x' = 0...w-1, y' = 0...h-1\) 函数完成比较后,可以使用 #minMaxLoc 函数找到最佳匹配作为全局最小值(当使用 #TM_SQDIFF 时)或最大值(当使用 #TM_CCORR 或 #TM_CCOEFF 时)。对于彩色图像,分子中的模板求和和分母中的每个求和是在所有通道上进行的,并且每个通道使用单独的平均值。也就是说,该函数可以接受彩色模板和彩色图像。结果仍然是单通道图像,这更容易分析。
        参数
        image - 正在进行搜索的图像。它必须是 8 位或 32 位浮点型。
        templ - 搜索的模板。它必须不大于源图像,并且具有相同的数据类型。
        result - 比较结果映射。它必须是单通道 32 位浮点型。如果 image 大小为 \(W \times H\),templ 大小为 \(w \times h\),则 result 大小为 \((W-w+1) \times (H-h+1)\)。
        method - 指定比较方法的参数,参见 #TemplateMatchModes。通道数与模板相同或只有一个通道,该通道用于所有模板和图像通道。如果数据类型是 #CV_8U,则掩码被解释为二值掩码,这意味着只有掩码非零的元素才会被使用,并且保持不变,无论实际掩码值(权重等于 1)如何。对于数据类型 #CV_32F,掩码值用作权重。精确公式记录在 #TemplateMatchModes 中。
      • connectedComponentsWithAlgorithm

        public static int connectedComponentsWithAlgorithm​(Mat image,
                                                           Mat labels,
                                                           int connectivity,
                                                           int ltype,
                                                           int ccltype)
        计算布尔图像 image 的连通分量标记图像,具有 4 或 8 种连通性 - 返回 N,总标签数 [0, N-1],其中 0 代表背景标签。ltype 指定输出标签图像类型,这是一个基于总标签数或源图像总像素数的重要考虑因素。ccltype 指定要使用的连通分量标记算法,目前支持 Bolelli (Spaghetti) CITE: Bolelli2019、Grana (BBDT) CITE: Grana2010 和 Wu (SAUF) CITE: Wu2009 算法,详情请参见 #ConnectedComponentsAlgorithmsTypes。请注意,SAUF 算法强制标签按行主序排列,而 Spaghetti 和 BBDT 则不强制。如果启用了至少一个允许的并行框架,并且图像的行数至少是 #getNumberOfCPUs 返回的两倍,则此函数使用算法的并行版本。
        参数
        image - 要标记的 8 位单通道图像
        labels - 目标标记图像
        connectivity - 8 或 4,分别表示 8 向或 4 向连通性
        ltype - 输出图像标签类型。目前支持 CV_32S 和 CV_16U。
        ccltype - 连通分量算法类型(参见 #ConnectedComponentsAlgorithmsTypes)。
        返回
        自动生成
      • connectedComponents

        public static int connectedComponents​(Mat image,
                                              Mat labels,
                                              int connectivity,
                                              int ltype)
        参数
        image - 要标记的 8 位单通道图像
        labels - 目标标记图像
        connectivity - 8 或 4,分别表示 8 向或 4 向连通性
        ltype - 输出图像标签类型。目前支持 CV_32S 和 CV_16U。
        返回
        自动生成
      • connectedComponents

        public static int connectedComponents​(Mat image,
                                              Mat labels,
                                              int connectivity)
        参数
        image - 要标记的 8 位单通道图像
        labels - 目标标记图像
        connectivity - 8 或 4,分别表示 8 向或 4 向连通性
        返回
        自动生成
      • connectedComponents

        public static int connectedComponents​(Mat image,
                                              Mat labels)
        参数
        image - 要标记的 8 位单通道图像
        labels - 目标标记图像
        返回
        自动生成
      • connectedComponentsWithStatsWithAlgorithm

        public static int connectedComponentsWithStatsWithAlgorithm​(Mat image,
                                                                    Mat labels,
                                                                    Mat stats,
                                                                    Mat centroids,
                                                                    int connectivity,
                                                                    int ltype,
                                                                    int ccltype)
        计算布尔图像的连通分量标记图像,并为每个标记图像生成统计输出,具有 4 或 8 种连通性 - 返回 N,总标签数 [0, N-1],其中 0 代表背景标签。ltype 指定输出标签图像类型,这是一个基于总标签数或源图像总像素数的重要考虑因素。ccltype 指定要使用的连通分量标记算法,目前支持 Bolelli (Spaghetti) CITE: Bolelli2019、Grana (BBDT) CITE: Grana2010 和 Wu (SAUF) CITE: Wu2009 算法,详情请参见 #ConnectedComponentsAlgorithmsTypes。请注意,SAUF 算法强制标签按行主序排列,而 Spaghetti 和 BBDT 则不强制。如果启用了至少一个允许的并行框架,并且图像的行数至少是 #getNumberOfCPUs 返回的两倍,则此函数使用算法的并行版本(包括统计数据)。
        参数
        image - 要标记的 8 位单通道图像
        labels - 目标标记图像
        stats - 每个标签(包括背景标签)的统计输出。统计数据通过 stats(label, COLUMN) 访问,其中 COLUMN 是 #ConnectedComponentsTypes 之一,用于选择统计数据。数据类型为 CV_32S。
        centroids - 每个标签(包括背景标签)的质心输出。质心通过 centroids(label, 0) 访问 x,通过 centroids(label, 1) 访问 y。数据类型为 CV_64F。
        connectivity - 8 或 4,分别表示 8 向或 4 向连通性
        ltype - 输出图像标签类型。目前支持 CV_32S 和 CV_16U。
        ccltype - 连通分量算法类型(参见 #ConnectedComponentsAlgorithmsTypes)。
        返回
        自动生成
      • connectedComponentsWithStats

        public static int connectedComponentsWithStats​(Mat image,
                                                       Mat labels,
                                                       Mat stats,
                                                       Mat centroids,
                                                       int connectivity,
                                                       int ltype)
        参数
        image - 要标记的 8 位单通道图像
        labels - 目标标记图像
        stats - 每个标签(包括背景标签)的统计输出。统计数据通过 stats(label, COLUMN) 访问,其中 COLUMN 是 #ConnectedComponentsTypes 之一,用于选择统计数据。数据类型为 CV_32S。
        centroids - 每个标签(包括背景标签)的质心输出。质心通过 centroids(label, 0) 访问 x,通过 centroids(label, 1) 访问 y。数据类型为 CV_64F。
        connectivity - 8 或 4,分别表示 8 向或 4 向连通性
        ltype - 输出图像标签类型。目前支持 CV_32S 和 CV_16U。
        返回
        自动生成
      • connectedComponentsWithStats

        public static int connectedComponentsWithStats​(Mat image,
                                                       Mat labels,
                                                       Mat stats,
                                                       Mat centroids,
                                                       int connectivity)
        参数
        image - 要标记的 8 位单通道图像
        labels - 目标标记图像
        stats - 每个标签(包括背景标签)的统计输出。统计数据通过 stats(label, COLUMN) 访问,其中 COLUMN 是 #ConnectedComponentsTypes 之一,用于选择统计数据。数据类型为 CV_32S。
        centroids - 每个标签(包括背景标签)的质心输出。质心通过 centroids(label, 0) 访问 x,通过 centroids(label, 1) 访问 y。数据类型为 CV_64F。
        connectivity - 8 或 4,分别表示 8 向或 4 向连通性
        返回
        自动生成
      • connectedComponentsWithStats

        public static int connectedComponentsWithStats​(Mat image,
                                                       Mat labels,
                                                       Mat stats,
                                                       Mat centroids)
        参数
        image - 要标记的 8 位单通道图像
        labels - 目标标记图像
        stats - 每个标签(包括背景标签)的统计输出。统计数据通过 stats(label, COLUMN) 访问,其中 COLUMN 是 #ConnectedComponentsTypes 之一,用于选择统计数据。数据类型为 CV_32S。
        centroids - 每个标签(包括背景标签)的质心输出。质心通过 centroids(label, 0) 访问 x,通过 centroids(label, 1) 访问 y。数据类型为 CV_64F。
        返回
        自动生成
      • findContours

        public static void findContours​(Mat image,
                                        java.util.List<MatOfPoint> contours,
                                        Mat hierarchy,
                                        int mode,
                                        int method,
                                        Point offset)
        在二值图像中查找轮廓。该函数使用算法 CITE: Suzuki85 从二值图像中检索轮廓。轮廓是形状分析和对象检测与识别的有用工具。请参见 OpenCV 示例目录中的 squares.cpp。注意:自 OpenCV 3.2 以来,此函数不会修改源图像。
        参数
        image - 源图像,8 位单通道图像。非零像素被视为 1。零像素保持 0,因此图像被视为二值图像。您可以使用 #compare、#inRange、#threshold、#adaptiveThreshold、#Canny 等从灰度图像或彩色图像创建二值图像。如果 mode 等于 #RETR_CCOMP 或 #RETR_FLOODFILL,输入也可以是 32 位整数标签图像 (CV_32SC1)。
        contours - 检测到的轮廓。每个轮廓存储为点向量(例如 std::vector<std::vector<cv::Point> >)。
        hierarchy - 可选输出向量(例如 std::vector<cv::Vec4i>),包含有关图像拓扑的信息。其元素数量与轮廓数量相同。对于每个第 i 个轮廓 contours[i],元素 hierarchy[i][0]、hierarchy[i][1]、hierarchy[i][2] 和 hierarchy[i][3] 分别设置为同一层次级别的下一个和上一个轮廓、第一个子轮廓和父轮廓在 contours 中的 0 偏移索引。如果轮廓 i 没有下一个、上一个、父或嵌套轮廓,则 hierarchy[i] 的相应元素将为负值。注意:在 Python 中,hierarchy 嵌套在顶级数组中。使用 hierarchy[0][i] 访问第 i 个轮廓的层次元素。
        mode - 轮廓检索模式,参见 #RetrievalModes
        method - 轮廓逼近方法,参见 #ContourApproximationModes
        offset - 可选偏移量,每个轮廓点都将按此偏移量移动。如果轮廓是从图像 ROI 中提取的,然后需要在整个图像上下文中进行分析,则此功能很有用。
      • findContours

        public static void findContours​(Mat image,
                                        java.util.List<MatOfPoint> contours,
                                        Mat hierarchy,
                                        int mode,
                                        int method)
        在二值图像中查找轮廓。该函数使用算法 CITE: Suzuki85 从二值图像中检索轮廓。轮廓是形状分析和对象检测与识别的有用工具。请参见 OpenCV 示例目录中的 squares.cpp。注意:自 OpenCV 3.2 以来,此函数不会修改源图像。
        参数
        image - 源图像,8 位单通道图像。非零像素被视为 1。零像素保持 0,因此图像被视为二值图像。您可以使用 #compare、#inRange、#threshold、#adaptiveThreshold、#Canny 等从灰度图像或彩色图像创建二值图像。如果 mode 等于 #RETR_CCOMP 或 #RETR_FLOODFILL,输入也可以是 32 位整数标签图像 (CV_32SC1)。
        contours - 检测到的轮廓。每个轮廓存储为点向量(例如 std::vector<std::vector<cv::Point> >)。
        hierarchy - 可选输出向量(例如 std::vector<cv::Vec4i>),包含有关图像拓扑的信息。其元素数量与轮廓数量相同。对于每个第 i 个轮廓 contours[i],元素 hierarchy[i][0]、hierarchy[i][1]、hierarchy[i][2] 和 hierarchy[i][3] 分别设置为同一层次级别的下一个和上一个轮廓、第一个子轮廓和父轮廓在 contours 中的 0 偏移索引。如果轮廓 i 没有下一个、上一个、父或嵌套轮廓,则 hierarchy[i] 的相应元素将为负值。注意:在 Python 中,hierarchy 嵌套在顶级数组中。使用 hierarchy[0][i] 访问第 i 个轮廓的层次元素。
        mode - 轮廓检索模式,参见 #RetrievalModes
        method - 轮廓逼近方法,参见 #ContourApproximationModes。轮廓是从图像 ROI 中提取的,然后需要在整个图像上下文中进行分析。
      • findContoursLinkRuns

        public static void findContoursLinkRuns​(Mat image,
                                                java.util.List<Mat> contours,
                                                Mat hierarchy)
      • findContoursLinkRuns

        public static void findContoursLinkRuns​(Mat image,
                                                java.util.List<Mat> contours)
      • approxPolyDP

        public static void approxPolyDP​(MatOfPoint2f curve,
                                        MatOfPoint2f approxCurve,
                                        double epsilon,
                                        boolean closed)
        以指定精度近似多边形曲线。函数 cv::approxPolyDP 用另一个顶点较少的曲线/多边形近似曲线或多边形,使得它们之间的距离小于或等于指定精度。它使用 Douglas-Peucker 算法
        参数
        curve - 存储在 std::vector 或 Mat 中的 2D 点的输入向量
        approxCurve - 逼近结果。类型应与输入曲线的类型匹配。
        epsilon - 指定逼近精度的参数。这是原始曲线与其逼近之间的最大距离。
        closed - 如果为 true,则近似曲线是闭合的(其第一个和最后一个顶点相连)。否则,它不闭合。
      • approxPolyN

        public static void approxPolyN​(Mat curve,
                                       Mat approxCurve,
                                       int nsides,
                                       float epsilon_percentage,
                                       boolean ensure_convex)
        以指定的精度和边数用凸包近似多边形。cv::approxPolyN 函数用凸包近似多边形,使得原始轮廓和新多边形的轮廓面积差异最小。它使用贪婪算法将两个顶点收缩为一个,从而使额外面积最小。绘制由凸轮廓的每条边形成的直线,并考虑所得三角形的面积。每个顶点将位于原始轮廓上或其外部。该算法基于论文 CITE: LowIlie2003。
        参数
        curve - 存储在 std::vector 或 Mat 中的 2D 点输入向量,点必须是浮点或整数。
        approxCurve - 逼近结果。类型为 std::vector 或 Mat 中的 2D 点向量(Point2f 或 Point)。
        nsides - 该参数定义结果多边形的边数。
        epsilon_percentage - 定义额外面积的最大百分比。如果为 -1,则不使用。否则,如果额外面积大于 contourArea(_curve) * percentage,算法将停止。如果额外面积超过限制,算法将返回超出限制时存在的顶点数。
        ensure_convex - 如果为 true,算法将创建输入轮廓的凸包。否则,输入向量应为凸的。
      • approxPolyN

        public static void approxPolyN​(Mat curve,
                                       Mat approxCurve,
                                       int nsides,
                                       float epsilon_percentage)
        以指定的精度和边数用凸包近似多边形。cv::approxPolyN 函数用凸包近似多边形,使得原始轮廓和新多边形的轮廓面积差异最小。它使用贪婪算法将两个顶点收缩为一个,从而使额外面积最小。绘制由凸轮廓的每条边形成的直线,并考虑所得三角形的面积。每个顶点将位于原始轮廓上或其外部。该算法基于论文 CITE: LowIlie2003。
        参数
        curve - 存储在 std::vector 或 Mat 中的 2D 点输入向量,点必须是浮点或整数。
        approxCurve - 逼近结果。类型为 std::vector 或 Mat 中的 2D 点向量(Point2f 或 Point)。
        nsides - 该参数定义结果多边形的边数。
        epsilon_percentage - 定义额外面积的最大百分比。如果为 -1,则不使用。否则,如果额外面积大于 contourArea(_curve) * percentage,算法将停止。如果额外面积超过限制,算法将返回超出限制时存在的顶点数。
      • approxPolyN

        public static void approxPolyN​(Mat curve,
                                       Mat approxCurve,
                                       int nsides)
        以指定的精度和边数用凸包近似多边形。cv::approxPolyN 函数用凸包近似多边形,使得原始轮廓和新多边形的轮廓面积差异最小。它使用贪婪算法将两个顶点收缩为一个,从而使额外面积最小。绘制由凸轮廓的每条边形成的直线,并考虑所得三角形的面积。每个顶点将位于原始轮廓上或其外部。该算法基于论文 CITE: LowIlie2003。
        参数
        curve - 存储在 std::vector 或 Mat 中的 2D 点输入向量,点必须是浮点或整数。
        approxCurve - 逼近结果。类型为 std::vector 或 Mat 中的 2D 点向量(Point2f 或 Point)。
        nsides - 该参数定义结果多边形的边数。如果为 -1,则不使用。否则,如果额外面积大于 contourArea(_curve) * percentage,算法将停止。如果额外面积超过限制,算法将返回超出限制时存在的顶点数。
      • arcLength

        public static double arcLength​(MatOfPoint2f curve,
                                       boolean closed)
        计算轮廓周长或曲线长度。该函数计算曲线长度或闭合轮廓周长。
        参数
        curve - 2D 点的输入向量,存储在 std::vector 或 Mat 中。
        closed - 指示曲线是否闭合的标志。
        返回
        自动生成
      • boundingRect

        public static Rect boundingRect​(Mat array)
        计算点集或灰度图像非零像素的直立边界矩形。该函数计算并返回指定点集或灰度图像非零像素的最小直立边界矩形。
        参数
        array - 输入灰度图像或 2D 点集,存储在 std::vector 或 Mat 中。
        返回
        自动生成
      • contourArea

        public static double contourArea​(Mat contour,
                                         boolean oriented)
        计算轮廓面积。该函数计算轮廓面积。与矩类似,面积使用格林公式计算。因此,返回的面积和非零像素的数量(如果您使用 #drawContours 或 #fillPoly 绘制轮廓)可能不同。此外,该函数对于自相交的轮廓几乎肯定会给出错误的结果。示例: vector<Point> contour; contour.push_back(Point2f(0, 0)); contour.push_back(Point2f(10, 0)); contour.push_back(Point2f(10, 10)); contour.push_back(Point2f(5, 4)); double area0 = contourArea(contour); vector<Point> approx; approxPolyDP(contour, approx, 5, true); double area1 = contourArea(approx); cout << "area0 =" << area0 << endl << "area1 =" << area1 << endl << "approx poly vertices" << approx.size() << endl;
        参数
        contour - 输入的2D点向量(轮廓顶点),存储在std::vector或Mat中。
        oriented - 有向面积标志。如果为true,函数将返回一个有符号的面积值,具体取决于轮廓的方向(顺时针或逆时针)。使用此功能,您可以通过面积的符号确定轮廓的方向。默认情况下,此参数为false,这意味着返回的是绝对值。
        返回
        自动生成
      • contourArea

        public static double contourArea​(Mat contour)
        计算轮廓面积。该函数计算轮廓面积。与矩类似,面积使用格林公式计算。因此,返回的面积和非零像素的数量(如果您使用 #drawContours 或 #fillPoly 绘制轮廓)可能不同。此外,该函数对于自相交的轮廓几乎肯定会给出错误的结果。示例: vector<Point> contour; contour.push_back(Point2f(0, 0)); contour.push_back(Point2f(10, 0)); contour.push_back(Point2f(10, 10)); contour.push_back(Point2f(5, 4)); double area0 = contourArea(contour); vector<Point> approx; approxPolyDP(contour, approx, 5, true); double area1 = contourArea(approx); cout << "area0 =" << area0 << endl << "area1 =" << area1 << endl << "approx poly vertices" << approx.size() << endl;
        参数
        contour - 输入的2D点向量(轮廓顶点),存储在std::vector或Mat中。取决于轮廓方向(顺时针或逆时针)。使用此功能,您可以通过面积的符号确定轮廓的方向。默认情况下,此参数为false,这意味着返回的是绝对值。
        返回
        自动生成
      • minAreaRect

        public static RotatedRect minAreaRect​(MatOfPoint2f points)
        查找包围输入2D点集的最小面积旋转矩形。该函数计算并返回指定点集的最小面积边界矩形(可能已旋转)。旋转角度表示连接起始点和结束点(基于顺时针顺序,\(y\) 值最大的角具有最大索引)的线与水平轴之间的角度。该角度始终在 \([-90, 0)\) 之间,因为如果对象旋转超过一个直角,则会使用下一条边来测量角度。起始点和结束点随着对象的旋转而变化。开发者应注意,当数据靠近包含Mat元素的边界时,返回的RotatedRect可能包含负索引。
        参数
        points - 输入的2D点向量,存储在std::vector<>或Mat中
        返回
        自动生成
      • boxPoints

        public static void boxPoints​(RotatedRect box,
                                     Mat points)
        查找旋转矩形的四个顶点。有助于绘制旋转矩形。该函数查找旋转矩形的四个顶点。四个顶点以顺时针顺序返回,从\(y\)值最大的点开始。如果两个点具有相同的\(y\)坐标,则最右边的点是起始点。此函数对于绘制矩形很有用。在C++中,您可以直接使用RotatedRect::points方法,而不是使用此函数。请访问 REF: tutorial_bounding_rotated_ellipses "创建旋转边界框和椭圆的教程" 以获取更多信息。
        参数
        box - 输入的旋转矩形。它可能是 REF: minAreaRect 的输出。
        points - 矩形的四个顶点的输出数组。
      • minEnclosingCircle

        public static void minEnclosingCircle​(MatOfPoint2f points,
                                              Point center,
                                              float[] radius)
        查找包围2D点集的最小面积圆。该函数使用迭代算法查找2D点集的最小包围圆。
        参数
        points - 输入的2D点向量,存储在std::vector<>或Mat中
        center - 圆的输出中心。
        radius - 圆的输出半径。
      • minEnclosingTriangle

        public static double minEnclosingTriangle​(Mat points,
                                                  Mat triangle)
        查找包围2D点集的最小面积三角形并返回其面积。该函数查找包围给定2D点集的最小面积三角形并返回其面积。给定2D点集的输出如下图所示。2D点用红色*表示,包围三角形用*黄色*表示。![最小包围三角形函数的示例输出](pics/minenclosingtriangle.png) 该算法的实现基于 O'Rourke 的 CITE: ORourke86 和 Klee and Laskowski 的 CITE: KleeLaskowski85 论文。O'Rourke 提供了一种 \(\theta(n)\) 算法,用于查找具有 n 个顶点的2D凸多边形的最小包围三角形。由于 #minEnclosingTriangle 函数将2D点集作为输入,因此需要额外的预处理步骤来计算2D点集的凸包。#convexHull 函数的复杂度为 \(O(n log(n))\),这高于 \(\theta(n)\)。因此,该函数的整体复杂度为 \(O(n log(n))\)。
        参数
        points - 输入的2D点向量,深度为CV_32S或CV_32F,存储在std::vector<>或Mat中
        triangle - 定义三角形顶点的三个2D点的输出向量。OutputArray 的深度必须为 CV_32F。
        返回
        自动生成
      • matchShapes

        public static double matchShapes​(Mat contour1,
                                         Mat contour2,
                                         int method,
                                         double parameter)
        比较两个形状。该函数比较两个形状。所有三个实现的算法都使用 Hu 不变量(参见 #HuMoments)
        参数
        contour1 - 第一个轮廓或灰度图像。
        contour2 - 第二个轮廓或灰度图像。
        method - 比较方法,参见 #ShapeMatchModes
        parameter - 方法特定参数(目前不支持)。
        返回
        自动生成
      • convexHull

        public static void convexHull​(MatOfPoint points,
                                      MatOfInt hull,
                                      boolean clockwise)
        查找点集的凸包。函数 cv::convexHull 使用 Sklansky 算法 CITE: Sklansky82 查找2D点集的凸包,该算法在当前实现中具有 *O(N logN)* 的复杂度。
        参数
        points - 输入的2D点集,存储在std::vector或Mat中。
        hull - 输出凸包。它要么是整数索引向量,要么是点向量。在前一种情况下,凸包元素是原始数组中凸包点的0-based索引(因为凸包点集是原始点集的子集)。在后一种情况下,凸包元素是凸包点本身。
        clockwise - 方向标志。如果为true,则输出的凸包是顺时针方向。否则,它是逆时针方向。假定的坐标系X轴指向右方,Y轴指向上方。返回凸包点。否则,它返回凸包点的索引。当输出数组是std::vector时,该标志被忽略,输出取决于向量的类型:std::vector<int>表示returnPoints=false,std::vector<Point>表示returnPoints=true。注意: pointshull 应该是不同的数组,不支持原地处理。更多详情请查看 REF: tutorial_hull "相应的教程"。有用链接: https://www.learnopencv.com/convex-hull-using-opencv-in-python-and-c/
      • convexHull

        public static void convexHull​(MatOfPoint points,
                                      MatOfInt hull)
        查找点集的凸包。函数 cv::convexHull 使用 Sklansky 算法 CITE: Sklansky82 查找2D点集的凸包,该算法在当前实现中具有 *O(N logN)* 的复杂度。
        参数
        points - 输入的2D点集,存储在std::vector或Mat中。
        hull - 输出凸包。它要么是整数索引向量,要么是点向量。在前一种情况下,凸包元素是原始数组中凸包点的0-based索引(因为凸包点集是原始点集的子集)。在后一种情况下,凸包元素是凸包点本身。否则,它是逆时针方向。假定的坐标系X轴指向右方,Y轴指向上方。返回凸包点。否则,它返回凸包点的索引。当输出数组是std::vector时,该标志被忽略,输出取决于向量的类型:std::vector<int>表示returnPoints=false,std::vector<Point>表示returnPoints=true。注意: pointshull 应该是不同的数组,不支持原地处理。更多详情请查看 REF: tutorial_hull "相应的教程"。有用链接: https://www.learnopencv.com/convex-hull-using-opencv-in-python-and-c/
      • convexityDefects

        public static void convexityDefects​(MatOfPoint contour,
                                            MatOfInt convexhull,
                                            MatOfInt4 convexityDefects)
        查找轮廓的凸缺陷。下图显示了手部轮廓的凸缺陷:![图片](pics/defects.png)
        参数
        contour - 输入轮廓。
        convexhull - 使用 convexHull 获得的凸包,其中应包含构成凸包的轮廓点的索引。
        convexityDefects - 凸缺陷的输出向量。在C++和新的Python/Java接口中,每个凸缺陷都表示为一个4元素整数向量(即 #Vec4i):(start_index, end_index, farthest_pt_index, fixpt_depth),其中索引是凸缺陷起点、终点和最远点在原始轮廓中的0-based索引,而fixpt_depth是最远轮廓点与凸包之间距离的定点近似(具有8个小数位)。也就是说,要获得深度的浮点值,将是 fixpt_depth/256.0。
      • isContourConvex

        public static boolean isContourConvex​(MatOfPoint contour)
        测试轮廓的凸性。该函数测试输入的轮廓是否为凸形。轮廓必须是简单的,即没有自相交。否则,函数输出未定义。
        参数
        contour - 输入的2D点向量,存储在std::vector<>或Mat中
        返回
        自动生成
      • intersectConvexConvex

        public static float intersectConvexConvex​(Mat p1,
                                                  Mat p2,
                                                  Mat p12,
                                                  boolean handleNested)
        查找两个凸多边形的交点
        参数
        p1 - 第一个多边形
        p2 - 第二个多边形
        p12 - 描述相交区域的输出多边形
        handleNested - 当为 true 时,如果一个多边形完全包含在另一个多边形中,则会发现交集。当为 false 时,不查找交集。如果多边形共享一条边或一个多边形的顶点位于另一个多边形的边上,则它们不被视为嵌套,并且无论 handleNested 的值如何,都会找到交集。
        返回
        相交多边形的面积。如果算法未收敛,例如非凸输入,则可能为负。注意: intersectConvexConvex 不会确认两个多边形都是凸形,如果不是,它将返回无效结果。
      • intersectConvexConvex

        public static float intersectConvexConvex​(Mat p1,
                                                  Mat p2,
                                                  Mat p12)
        查找两个凸多边形的交点
        参数
        p1 - 第一个多边形
        p2 - 第二个多边形
        p12 - 描述相交区域的输出多边形。当为 false 时,不查找交集。如果多边形共享一条边或一个多边形的顶点位于另一个多边形的边上,则它们不被视为嵌套,并且无论 handleNested 的值如何,都会找到交集。
        返回
        相交多边形的面积。如果算法未收敛,例如非凸输入,则可能为负。注意: intersectConvexConvex 不会确认两个多边形都是凸形,如果不是,它将返回无效结果。
      • fitEllipse

        public static RotatedRect fitEllipse​(MatOfPoint2f points)
        拟合围绕一组2D点的椭圆。该函数计算最能(在最小二乘意义上)拟合一组2D点的椭圆。它返回内接椭圆的旋转矩形。使用 CITE: Fitzgibbon95 中描述的第一个算法。开发者应注意,返回的椭圆/旋转矩形数据可能包含负索引,因为数据点可能靠近包含 Mat 元素的边界。
        参数
        points - 输入的2D点集,存储在std::vector<>或Mat中。注意:输入点类型为 REF: Point2i 或 REF: Point2f,并且至少需要5个点。注意: REF: getClosestEllipsePoints 函数可用于计算椭圆拟合误差。
        返回
        自动生成
      • fitEllipseAMS

        public static RotatedRect fitEllipseAMS​(Mat points)
        拟合围绕一组2D点的椭圆。该函数计算拟合一组2D点的椭圆。它返回内接椭圆的旋转矩形。使用 CITE: Taubin1991 提出的近似均方(AMS)方法。对于椭圆,这个基组是 \( \chi= \left(x^2, x y, y^2, x, y, 1\right) \),它是一个包含六个自由系数 \( A^T=\left\{A_{\text{xx}},A_{\text{xy}},A_{\text{yy}},A_x,A_y,A_0\right\} \) 的集合。然而,要指定一个椭圆,只需要五个数字:长轴和短轴长度 \( (a,b) \),位置 \( (x_0,y_0) \) 和方向 \( \theta \)。这是因为基组包含了直线、二次函数、抛物线和双曲线函数以及椭圆函数作为可能的拟合。如果发现拟合是抛物线或双曲线函数,则使用标准 #fitEllipse 方法。AMS 方法通过施加条件 \( A^T ( D_x^T D_x + D_y^T D_y) A = 1 \) 将拟合限制为抛物线、双曲线和椭圆曲线,其中矩阵 \( Dx \) 和 \( Dy \) 是设计矩阵 \( D \) 关于 x 和 y 的偏导数。通过对集合中的每个点应用以下内容逐行形成矩阵:\(align*}{ D(i,:)&=\left\{x_i^2, x_i y_i, y_i^2, x_i, y_i, 1\right\} & D_x(i,:)&=\left\{2 x_i,y_i,0,1,0,0\right\} & D_y(i,:)&=\left\{0,x_i,2 y_i,0,1,0\right\} \) AMS 方法最小化成本函数 \(equation*}{ \epsilon ^2=\frac{ A^T D^T D A }{ A^T (D_x^T D_x + D_y^T D_y) A^T } \) 通过解决广义特征值问题找到最小成本。 \(equation*}{ D^T D A = \lambda \left( D_x^T D_x + D_y^T D_y\right) A \)
        参数
        points - 输入的2D点集,存储在std::vector<>或Mat中。注意:输入点类型为 REF: Point2i 或 REF: Point2f,并且至少需要5个点。注意: REF: getClosestEllipsePoints 函数可用于计算椭圆拟合误差。
        返回
        自动生成
      • fitEllipseDirect

        public static RotatedRect fitEllipseDirect​(Mat points)
        拟合围绕一组2D点的椭圆。该函数计算拟合一组2D点的椭圆。它返回内接椭圆的旋转矩形。使用 CITE: oy1998NumericallySD 的直接最小二乘(Direct)方法。对于椭圆,这个基组是 \( \chi= \left(x^2, x y, y^2, x, y, 1\right) \),它是一个包含六个自由系数 \( A^T=\left\{A_{\text{xx}},A_{\text{xy}},A_{\text{yy}},A_x,A_y,A_0\right\} \) 的集合。然而,要指定一个椭圆,只需要五个数字:长轴和短轴长度 \( (a,b) \),位置 \( (x_0,y_0) \) 和方向 \( \theta \)。这是因为基组包含了直线、二次函数、抛物线和双曲线函数以及椭圆函数作为可能的拟合。直接方法通过确保 \( 4 A_{xx} A_{yy}- A_{xy}^2 > 0 \) 将拟合限制为椭圆。施加的条件是 \( 4 A_{xx} A_{yy}- A_{xy}^2=1 \),这满足不等式,并且由于系数可以任意缩放,因此没有过度限制。\(equation*}{ \epsilon ^2= A^T D^T D A \quad \text{with} \quad A^T C A =1 \quad \text{and} \quad C=\left(\begin{matrix} 0 & 0 & 2 & 0 & 0 & 0 \\ 0 & -1 & 0 & 0 & 0 & 0 \\ 2 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 \end{matrix} \right) \) 通过解决广义特征值问题找到最小成本。\(equation*}{ D^T D A = \lambda \left( C\right) A \) 该系统只产生一个正特征值 \( \lambda\),它被选为具有其特征向量 \(\mathbf{u}\) 的解。这些用于找到系数 \(equation*}{ A = \sqrt{\frac{1}{\mathbf{u}^T C \mathbf{u}}} \mathbf{u} \) 缩放因子保证了 \(A^T C A =1\)。
        参数
        points - 输入的2D点集,存储在std::vector<>或Mat中。注意:输入点类型为 REF: Point2i 或 REF: Point2f,并且至少需要5个点。注意: REF: getClosestEllipsePoints 函数可用于计算椭圆拟合误差。
        返回
        自动生成
      • getClosestEllipsePoints

        public static void getClosestEllipsePoints​(RotatedRect ellipse_params,
                                                   Mat points,
                                                   Mat closest_pts)
        计算每个2D点在给定椭圆上最近的2D点。该函数计算2D点向量在给定椭圆上的最近2D位置,并基于 CITE: Chatfield2017 代码。例如,此函数可用于计算椭圆拟合误差。
        参数
        ellipse_params - 椭圆参数
        points - 输入2D点
        closest_pts - 对于每个2D点,其在给定椭圆上对应的最近2D点。注意:输入点类型为 REF: Point2i 或 REF: Point2f。参见: fitEllipse, fitEllipseAMS, fitEllipseDirect
      • fitLine

        public static void fitLine​(Mat points,
                                   Mat line,
                                   int distType,
                                   double param,
                                   double reps,
                                   double aeps)
        将直线拟合到2D或3D点集。函数 fitLine 通过最小化 \(\sum_i \rho(r_i)\) 将直线拟合到2D或3D点集,其中 \(r_i\) 是第 \(i\) 个点与直线之间的距离,而 \(\rho(r)\) 是距离函数,以下之一:
        • DIST_L2 \(\rho (r) = r^2/2 \quad \text{(最简单和最快的最小二乘法)}\)
        • DIST_L1 \(\rho (r) = r\)
        • DIST_L12 \(\rho (r) = 2 \cdot ( \sqrt{1 + \frac{r^2}{2}} - 1)\)
        • DIST_FAIR \(\rho \left (r \right ) = C^2 \cdot \left ( \frac{r}{C} - \log{\left(1 + \frac{r}{C}\right)} \right ) \quad \text{其中} \quad C=1.3998\)
        • DIST_WELSCH \(\rho \left (r \right ) = \frac{C^2}{2} \cdot \left ( 1 - \exp{\left(-\left(\frac{r}{C}\right)^2\right)} \right ) \quad \text{其中} \quad C=2.9846\)
        • DIST_HUBER \(\rho (r) = \fork{r^2/2}{if \(r < C\)}{C \cdot (r-C/2)}{otherwise} \quad \text{其中} \quad C=1.345\)
        该算法基于M估计器( <https://en.wikipedia.org/wiki/M-estimator> )技术,该技术使用加权最小二乘算法迭代拟合直线。每次迭代后,权重 \(w_i\) 会调整为与 \(\rho(r_i)\) 成反比。
        参数
        points - 输入的2D或3D点向量,存储在std::vector<>或Mat中。
        line - 输出直线参数。在2D拟合的情况下,它应该是一个包含4个元素的向量(如Vec4f)- (vx, vy, x0, y0),其中(vx, vy)是与直线共线的归一化向量,(x0, y0)是直线上的一个点。在3D拟合的情况下,它应该是一个包含6个元素的向量(如Vec6f)- (vx, vy, vz, x0, y0, z0),其中(vx, vy, vz)是与直线共线的归一化向量,(x0, y0, z0)是直线上的一个点。
        distType - M估计器使用的距离,参见 #DistanceTypes
        param - 某些距离类型的数值参数(C)。如果为0,则选择一个最优值。
        reps - 半径(坐标原点与直线之间的距离)的足够精度。
        aeps - 角度的足够精度。对于reps和aeps,0.01是一个不错的默认值。
      • pointPolygonTest

        public static double pointPolygonTest​(MatOfPoint2f contour,
                                              Point pt,
                                              boolean measureDist)
        执行点在轮廓内的测试。该函数确定点是在轮廓内部、外部,还是位于边缘上(或与顶点重合)。它相应地返回正值(内部)、负值(外部)或零值(在边缘上)。当 measureDist=false 时,返回值分别为 +1、-1 和 0。否则,返回值是点与最近轮廓边之间的有符号距离。下面是该函数的一个示例输出,其中每个图像像素都对照轮廓进行了测试:![示例输出](pics/pointpolygon.png)
        参数
        contour - 输入轮廓。
        pt - 用来测试轮廓的点。
        measureDist - 如果为true,函数将估计从点到最近轮廓边缘的有符号距离。否则,函数只检查点是否在轮廓内部。
        返回
        自动生成
      • rotatedRectangleIntersection

        public static int rotatedRectangleIntersection​(RotatedRect rect1,
                                                       RotatedRect rect2,
                                                       Mat intersectingRegion)
        查找两个旋转矩形之间是否存在任何交集。如果存在,则同时返回相交区域的顶点。以下是一些交集配置的示例。带阴影的图案表示相交区域,红色顶点由函数返回。![交集示例](pics/intersection.png)
        参数
        rect1 - 第一个矩形
        rect2 - 第二个矩形
        intersectingRegion - 相交区域顶点的输出数组。它最多返回8个顶点。存储为 std::vector<cv::Point2f> 或 cv::Mat,类型为 CV_32FC2 的 Mx1。
        返回
        #RectanglesIntersectTypes 之一
      • createGeneralizedHoughBallard

        public static GeneralizedHoughBallard createGeneralizedHoughBallard()
        创建并初始化指向 cv::GeneralizedHoughBallard 类的智能指针。
        返回
        自动生成
      • createGeneralizedHoughGuil

        public static GeneralizedHoughGuil createGeneralizedHoughGuil()
        创建并初始化指向 cv::GeneralizedHoughGuil 类的智能指针。
        返回
        自动生成
      • applyColorMap

        public static void applyColorMap​(Mat src,
                                         Mat dst,
                                         int colormap)
        对给定图像应用 GNU Octave/MATLAB 等效的颜色映射表。
        参数
        src - 源图像,灰度或彩色,类型为 CV_8UC1 或 CV_8UC3。如果为 CV_8UC3,则内部使用 cv::COLOR_BGR2GRAY 生成 CV_8UC1 图像。
        dst - 结果是已应用颜色映射的源图像。注意:将在 dst 上调用 Mat::create。
        colormap - 要应用的颜色映射,参见 #ColormapTypes
      • applyColorMap

        public static void applyColorMap​(Mat src,
                                         Mat dst,
                                         Mat userColor)
        在给定图像上应用用户色谱图。
        参数
        src - 源图像,灰度或彩色,类型为 CV_8UC1 或 CV_8UC3。如果为 CV_8UC3,则内部使用 cv::COLOR_BGR2GRAY 生成 CV_8UC1 图像。
        dst - 结果是与 userColor 具有相同通道数的已应用颜色映射的源图像。注意:将在 dst 上调用 Mat::create。
        userColor - 要应用的颜色映射,类型为 CV_8UC1 或 CV_8UC3,大小为256
      • line

        public static void line​(Mat img,
                                Point pt1,
                                Point pt2,
                                Scalar color,
                                int thickness,
                                int lineType,
                                int shift)
        绘制连接两个点的线段。函数 line 在图像中绘制 pt1 和 pt2 点之间的线段。线被图像边界裁剪。对于具有整数坐标的非抗锯齿线,使用8连通或4连通的Bresenham算法。粗线以圆角端点绘制。抗锯齿线使用高斯滤波绘制。
        参数
        img - 图像。
        pt1 - 线段的第一个点。
        pt2 - 线段的第二个点。
        color - 线条颜色。
        thickness - 线条粗细。
        lineType - 线条类型。参见 #LineTypes。
        shift - 点坐标中的小数位数。
      • line

        public static void line​(Mat img,
                                Point pt1,
                                Point pt2,
                                Scalar color,
                                int thickness,
                                int lineType)
        绘制连接两个点的线段。函数 line 在图像中绘制 pt1 和 pt2 点之间的线段。线被图像边界裁剪。对于具有整数坐标的非抗锯齿线,使用8连通或4连通的Bresenham算法。粗线以圆角端点绘制。抗锯齿线使用高斯滤波绘制。
        参数
        img - 图像。
        pt1 - 线段的第一个点。
        pt2 - 线段的第二个点。
        color - 线条颜色。
        thickness - 线条粗细。
        lineType - 线条类型。参见 #LineTypes。
      • line

        public static void line​(Mat img,
                                Point pt1,
                                Point pt2,
                                Scalar color,
                                int thickness)
        绘制连接两个点的线段。函数 line 在图像中绘制 pt1 和 pt2 点之间的线段。线被图像边界裁剪。对于具有整数坐标的非抗锯齿线,使用8连通或4连通的Bresenham算法。粗线以圆角端点绘制。抗锯齿线使用高斯滤波绘制。
        参数
        img - 图像。
        pt1 - 线段的第一个点。
        pt2 - 线段的第二个点。
        color - 线条颜色。
        thickness - 线条粗细。
      • line

        public static void line​(Mat img,
                                Point pt1,
                                Point pt2,
                                Scalar color)
        绘制连接两个点的线段。函数 line 在图像中绘制 pt1 和 pt2 点之间的线段。线被图像边界裁剪。对于具有整数坐标的非抗锯齿线,使用8连通或4连通的Bresenham算法。粗线以圆角端点绘制。抗锯齿线使用高斯滤波绘制。
        参数
        img - 图像。
        pt1 - 线段的第一个点。
        pt2 - 线段的第二个点。
        color - 线条颜色。
      • arrowedLine

        public static void arrowedLine​(Mat img,
                                       Point pt1,
                                       Point pt2,
                                       Scalar color,
                                       int thickness,
                                       int line_type,
                                       int shift,
                                       double tipLength)
        绘制一个从第一个点指向第二个点的箭头线段。函数 cv::arrowedLine 在图像中绘制 pt1 和 pt2 点之间的箭头。另请参见 #line。
        参数
        img - 图像。
        pt1 - 箭头起始点。
        pt2 - 箭头指向的点。
        color - 线条颜色。
        thickness - 线条粗细。
        line_type - 线条类型。参见 #LineTypes
        shift - 点坐标中的小数位数。
        tipLength - 箭头尖端相对于箭头长度的长度。
      • arrowedLine

        public static void arrowedLine​(Mat img,
                                       Point pt1,
                                       Point pt2,
                                       Scalar color,
                                       int thickness,
                                       int line_type,
                                       int shift)
        绘制一个从第一个点指向第二个点的箭头线段。函数 cv::arrowedLine 在图像中绘制 pt1 和 pt2 点之间的箭头。另请参见 #line。
        参数
        img - 图像。
        pt1 - 箭头起始点。
        pt2 - 箭头指向的点。
        color - 线条颜色。
        thickness - 线条粗细。
        line_type - 线条类型。参见 #LineTypes
        shift - 点坐标中的小数位数。
      • arrowedLine

        public static void arrowedLine​(Mat img,
                                       Point pt1,
                                       Point pt2,
                                       Scalar color,
                                       int thickness,
                                       int line_type)
        绘制一个从第一个点指向第二个点的箭头线段。函数 cv::arrowedLine 在图像中绘制 pt1 和 pt2 点之间的箭头。另请参见 #line。
        参数
        img - 图像。
        pt1 - 箭头起始点。
        pt2 - 箭头指向的点。
        color - 线条颜色。
        thickness - 线条粗细。
        line_type - 线条类型。参见 #LineTypes
      • arrowedLine

        public static void arrowedLine​(Mat img,
                                       Point pt1,
                                       Point pt2,
                                       Scalar color,
                                       int thickness)
        绘制一个从第一个点指向第二个点的箭头线段。函数 cv::arrowedLine 在图像中绘制 pt1 和 pt2 点之间的箭头。另请参见 #line。
        参数
        img - 图像。
        pt1 - 箭头起始点。
        pt2 - 箭头指向的点。
        color - 线条颜色。
        thickness - 线条粗细。
      • arrowedLine

        public static void arrowedLine​(Mat img,
                                       Point pt1,
                                       Point pt2,
                                       Scalar color)
        绘制一个从第一个点指向第二个点的箭头线段。函数 cv::arrowedLine 在图像中绘制 pt1 和 pt2 点之间的箭头。另请参见 #line。
        参数
        img - 图像。
        pt1 - 箭头起始点。
        pt2 - 箭头指向的点。
        color - 线条颜色。
      • rectangle

        public static void rectangle​(Mat img,
                                     Point pt1,
                                     Point pt2,
                                     Scalar color,
                                     int thickness,
                                     int lineType,
                                     int shift)
        绘制一个简单、粗或填充的直立矩形。函数 cv::rectangle 绘制一个矩形轮廓或一个填充矩形,其两个对角为 pt1 和 pt2。
        参数
        img - 图像。
        pt1 - 矩形的顶点。
        pt2 - 与 pt1 相对的矩形顶点。
        color - 矩形颜色或亮度(灰度图像)。
        thickness - 构成矩形的线条粗细。负值(如 #FILLED)表示函数必须绘制一个填充矩形。
        lineType - 线条类型。参见 #LineTypes
        shift - 点坐标中的小数位数。
      • rectangle

        public static void rectangle​(Mat img,
                                     Point pt1,
                                     Point pt2,
                                     Scalar color,
                                     int thickness,
                                     int lineType)
        绘制一个简单、粗或填充的直立矩形。函数 cv::rectangle 绘制一个矩形轮廓或一个填充矩形,其两个对角为 pt1 和 pt2。
        参数
        img - 图像。
        pt1 - 矩形的顶点。
        pt2 - 与 pt1 相对的矩形顶点。
        color - 矩形颜色或亮度(灰度图像)。
        thickness - 构成矩形的线条粗细。负值(如 #FILLED)表示函数必须绘制一个填充矩形。
        lineType - 线条类型。参见 #LineTypes
      • rectangle

        public static void rectangle​(Mat img,
                                     Point pt1,
                                     Point pt2,
                                     Scalar color,
                                     int thickness)
        绘制一个简单、粗或填充的直立矩形。函数 cv::rectangle 绘制一个矩形轮廓或一个填充矩形,其两个对角为 pt1 和 pt2。
        参数
        img - 图像。
        pt1 - 矩形的顶点。
        pt2 - 与 pt1 相对的矩形顶点。
        color - 矩形颜色或亮度(灰度图像)。
        thickness - 构成矩形的线条粗细。负值(如 #FILLED)表示函数必须绘制一个填充矩形。
      • rectangle

        public static void rectangle​(Mat img,
                                     Point pt1,
                                     Point pt2,
                                     Scalar color)
        绘制一个简单、粗或填充的直立矩形。函数 cv::rectangle 绘制一个矩形轮廓或一个填充矩形,其两个对角为 pt1 和 pt2。
        参数
        img - 图像。
        pt1 - 矩形的顶点。
        pt2 - 与 pt1 相对的矩形顶点。
        color - 矩形颜色或亮度(灰度图像)。表示函数必须绘制一个填充矩形。
      • rectangle

        public static void rectangle​(Mat img,
                                     Rect rec,
                                     Scalar color,
                                     int thickness,
                                     int lineType,
                                     int shift)
        使用 rec 参数作为绘制矩形的替代规范:`r.tl()` 和 `r.br()-Point(1,1)` 是对角。
        参数
        img - 自动生成
        rec - 自动生成
        color - 自动生成
        thickness - 自动生成
        lineType - 自动生成
        shift - 自动生成
      • rectangle

        public static void rectangle​(Mat img,
                                     Rect rec,
                                     Scalar color,
                                     int thickness,
                                     int lineType)
        使用 rec 参数作为绘制矩形的替代规范:`r.tl()` 和 `r.br()-Point(1,1)` 是对角。
        参数
        img - 自动生成
        rec - 自动生成
        color - 自动生成
        thickness - 自动生成
        lineType - 自动生成
      • rectangle

        public static void rectangle​(Mat img,
                                     Rect rec,
                                     Scalar color,
                                     int thickness)
        使用 rec 参数作为绘制矩形的替代规范:`r.tl()` 和 `r.br()-Point(1,1)` 是对角。
        参数
        img - 自动生成
        rec - 自动生成
        color - 自动生成
        thickness - 自动生成
      • rectangle

        public static void rectangle​(Mat img,
                                     Rect rec,
                                     Scalar color)
        使用 rec 参数作为绘制矩形的替代规范:`r.tl()` 和 `r.br()-Point(1,1)` 是对角。
        参数
        img - 自动生成
        rec - 自动生成
        color - 自动生成
      • circle

        public static void circle​(Mat img,
                                  Point center,
                                  int radius,
                                  Scalar color,
                                  int thickness,
                                  int lineType,
                                  int shift)
        绘制圆形。函数 cv::circle 绘制一个具有给定中心和半径的简单圆形或填充圆形。
        参数
        img - 绘制圆形的图像。
        center - 圆心。
        radius - 圆半径。
        color - 圆形颜色。
        thickness - 圆形轮廓的粗细,如果为正。负值(如 #FILLED)表示要绘制一个填充圆形。
        lineType - 圆形边界的类型。参见 #LineTypes
        shift - 圆心坐标和半径值中的小数位数。
      • circle

        public static void circle​(Mat img,
                                  Point center,
                                  int radius,
                                  Scalar color,
                                  int thickness,
                                  int lineType)
        绘制圆形。函数 cv::circle 绘制一个具有给定中心和半径的简单圆形或填充圆形。
        参数
        img - 绘制圆形的图像。
        center - 圆心。
        radius - 圆半径。
        color - 圆形颜色。
        thickness - 圆形轮廓的粗细,如果为正。负值(如 #FILLED)表示要绘制一个填充圆形。
        lineType - 圆形边界的类型。参见 #LineTypes
      • circle

        public static void circle​(Mat img,
                                  Point center,
                                  int radius,
                                  Scalar color,
                                  int thickness)
        绘制圆形。函数 cv::circle 绘制一个具有给定中心和半径的简单圆形或填充圆形。
        参数
        img - 绘制圆形的图像。
        center - 圆心。
        radius - 圆半径。
        color - 圆形颜色。
        thickness - 圆形轮廓的粗细,如果为正。负值(如 #FILLED)表示要绘制一个填充圆形。
      • circle

        public static void circle​(Mat img,
                                  Point center,
                                  int radius,
                                  Scalar color)
        绘制圆形。函数 cv::circle 绘制一个具有给定中心和半径的简单圆形或填充圆形。
        参数
        img - 绘制圆形的图像。
        center - 圆心。
        radius - 圆半径。
        color - 圆形颜色。表示要绘制一个填充圆形。
      • ellipse

        public static void ellipse​(Mat img,
                                   Point center,
                                   Size axes,
                                   double angle,
                                   double startAngle,
                                   double endAngle,
                                   Scalar color,
                                   int thickness,
                                   int lineType,
                                   int shift)
        绘制一个简单或粗的椭圆弧或填充一个椭圆扇区。带有更多参数的函数 cv::ellipse 绘制一个椭圆轮廓、一个填充椭圆、一个椭圆弧或一个填充椭圆扇区。绘图代码使用一般参数形式。使用分段线性曲线来近似椭圆弧边界。如果您需要对椭圆渲染进行更多控制,可以使用 #ellipse2Poly 检索曲线,然后使用 #polylines 渲染它或使用 #fillPoly 填充它。如果您使用函数的第一个变体并希望绘制整个椭圆而不是弧,请传递 startAngle=0endAngle=360。如果 startAngle 大于 endAngle,则它们将被交换。下图解释了绘制蓝色弧线参数的含义。![椭圆弧参数](pics/ellipse.svg)
        参数
        img - 图像。
        center - 椭圆中心。
        axes - 椭圆主轴尺寸的一半。
        angle - 椭圆旋转角度(以度为单位)。
        startAngle - 椭圆弧的起始角度(以度为单位)。
        endAngle - 椭圆弧的结束角度(以度为单位)。
        color - 椭圆颜色。
        thickness - 椭圆弧轮廓的粗细,如果为正。否则,表示要绘制一个填充的椭圆扇区。
        lineType - 椭圆边界的类型。参见 #LineTypes
        shift - 圆心坐标和轴值中的小数位数。
      • ellipse

        public static void ellipse​(Mat img,
                                   Point center,
                                   Size axes,
                                   double angle,
                                   double startAngle,
                                   double endAngle,
                                   Scalar color,
                                   int thickness,
                                   int lineType)
        绘制一个简单或粗的椭圆弧或填充一个椭圆扇区。带有更多参数的函数 cv::ellipse 绘制一个椭圆轮廓、一个填充椭圆、一个椭圆弧或一个填充椭圆扇区。绘图代码使用一般参数形式。使用分段线性曲线来近似椭圆弧边界。如果您需要对椭圆渲染进行更多控制,可以使用 #ellipse2Poly 检索曲线,然后使用 #polylines 渲染它或使用 #fillPoly 填充它。如果您使用函数的第一个变体并希望绘制整个椭圆而不是弧,请传递 startAngle=0endAngle=360。如果 startAngle 大于 endAngle,则它们将被交换。下图解释了绘制蓝色弧线参数的含义。![椭圆弧参数](pics/ellipse.svg)
        参数
        img - 图像。
        center - 椭圆中心。
        axes - 椭圆主轴尺寸的一半。
        angle - 椭圆旋转角度(以度为单位)。
        startAngle - 椭圆弧的起始角度(以度为单位)。
        endAngle - 椭圆弧的结束角度(以度为单位)。
        color - 椭圆颜色。
        thickness - 椭圆弧轮廓的粗细,如果为正。否则,表示要绘制一个填充的椭圆扇区。
        lineType - 椭圆边界的类型。参见 #LineTypes
      • ellipse

        public static void ellipse​(Mat img,
                                   Point center,
                                   Size axes,
                                   double angle,
                                   double startAngle,
                                   double endAngle,
                                   Scalar color,
                                   int thickness)
        绘制一个简单或粗的椭圆弧或填充一个椭圆扇区。带有更多参数的函数 cv::ellipse 绘制一个椭圆轮廓、一个填充椭圆、一个椭圆弧或一个填充椭圆扇区。绘图代码使用一般参数形式。使用分段线性曲线来近似椭圆弧边界。如果您需要对椭圆渲染进行更多控制,可以使用 #ellipse2Poly 检索曲线,然后使用 #polylines 渲染它或使用 #fillPoly 填充它。如果您使用函数的第一个变体并希望绘制整个椭圆而不是弧,请传递 startAngle=0endAngle=360。如果 startAngle 大于 endAngle,则它们将被交换。下图解释了绘制蓝色弧线参数的含义。![椭圆弧参数](pics/ellipse.svg)
        参数
        img - 图像。
        center - 椭圆中心。
        axes - 椭圆主轴尺寸的一半。
        angle - 椭圆旋转角度(以度为单位)。
        startAngle - 椭圆弧的起始角度(以度为单位)。
        endAngle - 椭圆弧的结束角度(以度为单位)。
        color - 椭圆颜色。
        thickness - 椭圆弧轮廓的粗细,如果为正。否则,表示要绘制一个填充的椭圆扇区。
      • ellipse

        public static void ellipse​(Mat img,
                                   Point center,
                                   Size axes,
                                   double angle,
                                   double startAngle,
                                   double endAngle,
                                   Scalar color)
        绘制一个简单或粗的椭圆弧或填充一个椭圆扇区。带有更多参数的函数 cv::ellipse 绘制一个椭圆轮廓、一个填充椭圆、一个椭圆弧或一个填充椭圆扇区。绘图代码使用一般参数形式。使用分段线性曲线来近似椭圆弧边界。如果您需要对椭圆渲染进行更多控制,可以使用 #ellipse2Poly 检索曲线,然后使用 #polylines 渲染它或使用 #fillPoly 填充它。如果您使用函数的第一个变体并希望绘制整个椭圆而不是弧,请传递 startAngle=0endAngle=360。如果 startAngle 大于 endAngle,则它们将被交换。下图解释了绘制蓝色弧线参数的含义。![椭圆弧参数](pics/ellipse.svg)
        参数
        img - 图像。
        center - 椭圆中心。
        axes - 椭圆主轴尺寸的一半。
        angle - 椭圆旋转角度(以度为单位)。
        startAngle - 椭圆弧的起始角度(以度为单位)。
        endAngle - 椭圆弧的结束角度(以度为单位)。
        color - 椭圆颜色。表示要绘制一个填充的椭圆扇区。
      • ellipse

        public static void ellipse​(Mat img,
                                   RotatedRect box,
                                   Scalar color,
                                   int thickness,
                                   int lineType)
        参数
        img - 图像。
        box - 通过 RotatedRect 的替代椭圆表示。这意味着该函数绘制一个内接于旋转矩形的椭圆。
        color - 椭圆颜色。
        thickness - 椭圆弧轮廓的粗细,如果为正。否则,表示要绘制一个填充的椭圆扇区。
        lineType - 椭圆边界的类型。参见 #LineTypes
      • ellipse

        public static void ellipse​(Mat img,
                                   RotatedRect box,
                                   Scalar color,
                                   int thickness)
        参数
        img - 图像。
        box - 通过 RotatedRect 的替代椭圆表示。这意味着该函数绘制一个内接于旋转矩形的椭圆。
        color - 椭圆颜色。
        thickness - 椭圆弧轮廓的粗细,如果为正。否则,表示要绘制一个填充的椭圆扇区。
      • ellipse

        public static void ellipse​(Mat img,
                                   RotatedRect box,
                                   Scalar color)
        参数
        img - 图像。
        box - 通过 RotatedRect 的替代椭圆表示。这意味着该函数绘制一个内接于旋转矩形的椭圆。
        color - 椭圆颜色。表示要绘制一个填充的椭圆扇区。
      • drawMarker

        public static void drawMarker​(Mat img,
                                      Point position,
                                      Scalar color,
                                      int markerType,
                                      int markerSize,
                                      int thickness,
                                      int line_type)
        在图像的预定义位置绘制一个标记。函数 cv::drawMarker 在图像的给定位置绘制一个标记。目前支持多种标记类型,更多信息请参见 #MarkerTypes。
        参数
        img - 图像。
        position - 十字准线所在的位置。
        color - 线条颜色。
        markerType - 您想要使用的特定标记类型,参见 #MarkerTypes
        thickness - 线条粗细。
        line_type - 线条类型,参见 #LineTypes
        markerSize - 标记轴的长度 [默认 = 20 像素]
      • drawMarker

        public static void drawMarker​(Mat img,
                                      Point position,
                                      Scalar color,
                                      int markerType,
                                      int markerSize,
                                      int thickness)
        在图像的预定义位置绘制一个标记。函数 cv::drawMarker 在图像的给定位置绘制一个标记。目前支持多种标记类型,更多信息请参见 #MarkerTypes。
        参数
        img - 图像。
        position - 十字准线所在的位置。
        color - 线条颜色。
        markerType - 您想要使用的特定标记类型,参见 #MarkerTypes
        thickness - 线条粗细。
        markerSize - 标记轴的长度 [默认 = 20 像素]
      • drawMarker

        public static void drawMarker​(Mat img,
                                      Point position,
                                      Scalar color,
                                      int markerType,
                                      int markerSize)
        在图像的预定义位置绘制一个标记。函数 cv::drawMarker 在图像的给定位置绘制一个标记。目前支持多种标记类型,更多信息请参见 #MarkerTypes。
        参数
        img - 图像。
        position - 十字准线所在的位置。
        color - 线条颜色。
        markerType - 您想要使用的特定标记类型,参见 #MarkerTypes
        markerSize - 标记轴的长度 [默认 = 20 像素]
      • drawMarker

        public static void drawMarker​(Mat img,
                                      Point position,
                                      Scalar color,
                                      int markerType)
        在图像的预定义位置绘制一个标记。函数 cv::drawMarker 在图像的给定位置绘制一个标记。目前支持多种标记类型,更多信息请参见 #MarkerTypes。
        参数
        img - 图像。
        position - 十字准线所在的位置。
        color - 线条颜色。
        markerType - 您想要使用的特定标记类型,参见 #MarkerTypes
      • drawMarker

        public static void drawMarker​(Mat img,
                                      Point position,
                                      Scalar color)
        在图像的预定义位置绘制一个标记。函数 cv::drawMarker 在图像的给定位置绘制一个标记。目前支持多种标记类型,更多信息请参见 #MarkerTypes。
        参数
        img - 图像。
        position - 十字准线所在的位置。
        color - 线条颜色。
      • fillConvexPoly

        public static void fillConvexPoly​(Mat img,
                                          MatOfPoint points,
                                          Scalar color,
                                          int lineType,
                                          int shift)
        填充一个凸多边形。函数 cv::fillConvexPoly 绘制一个填充的凸多边形。此函数比函数 #fillPoly 快得多。它不仅可以填充凸多边形,还可以填充任何没有自相交的单调多边形,即其轮廓最多与每条水平线(扫描线)相交两次的多边形(尽管其最顶部和/或最底部边缘可以是水平的)。
        参数
        img - 图像。
        points - 多边形顶点。
        color - 多边形颜色。
        lineType - 多边形边界的类型。参见 #LineTypes
        shift - 顶点坐标中的小数位数。
      • fillConvexPoly

        public static void fillConvexPoly​(Mat img,
                                          MatOfPoint points,
                                          Scalar color,
                                          int lineType)
        填充一个凸多边形。函数 cv::fillConvexPoly 绘制一个填充的凸多边形。此函数比函数 #fillPoly 快得多。它不仅可以填充凸多边形,还可以填充任何没有自相交的单调多边形,即其轮廓最多与每条水平线(扫描线)相交两次的多边形(尽管其最顶部和/或最底部边缘可以是水平的)。
        参数
        img - 图像。
        points - 多边形顶点。
        color - 多边形颜色。
        lineType - 多边形边界的类型。参见 #LineTypes
      • fillConvexPoly

        public static void fillConvexPoly​(Mat img,
                                          MatOfPoint points,
                                          Scalar color)
        填充一个凸多边形。函数 cv::fillConvexPoly 绘制一个填充的凸多边形。此函数比函数 #fillPoly 快得多。它不仅可以填充凸多边形,还可以填充任何没有自相交的单调多边形,即其轮廓最多与每条水平线(扫描线)相交两次的多边形(尽管其最顶部和/或最底部边缘可以是水平的)。
        参数
        img - 图像。
        points - 多边形顶点。
        color - 多边形颜色。
      • fillPoly

        public static void fillPoly​(Mat img,
                                    java.util.List<MatOfPoint> pts,
                                    Scalar color,
                                    int lineType,
                                    int shift,
                                    Point offset)
        填充由一个或多个多边形包围的区域。函数 cv::fillPoly 填充由多个多边形轮廓包围的区域。该函数可以填充复杂区域,例如带有孔洞的区域、带有自相交(部分)的轮廓等。
        参数
        img - 图像。
        pts - 多边形数组,其中每个多边形表示为一个点数组。
        color - 多边形颜色。
        lineType - 多边形边界的类型。参见 #LineTypes
        shift - 顶点坐标中的小数位数。
        offset - 轮廓所有点的可选偏移量。
      • fillPoly

        public static void fillPoly​(Mat img,
                                    java.util.List<MatOfPoint> pts,
                                    Scalar color,
                                    int lineType,
                                    int shift)
        填充由一个或多个多边形包围的区域。函数 cv::fillPoly 填充由多个多边形轮廓包围的区域。该函数可以填充复杂区域,例如带有孔洞的区域、带有自相交(部分)的轮廓等。
        参数
        img - 图像。
        pts - 多边形数组,其中每个多边形表示为一个点数组。
        color - 多边形颜色。
        lineType - 多边形边界的类型。参见 #LineTypes
        shift - 顶点坐标中的小数位数。
      • fillPoly

        public static void fillPoly​(Mat img,
                                    java.util.List<MatOfPoint> pts,
                                    Scalar color,
                                    int lineType)
        填充由一个或多个多边形包围的区域。函数 cv::fillPoly 填充由多个多边形轮廓包围的区域。该函数可以填充复杂区域,例如带有孔洞的区域、带有自相交(部分)的轮廓等。
        参数
        img - 图像。
        pts - 多边形数组,其中每个多边形表示为一个点数组。
        color - 多边形颜色。
        lineType - 多边形边界的类型。参见 #LineTypes
      • fillPoly

        public static void fillPoly​(Mat img,
                                    java.util.List<MatOfPoint> pts,
                                    Scalar color)
        填充由一个或多个多边形包围的区域。函数 cv::fillPoly 填充由多个多边形轮廓包围的区域。该函数可以填充复杂区域,例如带有孔洞的区域、带有自相交(部分)的轮廓等。
        参数
        img - 图像。
        pts - 多边形数组,其中每个多边形表示为一个点数组。
        color - 多边形颜色。
      • polylines

        public static void polylines​(Mat img,
                                     java.util.List<MatOfPoint> pts,
                                     boolean isClosed,
                                     Scalar color,
                                     int thickness,
                                     int lineType,
                                     int shift)
        绘制多条多边形曲线。
        参数
        img - 图像。
        pts - 多边形曲线数组。
        isClosed - 标志,指示绘制的多边形线是否闭合。如果闭合,函数将从每条曲线的最后一个顶点到其第一个顶点绘制一条线。
        color - 多边形线的颜色。
        thickness - 多边形线边缘的粗细。
        lineType - 线段的类型。参见 #LineTypes
        shift - 顶点坐标中的小数位数。函数 cv::polylines 绘制一个或多个多边形曲线。
      • polylines

        public static void polylines​(Mat img,
                                     java.util.List<MatOfPoint> pts,
                                     boolean isClosed,
                                     Scalar color,
                                     int thickness,
                                     int lineType)
        绘制多条多边形曲线。
        参数
        img - 图像。
        pts - 多边形曲线数组。
        isClosed - 标志,指示绘制的多边形线是否闭合。如果闭合,函数将从每条曲线的最后一个顶点到其第一个顶点绘制一条线。
        color - 多边形线的颜色。
        thickness - 多边形线边缘的粗细。
        lineType - 线段的类型。参见 #LineTypes。函数 cv::polylines 绘制一个或多个多边形曲线。
      • polylines

        public static void polylines​(Mat img,
                                     java.util.List<MatOfPoint> pts,
                                     boolean isClosed,
                                     Scalar color,
                                     int thickness)
        绘制多条多边形曲线。
        参数
        img - 图像。
        pts - 多边形曲线数组。
        isClosed - 标志,指示绘制的多边形线是否闭合。如果闭合,函数将从每条曲线的最后一个顶点到其第一个顶点绘制一条线。
        color - 多边形线的颜色。
        thickness - 多边形线边缘的粗细。函数 cv::polylines 绘制一个或多个多边形曲线。
      • polylines

        public static void polylines​(Mat img,
                                     java.util.List<MatOfPoint> pts,
                                     boolean isClosed,
                                     Scalar color)
        绘制多条多边形曲线。
        参数
        img - 图像。
        pts - 多边形曲线数组。
        isClosed - 标志,指示绘制的多边形线是否闭合。如果闭合,函数将从每条曲线的最后一个顶点到其第一个顶点绘制一条线。
        color - 多边形线的颜色。函数 cv::polylines 绘制一个或多个多边形曲线。
      • drawContours

        public static void drawContours​(Mat image,
                                        java.util.List<MatOfPoint> contours,
                                        int contourIdx,
                                        Scalar color,
                                        int thickness,
                                        int lineType,
                                        Mat hierarchy,
                                        int maxLevel,
                                        Point offset)
        绘制轮廓线或填充轮廓。如果 \(\texttt{thickness} \ge 0\),函数在图像中绘制轮廓线;如果 \(\texttt{thickness}<0\),则填充由轮廓包围的区域。以下示例展示了如何从二值图像中检索连通分量并对其进行标记: : INCLUDE: snippets/imgproc_drawContours.cpp
        参数
        image - 目标图像。
        contours - 所有输入轮廓。每个轮廓都存储为点向量。
        contourIdx - 指示要绘制的轮廓的参数。如果为负值,则绘制所有轮廓。
        color - 轮廓的颜色。
        thickness - 绘制轮廓的线条粗细。如果为负值(例如,thickness=#FILLED ),则绘制轮廓内部。
        lineType - 线条连接性。参见 #LineTypes
        hierarchy - 关于层次的可选信息。只有当您只想绘制部分轮廓时才需要(参见 maxLevel)。
        maxLevel - 绘制轮廓的最大级别。如果为0,则只绘制指定的轮廓。如果为1,则函数绘制轮廓及其所有嵌套轮廓。如果为2,则函数绘制轮廓、所有嵌套轮廓、所有嵌套的嵌套轮廓,依此类推。此参数仅在存在层次结构时才考虑。
        offset - 可选的轮廓偏移参数。将所有绘制的轮廓按指定的 \(\texttt{offset}=(dx,dy)\) 偏移。注意:当 thickness=#FILLED 时,即使没有提供层次结构数据,该函数也旨在正确处理带孔的连通分量。这是通过使用奇偶规则共同分析所有轮廓来完成的。如果您有单独检索的轮廓的联合集合,这可能会给出不正确的结果。为了解决这个问题,您需要为每个轮廓子组单独调用 #drawContours,或者使用 contourIdx 参数迭代集合。
      • drawContours

        public static void drawContours​(Mat image,
                                        java.util.List<MatOfPoint> contours,
                                        int contourIdx,
                                        Scalar color,
                                        int thickness,
                                        int lineType,
                                        Mat hierarchy,
                                        int maxLevel)
        绘制轮廓线或填充轮廓。如果 \(\texttt{thickness} \ge 0\),函数在图像中绘制轮廓线;如果 \(\texttt{thickness}<0\),则填充由轮廓包围的区域。以下示例展示了如何从二值图像中检索连通分量并对其进行标记: : INCLUDE: snippets/imgproc_drawContours.cpp
        参数
        image - 目标图像。
        contours - 所有输入轮廓。每个轮廓都存储为点向量。
        contourIdx - 指示要绘制的轮廓的参数。如果为负值,则绘制所有轮廓。
        color - 轮廓的颜色。
        thickness - 绘制轮廓的线条粗细。如果为负值(例如,thickness=#FILLED ),则绘制轮廓内部。
        lineType - 线条连接性。参见 #LineTypes
        hierarchy - 关于层次的可选信息。只有当您只想绘制部分轮廓时才需要(参见 maxLevel)。
        maxLevel - 绘制轮廓的最大级别。如果为0,则只绘制指定的轮廓。如果为1,则函数绘制轮廓及其所有嵌套轮廓。如果为2,则函数绘制轮廓、所有嵌套轮廓、所有嵌套的嵌套轮廓,依此类推。此参数仅在存在层次结构时才考虑。 \(\texttt{offset}=(dx,dy)\) 。注意:当 thickness=#FILLED 时,即使没有提供层次结构数据,该函数也旨在正确处理带孔的连通分量。这是通过使用奇偶规则共同分析所有轮廓来完成的。如果您有单独检索的轮廓的联合集合,这可能会给出不正确的结果。为了解决这个问题,您需要为每个轮廓子组单独调用 #drawContours,或者使用 contourIdx 参数迭代集合。
      • drawContours

        public static void drawContours​(Mat image,
                                        java.util.List<MatOfPoint> contours,
                                        int contourIdx,
                                        Scalar color,
                                        int thickness,
                                        int lineType,
                                        Mat hierarchy)
        绘制轮廓线或填充轮廓。如果 \(\texttt{thickness} \ge 0\),函数在图像中绘制轮廓线;如果 \(\texttt{thickness}<0\),则填充由轮廓包围的区域。以下示例展示了如何从二值图像中检索连通分量并对其进行标记: : INCLUDE: snippets/imgproc_drawContours.cpp
        参数
        image - 目标图像。
        contours - 所有输入轮廓。每个轮廓都存储为点向量。
        contourIdx - 指示要绘制的轮廓的参数。如果为负值,则绘制所有轮廓。
        color - 轮廓的颜色。
        thickness - 绘制轮廓的线条粗细。如果为负值(例如,thickness=#FILLED ),则绘制轮廓内部。
        lineType - 线条连接性。参见 #LineTypes
        hierarchy - 关于层次的可选信息。只有当您只想绘制部分轮廓时才需要(参见 maxLevel)。如果为1,则函数绘制轮廓及其所有嵌套轮廓。如果为2,则函数绘制轮廓、所有嵌套轮廓、所有嵌套的嵌套轮廓,依此类推。此参数仅在存在层次结构时才考虑。 \(\texttt{offset}=(dx,dy)\) 。注意:当 thickness=#FILLED 时,即使没有提供层次结构数据,该函数也旨在正确处理带孔的连通分量。这是通过使用奇偶规则共同分析所有轮廓来完成的。如果您有单独检索的轮廓的联合集合,这可能会给出不正确的结果。为了解决这个问题,您需要为每个轮廓子组单独调用 #drawContours,或者使用 contourIdx 参数迭代集合。
      • drawContours

        public static void drawContours​(Mat image,
                                        java.util.List<MatOfPoint> contours,
                                        int contourIdx,
                                        Scalar color,
                                        int thickness,
                                        int lineType)
        绘制轮廓线或填充轮廓。如果 \(\texttt{thickness} \ge 0\),函数在图像中绘制轮廓线;如果 \(\texttt{thickness}<0\),则填充由轮廓包围的区域。以下示例展示了如何从二值图像中检索连通分量并对其进行标记: : INCLUDE: snippets/imgproc_drawContours.cpp
        参数
        image - 目标图像。
        contours - 所有输入轮廓。每个轮廓都存储为点向量。
        contourIdx - 指示要绘制的轮廓的参数。如果为负值,则绘制所有轮廓。
        color - 轮廓的颜色。
        thickness - 绘制轮廓的线条粗细。如果为负值(例如,thickness=#FILLED ),则绘制轮廓内部。
        lineType - 线条连接性。参见 #LineTypes。部分轮廓(参见 maxLevel)。如果为1,则函数绘制轮廓及其所有嵌套轮廓。如果为2,则函数绘制轮廓、所有嵌套轮廓、所有嵌套的嵌套轮廓,依此类推。此参数仅在存在层次结构时才考虑。 \(\texttt{offset}=(dx,dy)\) 。注意:当 thickness=#FILLED 时,即使没有提供层次结构数据,该函数也旨在正确处理带孔的连通分量。这是通过使用奇偶规则共同分析所有轮廓来完成的。如果您有单独检索的轮廓的联合集合,这可能会给出不正确的结果。为了解决这个问题,您需要为每个轮廓子组单独调用 #drawContours,或者使用 contourIdx 参数迭代集合。
      • drawContours

        public static void drawContours​(Mat image,
                                        java.util.List<MatOfPoint> contours,
                                        int contourIdx,
                                        Scalar color,
                                        int thickness)
        绘制轮廓线或填充轮廓。如果 \(\texttt{thickness} \ge 0\),函数在图像中绘制轮廓线;如果 \(\texttt{thickness}<0\),则填充由轮廓包围的区域。以下示例展示了如何从二值图像中检索连通分量并对其进行标记: : INCLUDE: snippets/imgproc_drawContours.cpp
        参数
        image - 目标图像。
        contours - 所有输入轮廓。每个轮廓都存储为点向量。
        contourIdx - 指示要绘制的轮廓的参数。如果为负值,则绘制所有轮廓。
        color - 轮廓的颜色。
        thickness - 绘制轮廓的线条粗细。如果为负值(例如,thickness=#FILLED ),则绘制轮廓内部。部分轮廓(参见 maxLevel)。如果为1,则函数绘制轮廓及其所有嵌套轮廓。如果为2,则函数绘制轮廓、所有嵌套轮廓、所有嵌套的嵌套轮廓,依此类推。此参数仅在存在层次结构时才考虑。 \(\texttt{offset}=(dx,dy)\) 。注意:当 thickness=#FILLED 时,即使没有提供层次结构数据,该函数也旨在正确处理带孔的连通分量。这是通过使用奇偶规则共同分析所有轮廓来完成的。如果您有单独检索的轮廓的联合集合,这可能会给出不正确的结果。为了解决这个问题,您需要为每个轮廓子组单独调用 #drawContours,或者使用 contourIdx 参数迭代集合。
      • drawContours

        public static void drawContours​(Mat image,
                                        java.util.List<MatOfPoint> contours,
                                        int contourIdx,
                                        Scalar color)
        绘制轮廓线或填充轮廓。如果 \(\texttt{thickness} \ge 0\),函数在图像中绘制轮廓线;如果 \(\texttt{thickness}<0\),则填充由轮廓包围的区域。以下示例展示了如何从二值图像中检索连通分量并对其进行标记: : INCLUDE: snippets/imgproc_drawContours.cpp
        参数
        image - 目标图像。
        contours - 所有输入轮廓。每个轮廓都存储为点向量。
        contourIdx - 指示要绘制的轮廓的参数。如果为负值,则绘制所有轮廓。
        color - 轮廓的颜色。thickness=#FILLED ),则绘制轮廓内部。部分轮廓(参见 maxLevel)。如果为1,则函数绘制轮廓及其所有嵌套轮廓。如果为2,则函数绘制轮廓、所有嵌套轮廓、所有嵌套的嵌套轮廓,依此类推。此参数仅在存在层次结构时才考虑。 \(\texttt{offset}=(dx,dy)\) 。注意:当 thickness=#FILLED 时,即使没有提供层次结构数据,该函数也旨在正确处理带孔的连通分量。这是通过使用奇偶规则共同分析所有轮廓来完成的。如果您有单独检索的轮廓的联合集合,这可能会给出不正确的结果。为了解决这个问题,您需要为每个轮廓子组单独调用 #drawContours,或者使用 contourIdx 参数迭代集合。
      • clipLine

        public static boolean clipLine​(Rect imgRect,
                                       Point pt1,
                                       Point pt2)
        参数
        imgRect - 图像矩形。
        pt1 - 直线的第一个点。
        pt2 - 直线的第二个点。
        返回
        自动生成
      • ellipse2Poly

        public static void ellipse2Poly​(Point center,
                                        Size axes,
                                        int angle,
                                        int arcStart,
                                        int arcEnd,
                                        int delta,
                                        MatOfPoint pts)
        用多边形线近似椭圆弧。函数 ellipse2Poly 计算近似指定椭圆弧的多边形线的顶点。它被 #ellipse 使用。如果 arcStart 大于 arcEnd,则它们将被交换。
        参数
        center - 弧的中心。
        axes - 椭圆主轴尺寸的一半。详情参见 #ellipse。
        angle - 椭圆旋转角度(以度为单位)。详情参见 #ellipse。
        arcStart - 椭圆弧的起始角度(以度为单位)。
        arcEnd - 椭圆弧的结束角度(以度为单位)。
        delta - 连续多边形线顶点之间的角度。它定义了近似精度。
        pts - 多边形线顶点的输出向量。
      • putText

        public static void putText​(Mat img,
                                   java.lang.String text,
                                   Point org,
                                   int fontFace,
                                   double fontScale,
                                   Scalar color,
                                   int thickness,
                                   int lineType,
                                   boolean bottomLeftOrigin)
        绘制文本字符串。函数 cv::putText 在图像中渲染指定的文本字符串。无法使用指定字体渲染的符号将替换为问号。有关文本渲染代码示例,请参见 #getTextSize。 fontScale 参数是一个比例因子,它乘以基本字体大小
        • 当 scale > 1 时,文本被放大。
        • 当 0 < scale < 1 时,文本被缩小。
        • 当 scale < 0 时,文本被镜像或反转。
        参数
        img - 图像。
        text - 要绘制的文本字符串。
        org - 文本字符串在图像中的左下角。
        fontFace - 字体类型,参见 #HersheyFonts。
        fontScale - 字体比例因子,乘以字体特定的基本大小。
        color - 文本颜色。
        thickness - 用于绘制文本的线条粗细。
        lineType - 线条类型。参见 #LineTypes
        bottomLeftOrigin - 当为true时,图像数据原点位于左下角。否则,它位于左上角。
      • putText

        public static void putText​(Mat img,
                                   java.lang.String text,
                                   Point org,
                                   int fontFace,
                                   double fontScale,
                                   Scalar color,
                                   int thickness,
                                   int lineType)
        绘制文本字符串。函数 cv::putText 在图像中渲染指定的文本字符串。无法使用指定字体渲染的符号将替换为问号。有关文本渲染代码示例,请参见 #getTextSize。 fontScale 参数是一个比例因子,它乘以基本字体大小
        • 当 scale > 1 时,文本被放大。
        • 当 0 < scale < 1 时,文本被缩小。
        • 当 scale < 0 时,文本被镜像或反转。
        参数
        img - 图像。
        text - 要绘制的文本字符串。
        org - 文本字符串在图像中的左下角。
        fontFace - 字体类型,参见 #HersheyFonts。
        fontScale - 字体比例因子,乘以字体特定的基本大小。
        color - 文本颜色。
        thickness - 用于绘制文本的线条粗细。
        lineType - 线条类型。参见 #LineTypes。它位于左上角。
      • putText

        public static void putText​(Mat img,
                                   java.lang.String text,
                                   Point org,
                                   int fontFace,
                                   double fontScale,
                                   Scalar color,
                                   int thickness)
        绘制文本字符串。函数 cv::putText 在图像中渲染指定的文本字符串。无法使用指定字体渲染的符号将替换为问号。有关文本渲染代码示例,请参见 #getTextSize。 fontScale 参数是一个比例因子,它乘以基本字体大小
        • 当 scale > 1 时,文本被放大。
        • 当 0 < scale < 1 时,文本被缩小。
        • 当 scale < 0 时,文本被镜像或反转。
        参数
        img - 图像。
        text - 要绘制的文本字符串。
        org - 文本字符串在图像中的左下角。
        fontFace - 字体类型,参见 #HersheyFonts。
        fontScale - 字体比例因子,乘以字体特定的基本大小。
        color - 文本颜色。
        thickness - 用于绘制文本的线条粗细。它位于左上角。
      • putText

        public static void putText​(Mat img,
                                   java.lang.String text,
                                   Point org,
                                   int fontFace,
                                   double fontScale,
                                   Scalar color)
        绘制文本字符串。函数 cv::putText 在图像中渲染指定的文本字符串。无法使用指定字体渲染的符号将替换为问号。有关文本渲染代码示例,请参见 #getTextSize。 fontScale 参数是一个比例因子,它乘以基本字体大小
        • 当 scale > 1 时,文本被放大。
        • 当 0 < scale < 1 时,文本被缩小。
        • 当 scale < 0 时,文本被镜像或反转。
        参数
        img - 图像。
        text - 要绘制的文本字符串。
        org - 文本字符串在图像中的左下角。
        fontFace - 字体类型,参见 #HersheyFonts。
        fontScale - 字体比例因子,乘以字体特定的基本大小。
        color - 文本颜色。它位于左上角。
      • getFontScaleFromHeight

        public static double getFontScaleFromHeight​(int fontFace,
                                                    int pixelHeight,
                                                    int thickness)
        计算达到给定像素高度所需的字体特定大小。
        参数
        fontFace - 要使用的字体,参见 cv::HersheyFonts。
        pixelHeight - 用于计算 fontScale 的像素高度。
        thickness - 用于渲染文本的线条粗细。详情参见 putText。
        返回
        用于 cv::putText 的字体大小。参见: cv::putText
      • getFontScaleFromHeight

        public static double getFontScaleFromHeight​(int fontFace,
                                                    int pixelHeight)
        计算达到给定像素高度所需的字体特定大小。
        参数
        fontFace - 要使用的字体,参见 cv::HersheyFonts。
        pixelHeight - 用于计算 fontScale 的像素高度。
        返回
        用于 cv::putText 的字体大小。参见: cv::putText
      • HoughLinesWithAccumulator

        public static void HoughLinesWithAccumulator​(Mat image,
                                                     Mat lines,
                                                     double rho,
                                                     double theta,
                                                     int threshold,
                                                     double srn,
                                                     double stn,
                                                     double min_theta,
                                                     double max_theta,
                                                     boolean use_edgeval)
        使用标准霍夫变换在二值图像中查找线条并获取累加器。注意:此函数仅用于绑定。请在C++代码中使用原始函数。参见:HoughLines
        参数
        image - 自动生成
        lines - 自动生成
        rho - 自动生成
        theta - 自动生成
        threshold - 自动生成
        srn - 自动生成
        stn - 自动生成
        min_theta - 自动生成
        max_theta - 自动生成
        use_edgeval - 自动生成
      • HoughLinesWithAccumulator

        public static void HoughLinesWithAccumulator​(Mat image,
                                                     Mat lines,
                                                     double rho,
                                                     double theta,
                                                     int threshold,
                                                     double srn,
                                                     double stn,
                                                     double min_theta,
                                                     double max_theta)
        使用标准霍夫变换在二值图像中查找线条并获取累加器。注意:此函数仅用于绑定。请在C++代码中使用原始函数。参见:HoughLines
        参数
        image - 自动生成
        lines - 自动生成
        rho - 自动生成
        theta - 自动生成
        threshold - 自动生成
        srn - 自动生成
        stn - 自动生成
        min_theta - 自动生成
        max_theta - 自动生成
      • HoughLinesWithAccumulator

        public static void HoughLinesWithAccumulator​(Mat image,
                                                     Mat lines,
                                                     double rho,
                                                     double theta,
                                                     int threshold,
                                                     double srn,
                                                     double stn,
                                                     double min_theta)
        使用标准霍夫变换在二值图像中查找线条并获取累加器。注意:此函数仅用于绑定。请在C++代码中使用原始函数。参见:HoughLines
        参数
        image - 自动生成
        lines - 自动生成
        rho - 自动生成
        theta - 自动生成
        threshold - 自动生成
        srn - 自动生成
        stn - 自动生成
        min_theta - 自动生成
      • HoughLinesWithAccumulator

        public static void HoughLinesWithAccumulator​(Mat image,
                                                     Mat lines,
                                                     double rho,
                                                     double theta,
                                                     int threshold,
                                                     double srn,
                                                     double stn)
        使用标准霍夫变换在二值图像中查找线条并获取累加器。注意:此函数仅用于绑定。请在C++代码中使用原始函数。参见:HoughLines
        参数
        image - 自动生成
        lines - 自动生成
        rho - 自动生成
        theta - 自动生成
        threshold - 自动生成
        srn - 自动生成
        stn - 自动生成
      • HoughLinesWithAccumulator

        public static void HoughLinesWithAccumulator​(Mat image,
                                                     Mat lines,
                                                     double rho,
                                                     double theta,
                                                     int threshold,
                                                     double srn)
        使用标准霍夫变换在二值图像中查找线条并获取累加器。注意:此函数仅用于绑定。请在C++代码中使用原始函数。参见:HoughLines
        参数
        image - 自动生成
        lines - 自动生成
        rho - 自动生成
        theta - 自动生成
        threshold - 自动生成
        srn - 自动生成
      • HoughLinesWithAccumulator

        public static void HoughLinesWithAccumulator​(Mat image,
                                                     Mat lines,
                                                     double rho,
                                                     double theta,
                                                     int threshold)
        使用标准霍夫变换在二值图像中查找线条并获取累加器。注意:此函数仅用于绑定。请在C++代码中使用原始函数。参见:HoughLines
        参数
        image - 自动生成
        lines - 自动生成
        rho - 自动生成
        theta - 自动生成
        threshold - 自动生成
      • HoughCirclesWithAccumulator

        public static void HoughCirclesWithAccumulator​(Mat image,
                                                       Mat circles,
                                                       int method,
                                                       double dp,
                                                       double minDist,
                                                       double param1,
                                                       double param2,
                                                       int minRadius,
                                                       int maxRadius)
        使用霍夫变换在灰度图像中查找圆形并获取累加器。注意:此函数仅用于绑定。请在C++代码中使用原始函数。参见:HoughCircles
        参数
        image - 自动生成
        circles - 自动生成
        method - 自动生成
        dp - 自动生成
        minDist - 自动生成
        param1 - 自动生成
        param2 - 自动生成
        minRadius - 自动生成
        maxRadius - 自动生成
      • HoughCirclesWithAccumulator

        public static void HoughCirclesWithAccumulator​(Mat image,
                                                       Mat circles,
                                                       int method,
                                                       double dp,
                                                       double minDist,
                                                       double param1,
                                                       double param2,
                                                       int minRadius)
        使用霍夫变换在灰度图像中查找圆形并获取累加器。注意:此函数仅用于绑定。请在C++代码中使用原始函数。参见:HoughCircles
        参数
        image - 自动生成
        circles - 自动生成
        method - 自动生成
        dp - 自动生成
        minDist - 自动生成
        param1 - 自动生成
        param2 - 自动生成
        minRadius - 自动生成
      • HoughCirclesWithAccumulator

        public static void HoughCirclesWithAccumulator​(Mat image,
                                                       Mat circles,
                                                       int method,
                                                       double dp,
                                                       double minDist,
                                                       double param1,
                                                       double param2)
        使用霍夫变换在灰度图像中查找圆形并获取累加器。注意:此函数仅用于绑定。请在C++代码中使用原始函数。参见:HoughCircles
        参数
        image - 自动生成
        circles - 自动生成
        method - 自动生成
        dp - 自动生成
        minDist - 自动生成
        param1 - 自动生成
        param2 - 自动生成
      • HoughCirclesWithAccumulator

        public static void HoughCirclesWithAccumulator​(Mat image,
                                                       Mat circles,
                                                       int method,
                                                       double dp,
                                                       double minDist,
                                                       double param1)
        使用霍夫变换在灰度图像中查找圆形并获取累加器。注意:此函数仅用于绑定。请在C++代码中使用原始函数。参见:HoughCircles
        参数
        image - 自动生成
        circles - 自动生成
        method - 自动生成
        dp - 自动生成
        minDist - 自动生成
        param1 - 自动生成
      • HoughCirclesWithAccumulator

        public static void HoughCirclesWithAccumulator​(Mat image,
                                                       Mat circles,
                                                       int method,
                                                       double dp,
                                                       double minDist)
        使用霍夫变换在灰度图像中查找圆形并获取累加器。注意:此函数仅用于绑定。请在C++代码中使用原始函数。参见:HoughCircles
        参数
        image - 自动生成
        circles - 自动生成
        method - 自动生成
        dp - 自动生成
        minDist - 自动生成
      • getTextSize

        public static Size getTextSize​(java.lang.String text,
                                       int fontFace,
                                       double fontScale,
                                       int thickness,
                                       int[] baseLine)