python+cv2+gstreamer 推流<500ms低延迟的处理策略

29 篇文章 0 订阅
18 篇文章 0 订阅

1.一份可用的推流配置

        self.out = cv2.VideoWriter('appsrc is-live=True stream-type=0 emit-signals=False max-latency=1' + \
        ' ! videoconvert ! video/x-raw, format=I420' + \
        ' ! x264enc speed-preset=ultrafast bitrate=1200 tune="zerolatency" key-int-max=' + str( keyIntMax ) + \
        ' ! video/x-h264,profile=baseline' + \
        ' ! rtspclientsink location=%s' %(self.rtsp_url),
        cv2.CAP_GSTREAMER, cv2.VideoWriter_fourcc(*'h264'), self.fps, (self.width, self.height), True)

注意那个tune="zerolatency"是关键。

1.1 配置参数注释:

  • is-live=True stream-type=0
    这是在提示gstreamer这个流是个实时流,无需进行定位
  • emit-signals=False
    这是在阻止gstreamer发出查询消息。
  • max-latency=1
    这个是在让输入缓冲区最小。
  • video/x-raw, format=I420
    这是在把转入的图片转换为YUV模式,因为后续的编解码器默认都是对YUV图片进行处理
  • speed-preset=ultrafast
    这是在选用最快速的无延迟的算法
  • tune="zerolatency"
    x264因为有关键帧的比对,它的内部缓冲区不会为空。这个指令是在只要生成一帧视频数据,就快速后传。
  • key-int-max=' + str( keyIntMax )
    我在测试时,会把关键帧的数量设置为1——每一帧都是关键帧,用这种方法减少latency.
  • VideoWriter的最后一个参数True:输出图片是彩色的,否则是黑白的。这会反过来约束AppSr c送入的数据。

附录A .cv2相关的版本信息查看

  1. 检查OpenCV版本:cv2.__version__
  2. 查看OpenCV的编译信息:cv2.getBuildInformation()
  3. 查看所有可用的模块:dir(cv2)

A.1.cv2的官方函数接口文档: 

OpenCV: OpenCV modulesicon-default.png?t=N7T8https://docs.opencv.org/4.5.1/index.html注意其中的版本选择,在网页的左上角。要和cv2.__version__匹配

A.2. 一份cv2的环境信息

cat@lubancat:~$ python3
Python 3.9.2 (default, Feb 28 2021, 17:03:44) 
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> print(cv2.__version__)
4.5.1
>>> dir(cv2)
['', 'ACCESS_FAST', 'ACCESS_MASK', 'ACCESS_READ', 'ACCESS_RW', 'ACCESS_WRITE', 'ADAPTIVE_THRESH_GAUSSIAN_C', 'ADAPTIVE_THRESH_MEAN_C', 'AGAST_FEATURE_DETECTOR_AGAST_5_8', 'AGAST_FEATURE_DETECTOR_AGAST_7_12D', 'AGAST_FEATURE_DETECTOR_AGAST_7_12S', 'AGAST_FEATURE_DETECTOR_NONMAX_SUPPRESSION', 'AGAST_FEATURE_DETECTOR_OAST_9_16', 'AGAST_FEATURE_DETECTOR_THRESHOLD', 'AKAZE', 'AKAZE_DESCRIPTOR_KAZE', 'AKAZE_DESCRIPTOR_KAZE_UPRIGHT', 'AKAZE_DESCRIPTOR_MLDB', 'AKAZE_DESCRIPTOR_MLDB_UPRIGHT', 'AKAZE_create', 'AffineFeature', 'AffineFeature_create', 'AffineTransformer', 'AgastFeatureDetector', 'AgastFeatureDetector_AGAST_5_8', 'AgastFeatureDetector_AGAST_7_12d', 'AgastFeatureDetector_AGAST_7_12s', 'AgastFeatureDetector_NONMAX_SUPPRESSION', 'AgastFeatureDetector_OAST_9_16', 'AgastFeatureDetector_THRESHOLD', 'AgastFeatureDetector_create', 'Algorithm', 'AlignExposures', 'AlignMTB', 'AsyncArray', 'BFMatcher', 'BFMatcher_create', 'BORDER_CONSTANT', 'BORDER_DEFAULT', 'BORDER_ISOLATED', 'BORDER_REFLECT', 'BORDER_REFLECT101', 'BORDER_REFLECT_101', 'BORDER_REPLICATE', 'BORDER_TRANSPARENT', 'BORDER_WRAP', 'BOWImgDescriptorExtractor', 'BOWKMeansTrainer', 'BOWTrainer', 'BRISK', 'BRISK_create', 'BackgroundSubtractor', 'BackgroundSubtractorKNN', 'BackgroundSubtractorMOG2', 'BaseCascadeClassifier', 'CALIB_CB_ACCURACY', 'CALIB_CB_ADAPTIVE_THRESH', 'CALIB_CB_ASYMMETRIC_GRID', 'CALIB_CB_CLUSTERING', 'CALIB_CB_EXHAUSTIVE', 'CALIB_CB_FAST_CHECK', 'CALIB_CB_FILTER_QUADS', 'CALIB_CB_LARGER', 'CALIB_CB_MARKER', 'CALIB_CB_NORMALIZE_IMAGE', 'CALIB_CB_SYMMETRIC_GRID', 'CALIB_FIX_ASPECT_RATIO', 'CALIB_FIX_FOCAL_LENGTH', 'CALIB_FIX_INTRINSIC', 'CALIB_FIX_K1', 'CALIB_FIX_K2', 'CALIB_FIX_K3', 'CALIB_FIX_K4', 'CALIB_FIX_K5', 'CALIB_FIX_K6', 'CALIB_FIX_PRINCIPAL_POINT', 'CALIB_FIX_S1_S2_S3_S4', 'CALIB_FIX_TANGENT_DIST', 'CALIB_FIX_TAUX_TAUY', 'CALIB_HAND_EYE_ANDREFF', 'CALIB_HAND_EYE_DANIILIDIS', 'CALIB_HAND_EYE_HORAUD', 'CALIB_HAND_EYE_PARK', 'CALIB_HAND_EYE_TSAI', 'CALIB_NINTRINSIC', 'CALIB_RATIONAL_MODEL', 'CALIB_ROBOT_WORLD_HAND_EYE_LI', 'CALIB_ROBOT_WORLD_HAND_EYE_SHAH', 'CALIB_SAME_FOCAL_LENGTH', 'CALIB_THIN_PRISM_MODEL', 'CALIB_TILTED_MODEL', 'CALIB_USE_EXTRINSIC_GUESS', 'CALIB_USE_INTRINSIC_GUESS', 'CALIB_USE_LU', 'CALIB_USE_QR', 'CALIB_ZERO_DISPARITY', 'CALIB_ZERO_TANGENT_DIST', 'CAP_ANDROID', 'CAP_ANY', 'CAP_ARAVIS', 'CAP_AVFOUNDATION', 'CAP_CMU1394', 'CAP_DC1394', 'CAP_DSHOW', 'CAP_FFMPEG', 'CAP_FIREWARE', 'CAP_FIREWIRE', 'CAP_GIGANETIX', 'CAP_GPHOTO2', 'CAP_GSTREAMER', 'CAP_IEEE1394', 'CAP_IMAGES', 'CAP_INTELPERC', 'CAP_INTELPERC_DEPTH_GENERATOR', 'CAP_INTELPERC_DEPTH_MAP', 'CAP_INTELPERC_GENERATORS_MASK', 'CAP_INTELPERC_IMAGE', 'CAP_INTELPERC_IMAGE_GENERATOR', 'CAP_INTELPERC_IR_GENERATOR', 'CAP_INTELPERC_IR_MAP', 'CAP_INTELPERC_UVDEPTH_MAP', 'CAP_INTEL_MFX', 'CAP_MSMF', 'CAP_OPENCV_MJPEG', 'CAP_OPENNI', 'CAP_OPENNI2', 'CAP_OPENNI2_ASTRA', 'CAP_OPENNI2_ASUS', 'CAP_OPENNI_ASUS', 'CAP_OPENNI_BGR_IMAGE', 'CAP_OPENNI_DEPTH_GENERATOR', 'CAP_OPENNI_DEPTH_GENERATOR_BASELINE', 'CAP_OPENNI_DEPTH_GENERATOR_FOCAL_LENGTH', 'CAP_OPENNI_DEPTH_GENERATOR_PRESENT', 'CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION', 'CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION_ON', 'CAP_OPENNI_DEPTH_MAP', 'CAP_OPENNI_DISPARITY_MAP', 'CAP_OPENNI_DISPARITY_MAP_32F', 'CAP_OPENNI_GENERATORS_MASK', 'CAP_OPENNI_GRAY_IMAGE', 'CAP_OPENNI_IMAGE_GENERATOR', 'CAP_OPENNI_IMAGE_GENERATOR_OUTPUT_MODE', 'CAP_OPENNI_IMAGE_GENERATOR_PRESENT', 'CAP_OPENNI_IR_GENERATOR', 'CAP_OPENNI_IR_GENERATOR_PRESENT', 'CAP_OPENNI_IR_IMAGE', 'CAP_OPENNI_POINT_CLOUD_MAP', 'CAP_OPENNI_QVGA_30HZ', 'CAP_OPENNI_QVGA_60HZ', 'CAP_OPENNI_SXGA_15HZ', 'CAP_OPENNI_SXGA_30HZ', 'CAP_OPENNI_VALID_DEPTH_MASK', 'CAP_OPENNI_VGA_30HZ', 'CAP_PROP_APERTURE', 'CAP_PROP_ARAVIS_AUTOTRIGGER', 'CAP_PROP_AUTOFOCUS', 'CAP_PROP_AUTO_EXPOSURE', 'CAP_PROP_AUTO_WB', 'CAP_PROP_BACKEND', 'CAP_PROP_BACKLIGHT', 'CAP_PROP_BITRATE', 'CAP_PROP_BRIGHTNESS', 'CAP_PROP_BUFFERSIZE', 'CAP_PROP_CHANNEL', 'CAP_PROP_CODEC_PIXEL_FORMAT', 'CAP_PROP_CONTRAST', 'CAP_PROP_CONVERT_RGB', 'CAP_PROP_DC1394_MAX', 'CAP_PROP_DC1394_MODE_AUTO', 'CAP_PROP_DC1394_MODE_MANUAL', 'CAP_PROP_DC1394_MODE_ONE_PUSH_AUTO', 'CAP_PROP_DC1394_OFF', 'CAP_PROP_EXPOSURE', 'CAP_PROP_EXPOSUREPROGRAM', 'CAP_PROP_FOCUS', 'CAP_PROP_FORMAT', 'CAP_PROP_FOURCC', 'CAP_PROP_FPS', 'CAP_PROP_FRAME_COUNT', 'CAP_PROP_FRAME_HEIGHT', 'CAP_PROP_FRAME_WIDTH', 'CAP_PROP_GAIN', 'CAP_PROP_GAMMA', 'CAP_PROP_GIGA_FRAME_HEIGH_MAX', 'CAP_PROP_GIGA_FRAME_OFFSET_X', 'CAP_PROP_GIGA_FRAME_OFFSET_Y', 'CAP_PROP_GIGA_FRAME_SENS_HEIGH', 'CAP_PROP_GIGA_FRAME_SENS_WIDTH', 'CAP_PROP_GIGA_FRAME_WIDTH_MAX', 'CAP_PROP_GPHOTO2_COLLECT_MSGS', 'CAP_PROP_GPHOTO2_FLUSH_MSGS', 'CAP_PROP_GPHOTO2_PREVIEW', 'CAP_PROP_GPHOTO2_RELOAD_CONFIG', 'CAP_PROP_GPHOTO2_RELOAD_ON_CHANGE', 'CAP_PROP_GPHOTO2_WIDGET_ENUMERATE', 'CAP_PROP_GSTREAMER_QUEUE_LENGTH', 'CAP_PROP_GUID', 'CAP_PROP_HUE', 'CAP_PROP_IMAGES_BASE', 'CAP_PROP_IMAGES_LAST', 'CAP_PROP_INTELPERC_DEPTH_CONFIDENCE_THRESHOLD', 'CAP_PROP_INTELPERC_DEPTH_FOCAL_LENGTH_HORZ', 'CAP_PROP_INTELPERC_DEPTH_FOCAL_LENGTH_VERT', 'CAP_PROP_INTELPERC_DEPTH_LOW_CONFIDENCE_VALUE', 'CAP_PROP_INTELPERC_DEPTH_SATURATION_VALUE', 'CAP_PROP_INTELPERC_PROFILE_COUNT', 'CAP_PROP_INTELPERC_PROFILE_IDX', 'CAP_PROP_IOS_DEVICE_EXPOSURE', 'CAP_PROP_IOS_DEVICE_FLASH', 'CAP_PROP_IOS_DEVICE_FOCUS', 'CAP_PROP_IOS_DEVICE_TORCH', 'CAP_PROP_IOS_DEVICE_WHITEBALANCE', 'CAP_PROP_IRIS', 'CAP_PROP_ISO_SPEED', 'CAP_PROP_MODE', 'CAP_PROP_MONOCHROME', 'CAP_PROP_OPENNI2_MIRROR', 'CAP_PROP_OPENNI2_SYNC', 'CAP_PROP_OPENNI_APPROX_FRAME_SYNC', 'CAP_PROP_OPENNI_BASELINE', 'CAP_PROP_OPENNI_CIRCLE_BUFFER', 'CAP_PROP_OPENNI_FOCAL_LENGTH', 'CAP_PROP_OPENNI_FRAME_MAX_DEPTH', 'CAP_PROP_OPENNI_GENERATOR_PRESENT', 'CAP_PROP_OPENNI_MAX_BUFFER_SIZE', 'CAP_PROP_OPENNI_MAX_TIME_DURATION', 'CAP_PROP_OPENNI_OUTPUT_MODE', 'CAP_PROP_OPENNI_REGISTRATION', 'CAP_PROP_OPENNI_REGISTRATION_ON', 'CAP_PROP_ORIENTATION_AUTO', 'CAP_PROP_ORIENTATION_META', 'CAP_PROP_PAN', 'CAP_PROP_POS_AVI_RATIO', 'CAP_PROP_POS_FRAMES', 'CAP_PROP_POS_MSEC', 'CAP_PROP_PVAPI_BINNINGX', 'CAP_PROP_PVAPI_BINNINGY', 'CAP_PROP_PVAPI_DECIMATIONHORIZONTAL', 'CAP_PROP_PVAPI_DECIMATIONVERTICAL', 'CAP_PROP_PVAPI_FRAMESTARTTRIGGERMODE', 'CAP_PROP_PVAPI_MULTICASTIP', 'CAP_PROP_PVAPI_PIXELFORMAT', 'CAP_PROP_RECTIFICATION', 'CAP_PROP_ROLL', 'CAP_PROP_SAR_DEN', 'CAP_PROP_SAR_NUM', 'CAP_PROP_SATURATION', 'CAP_PROP_SETTINGS', 'CAP_PROP_SHARPNESS', 'CAP_PROP_SPEED', 'CAP_PROP_TEMPERATURE', 'CAP_PROP_TILT', 'CAP_PROP_TRIGGER', 'CAP_PROP_TRIGGER_DELAY', 'CAP_PROP_VIEWFINDER', 'CAP_PROP_WB_TEMPERATURE', 'CAP_PROP_WHITE_BALANCE_BLUE_U', 'CAP_PROP_WHITE_BALANCE_RED_V', 'CAP_PROP_XI_ACQ_BUFFER_SIZE', 'CAP_PROP_XI_ACQ_BUFFER_SIZE_UNIT', 'CAP_PROP_XI_ACQ_FRAME_BURST_COUNT', 'CAP_PROP_XI_ACQ_TIMING_MODE', 'CAP_PROP_XI_ACQ_TRANSPORT_BUFFER_COMMIT', 'CAP_PROP_XI_ACQ_TRANSPORT_BUFFER_SIZE', 'CAP_PROP_XI_AEAG', 'CAP_PROP_XI_AEAG_LEVEL', 'CAP_PROP_XI_AEAG_ROI_HEIGHT', 'CAP_PROP_XI_AEAG_ROI_OFFSET_X', 'CAP_PROP_XI_AEAG_ROI_OFFSET_Y', 'CAP_PROP_XI_AEAG_ROI_WIDTH', 'CAP_PROP_XI_AE_MAX_LIMIT', 'CAP_PROP_XI_AG_MAX_LIMIT', 'CAP_PROP_XI_APPLY_CMS', 'CAP_PROP_XI_AUTO_BANDWIDTH_CALCULATION', 'CAP_PROP_XI_AUTO_WB', 'CAP_PROP_XI_AVAILABLE_BANDWIDTH', 'CAP_PROP_XI_BINNING_HORIZONTAL', 'CAP_PROP_XI_BINNING_PATTERN', 'CAP_PROP_XI_BINNING_SELECTOR', 'CAP_PROP_XI_BINNING_VERTICAL', 'CAP_PROP_XI_BPC', 'CAP_PROP_XI_BUFFERS_QUEUE_SIZE', 'CAP_PROP_XI_BUFFER_POLICY', 'CAP_PROP_XI_CC_MATRIX_00', 'CAP_PROP_XI_CC_MATRIX_01', 'CAP_PROP_XI_CC_MATRIX_02', 'CAP_PROP_XI_CC_MATRIX_03', 'CAP_PROP_XI_CC_MATRIX_10', 'CAP_PROP_XI_CC_MATRIX_11', 'CAP_PROP_XI_CC_MATRIX_12', 'CAP_PROP_XI_CC_MATRIX_13', 'CAP_PROP_XI_CC_MATRIX_20', 'CAP_PROP_XI_CC_MATRIX_21', 'CAP_PROP_XI_CC_MATRIX_22', 'CAP_PROP_XI_CC_MATRIX_23', 'CAP_PROP_XI_CC_MATRIX_30', 'CAP_PROP_XI_CC_MATRIX_31', 'CAP_PROP_XI_CC_MATRIX_32', 'CAP_PROP_XI_CC_MATRIX_33', 'CAP_PROP_XI_CHIP_TEMP', 'CAP_PROP_XI_CMS', 'CAP_PROP_XI_COLOR_FILTER_ARRAY', 'CAP_PROP_XI_COLUMN_FPN_CORRECTION', 'CAP_PROP_XI_COOLING', 'CAP_PROP_XI_COUNTER_SELECTOR', 'CAP_PROP_XI_COUNTER_VALUE', 'CAP_PROP_XI_DATA_FORMAT', 'CAP_PROP_XI_DEBOUNCE_EN', 'CAP_PROP_XI_DEBOUNCE_POL', 'CAP_PROP_XI_DEBOUNCE_T0', 'CAP_PROP_XI_DEBOUNCE_T1', 'CAP_PROP_XI_DEBUG_LEVEL', 'CAP_PROP_XI_DECIMATION_HORIZONTAL', 'CAP_PROP_XI_DECIMATION_PATTERN', 'CAP_PROP_XI_DECIMATION_SELECTOR', 'CAP_PROP_XI_DECIMATION_VERTICAL', 'CAP_PROP_XI_DEFAULT_CC_MATRIX', 'CAP_PROP_XI_DEVICE_MODEL_ID', 'CAP_PROP_XI_DEVICE_RESET', 'CAP_PROP_XI_DEVICE_SN', 'CAP_PROP_XI_DOWNSAMPLING', 'CAP_PROP_XI_DOWNSAMPLING_TYPE', 'CAP_PROP_XI_EXPOSURE', 'CAP_PROP_XI_EXPOSURE_BURST_COUNT', 'CAP_PROP_XI_EXP_PRIORITY', 'CAP_PROP_XI_FFS_ACCESS_KEY', 'CAP_PROP_XI_FFS_FILE_ID', 'CAP_PROP_XI_FFS_FILE_SIZE', 'CAP_PROP_XI_FRAMERATE', 'CAP_PROP_XI_FREE_FFS_SIZE', 'CAP_PROP_XI_GAIN', 'CAP_PROP_XI_GAIN_SELECTOR', 'CAP_PROP_XI_GAMMAC', 'CAP_PROP_XI_GAMMAY', 'CAP_PROP_XI_GPI_LEVEL', 'CAP_PROP_XI_GPI_MODE', 'CAP_PROP_XI_GPI_SELECTOR', 'CAP_PROP_XI_GPO_MODE', 'CAP_PROP_XI_GPO_SELECTOR', 'CAP_PROP_XI_HDR', 'CAP_PROP_XI_HDR_KNEEPOINT_COUNT', 'CAP_PROP_XI_HDR_T1', 'CAP_PROP_XI_HDR_T2', 'CAP_PROP_XI_HEIGHT', 'CAP_PROP_XI_HOUS_BACK_SIDE_TEMP', 'CAP_PROP_XI_HOUS_TEMP', 'CAP_PROP_XI_HW_REVISION', 'CAP_PROP_XI_IMAGE_BLACK_LEVEL', 'CAP_PROP_XI_IMAGE_DATA_BIT_DEPTH', 'CAP_PROP_XI_IMAGE_DATA_FORMAT', 'CAP_PROP_XI_IMAGE_DATA_FORMAT_RGB32_ALPHA', 'CAP_PROP_XI_IMAGE_IS_COLOR', 'CAP_PROP_XI_IMAGE_PAYLOAD_SIZE', 'CAP_PROP_XI_IS_COOLED', 'CAP_PROP_XI_IS_DEVICE_EXIST', 'CAP_PROP_XI_KNEEPOINT1', 'CAP_PROP_XI_KNEEPOINT2', 'CAP_PROP_XI_LED_MODE', 'CAP_PROP_XI_LED_SELECTOR', 'CAP_PROP_XI_LENS_APERTURE_VALUE', 'CAP_PROP_XI_LENS_FEATURE', 'CAP_PROP_XI_LENS_FEATURE_SELECTOR', 'CAP_PROP_XI_LENS_FOCAL_LENGTH', 'CAP_PROP_XI_LENS_FOCUS_DISTANCE', 'CAP_PROP_XI_LENS_FOCUS_MOVE', 'CAP_PROP_XI_LENS_FOCUS_MOVEMENT_VALUE', 'CAP_PROP_XI_LENS_MODE', 'CAP_PROP_XI_LIMIT_BANDWIDTH', 'CAP_PROP_XI_LUT_EN', 'CAP_PROP_XI_LUT_INDEX', 'CAP_PROP_XI_LUT_VALUE', 'CAP_PROP_XI_MANUAL_WB', 'CAP_PROP_XI_OFFSET_X', 'CAP_PROP_XI_OFFSET_Y', 'CAP_PROP_XI_OUTPUT_DATA_BIT_DEPTH', 'CAP_PROP_XI_OUTPUT_DATA_PACKING', 'CAP_PROP_XI_OUTPUT_DATA_PACKING_TYPE', 'CAP_PROP_XI_RECENT_FRAME', 'CAP_PROP_XI_REGION_MODE', 'CAP_PROP_XI_REGION_SELECTOR', 'CAP_PROP_XI_ROW_FPN_CORRECTION', 'CAP_PROP_XI_SENSOR_BOARD_TEMP', 'CAP_PROP_XI_SENSOR_CLOCK_FREQ_HZ', 'CAP_PROP_XI_SENSOR_CLOCK_FREQ_INDEX', 'CAP_PROP_XI_SENSOR_DATA_BIT_DEPTH', 'CAP_PROP_XI_SENSOR_FEATURE_SELECTOR', 'CAP_PROP_XI_SENSOR_FEATURE_VALUE', 'CAP_PROP_XI_SENSOR_MODE', 'CAP_PROP_XI_SENSOR_OUTPUT_CHANNEL_COUNT', 'CAP_PROP_XI_SENSOR_TAPS', 'CAP_PROP_XI_SHARPNESS', 'CAP_PROP_XI_SHUTTER_TYPE', 'CAP_PROP_XI_TARGET_TEMP', 'CAP_PROP_XI_TEST_PATTERN', 'CAP_PROP_XI_TEST_PATTERN_GENERATOR_SELECTOR', 'CAP_PROP_XI_TIMEOUT', 'CAP_PROP_XI_TRANSPORT_PIXEL_FORMAT', 'CAP_PROP_XI_TRG_DELAY', 'CAP_PROP_XI_TRG_SELECTOR', 'CAP_PROP_XI_TRG_SOFTWARE', 'CAP_PROP_XI_TRG_SOURCE', 'CAP_PROP_XI_TS_RST_MODE', 'CAP_PROP_XI_TS_RST_SOURCE', 'CAP_PROP_XI_USED_FFS_SIZE', 'CAP_PROP_XI_WB_KB', 'CAP_PROP_XI_WB_KG', 'CAP_PROP_XI_WB_KR', 'CAP_PROP_XI_WIDTH', 'CAP_PROP_ZOOM', 'CAP_PVAPI', 'CAP_PVAPI_DECIMATION_2OUTOF16', 'CAP_PVAPI_DECIMATION_2OUTOF4', 'CAP_PVAPI_DECIMATION_2OUTOF8', 'CAP_PVAPI_DECIMATION_OFF', 'CAP_PVAPI_FSTRIGMODE_FIXEDRATE', 'CAP_PVAPI_FSTRIGMODE_FREERUN', 'CAP_PVAPI_FSTRIGMODE_SOFTWARE', 'CAP_PVAPI_FSTRIGMODE_SYNCIN1', 'CAP_PVAPI_FSTRIGMODE_SYNCIN2', 'CAP_PVAPI_PIXELFORMAT_BAYER16', 'CAP_PVAPI_PIXELFORMAT_BAYER8', 'CAP_PVAPI_PIXELFORMAT_BGR24', 'CAP_PVAPI_PIXELFORMAT_BGRA32', 'CAP_PVAPI_PIXELFORMAT_MONO16', 'CAP_PVAPI_PIXELFORMAT_MONO8', 'CAP_PVAPI_PIXELFORMAT_RGB24', 'CAP_PVAPI_PIXELFORMAT_RGBA32', 'CAP_QT', 'CAP_REALSENSE', 'CAP_UEYE', 'CAP_UNICAP', 'CAP_V4L', 'CAP_V4L2', 'CAP_VFW', 'CAP_WINRT', 'CAP_XIAPI', 'CAP_XINE', 'CASCADE_DO_CANNY_PRUNING', 'CASCADE_DO_ROUGH_SEARCH', 'CASCADE_FIND_BIGGEST_OBJECT', 'CASCADE_SCALE_IMAGE', 'CCL_DEFAULT', 'CCL_GRANA', 'CCL_WU', 'CC_STAT_AREA', 'CC_STAT_HEIGHT', 'CC_STAT_LEFT', 'CC_STAT_MAX', 'CC_STAT_TOP', 'CC_STAT_WIDTH', 'CHAIN_APPROX_NONE', 'CHAIN_APPROX_SIMPLE', 'CHAIN_APPROX_TC89_KCOS', 'CHAIN_APPROX_TC89_L1', 'CIRCLES_GRID_FINDER_PARAMETERS_ASYMMETRIC_GRID', 'CIRCLES_GRID_FINDER_PARAMETERS_SYMMETRIC_GRID', 'CLAHE', 'CMP_EQ', 'CMP_GE', 'CMP_GT', 'CMP_LE', 'CMP_LT', 'CMP_NE', 'COLORMAP_AUTUMN', 'COLORMAP_BONE', 'COLORMAP_CIVIDIS', 'COLORMAP_COOL', 'COLORMAP_DEEPGREEN', 'COLORMAP_HOT', 'COLORMAP_HSV', 'COLORMAP_INFERNO', 'COLORMAP_JET', 'COLORMAP_MAGMA', 'COLORMAP_OCEAN', 'COLORMAP_PARULA', 'COLORMAP_PINK', 'COLORMAP_PLASMA', 'COLORMAP_RAINBOW', 'COLORMAP_SPRING', 'COLORMAP_SUMMER', 'COLORMAP_TURBO', 'COLORMAP_TWILIGHT', 'COLORMAP_TWILIGHT_SHIFTED', 'COLORMAP_VIRIDIS', 'COLORMAP_WINTER', 'COLOR_BAYER_BG2BGR', 'COLOR_BAYER_BG2BGRA', 'COLOR_BAYER_BG2BGR_EA', 'COLOR_BAYER_BG2BGR_VNG', 'COLOR_BAYER_BG2GRAY', 'COLOR_BAYER_BG2RGB', 'COLOR_BAYER_BG2RGBA', 'COLOR_BAYER_BG2RGB_EA', 'COLOR_BAYER_BG2RGB_VNG', 'COLOR_BAYER_GB2BGR', 'COLOR_BAYER_GB2BGRA', 'COLOR_BAYER_GB2BGR_EA', 'COLOR_BAYER_GB2BGR_VNG', 'COLOR_BAYER_GB2GRAY', 'COLOR_BAYER_GB2RGB', 'COLOR_BAYER_GB2RGBA', 'COLOR_BAYER_GB2RGB_EA', 'COLOR_BAYER_GB2RGB_VNG', 'COLOR_BAYER_GR2BGR', 'COLOR_BAYER_GR2BGRA', 'COLOR_BAYER_GR2BGR_EA', 'COLOR_BAYER_GR2BGR_VNG', 'COLOR_BAYER_GR2GRAY', 'COLOR_BAYER_GR2RGB', 'COLOR_BAYER_GR2RGBA', 'COLOR_BAYER_GR2RGB_EA', 'COLOR_BAYER_GR2RGB_VNG', 'COLOR_BAYER_RG2BGR', 'COLOR_BAYER_RG2BGRA', 'COLOR_BAYER_RG2BGR_EA', 'COLOR_BAYER_RG2BGR_VNG', 'COLOR_BAYER_RG2GRAY', 'COLOR_BAYER_RG2RGB', 'COLOR_BAYER_RG2RGBA', 'COLOR_BAYER_RG2RGB_EA', 'COLOR_BAYER_RG2RGB_VNG', 'COLOR_BGR2BGR555', 'COLOR_BGR2BGR565', 'COLOR_BGR2BGRA', 'COLOR_BGR2GRAY', 'COLOR_BGR2HLS', 'COLOR_BGR2HLS_FULL', 'COLOR_BGR2HSV', 'COLOR_BGR2HSV_FULL', 'COLOR_BGR2LAB', 'COLOR_BGR2LUV', 'COLOR_BGR2Lab', 'COLOR_BGR2Luv', 'COLOR_BGR2RGB', 'COLOR_BGR2RGBA', 'COLOR_BGR2XYZ', 'COLOR_BGR2YCR_CB', 'COLOR_BGR2YCrCb', 'COLOR_BGR2YUV', 'COLOR_BGR2YUV_I420', 'COLOR_BGR2YUV_IYUV', 'COLOR_BGR2YUV_YV12', 'COLOR_BGR5552BGR', 'COLOR_BGR5552BGRA', 'COLOR_BGR5552GRAY', 'COLOR_BGR5552RGB', 'COLOR_BGR5552RGBA', 'COLOR_BGR5652BGR', 'COLOR_BGR5652BGRA', 'COLOR_BGR5652GRAY', 'COLOR_BGR5652RGB', 'COLOR_BGR5652RGBA', 'COLOR_BGRA2BGR', 'COLOR_BGRA2BGR555', 'COLOR_BGRA2BGR565', 'COLOR_BGRA2GRAY', 'COLOR_BGRA2RGB', 'COLOR_BGRA2RGBA', 'COLOR_BGRA2YUV_I420', 'COLOR_BGRA2YUV_IYUV', 'COLOR_BGRA2YUV_YV12', 'COLOR_BayerBG2BGR', 'COLOR_BayerBG2BGRA', 'COLOR_BayerBG2BGR_EA', 'COLOR_BayerBG2BGR_VNG', 'COLOR_BayerBG2GRAY', 'COLOR_BayerBG2RGB', 'COLOR_BayerBG2RGBA', 'COLOR_BayerBG2RGB_EA', 'COLOR_BayerBG2RGB_VNG', 'COLOR_BayerGB2BGR', 'COLOR_BayerGB2BGRA', 'COLOR_BayerGB2BGR_EA', 'COLOR_BayerGB2BGR_VNG', 'COLOR_BayerGB2GRAY', 'COLOR_BayerGB2RGB', 'COLOR_BayerGB2RGBA', 'COLOR_BayerGB2RGB_EA', 'COLOR_BayerGB2RGB_VNG', 'COLOR_BayerGR2BGR', 'COLOR_BayerGR2BGRA', 'COLOR_BayerGR2BGR_EA', 'COLOR_BayerGR2BGR_VNG', 'COLOR_BayerGR2GRAY', 'COLOR_BayerGR2RGB', 'COLOR_BayerGR2RGBA', 'COLOR_BayerGR2RGB_EA', 'COLOR_BayerGR2RGB_VNG', 'COLOR_BayerRG2BGR', 'COLOR_BayerRG2BGRA', 'COLOR_BayerRG2BGR_EA', 'COLOR_BayerRG2BGR_VNG', 'COLOR_BayerRG2GRAY', 'COLOR_BayerRG2RGB', 'COLOR_BayerRG2RGBA', 'COLOR_BayerRG2RGB_EA', 'COLOR_BayerRG2RGB_VNG', 'COLOR_COLORCVT_MAX', 'COLOR_GRAY2BGR', 'COLOR_GRAY2BGR555', 'COLOR_GRAY2BGR565', 'COLOR_GRAY2BGRA', 'COLOR_GRAY2RGB', 'COLOR_GRAY2RGBA', 'COLOR_HLS2BGR', 'COLOR_HLS2BGR_FULL', 'COLOR_HLS2RGB', 'COLOR_HLS2RGB_FULL', 'COLOR_HSV2BGR', 'COLOR_HSV2BGR_FULL', 'COLOR_HSV2RGB', 'COLOR_HSV2RGB_FULL', 'COLOR_LAB2BGR', 'COLOR_LAB2LBGR', 'COLOR_LAB2LRGB', 'COLOR_LAB2RGB', 'COLOR_LBGR2LAB', 'COLOR_LBGR2LUV', 'COLOR_LBGR2Lab', 'COLOR_LBGR2Luv', 'COLOR_LRGB2LAB', 'COLOR_LRGB2LUV', 'COLOR_LRGB2Lab', 'COLOR_LRGB2Luv', 'COLOR_LUV2BGR', 'COLOR_LUV2LBGR', 'COLOR_LUV2LRGB', 'COLOR_LUV2RGB', 'COLOR_Lab2BGR', 'COLOR_Lab2LBGR', 'COLOR_Lab2LRGB', 'COLOR_Lab2RGB', 'COLOR_Luv2BGR', 'COLOR_Luv2LBGR', 'COLOR_Luv2LRGB', 'COLOR_Luv2RGB', 'COLOR_M_RGBA2RGBA', 'COLOR_RGB2BGR', 'COLOR_RGB2BGR555', 'COLOR_RGB2BGR565', 'COLOR_RGB2BGRA', 'COLOR_RGB2GRAY', 'COLOR_RGB2HLS', 'COLOR_RGB2HLS_FULL', 'COLOR_RGB2HSV', 'COLOR_RGB2HSV_FULL', 'COLOR_RGB2LAB', 'COLOR_RGB2LUV', 'COLOR_RGB2Lab', 'COLOR_RGB2Luv', 'COLOR_RGB2RGBA', 'COLOR_RGB2XYZ', 'COLOR_RGB2YCR_CB', 'COLOR_RGB2YCrCb', 'COLOR_RGB2YUV', 'COLOR_RGB2YUV_I420', 'COLOR_RGB2YUV_IYUV', 'COLOR_RGB2YUV_YV12', 'COLOR_RGBA2BGR', 'COLOR_RGBA2BGR555', 'COLOR_RGBA2BGR565', 'COLOR_RGBA2BGRA', 'COLOR_RGBA2GRAY', 'COLOR_RGBA2M_RGBA', 'COLOR_RGBA2RGB', 'COLOR_RGBA2YUV_I420', 'COLOR_RGBA2YUV_IYUV', 'COLOR_RGBA2YUV_YV12', 'COLOR_RGBA2mRGBA', 'COLOR_XYZ2BGR', 'COLOR_XYZ2RGB', 'COLOR_YCR_CB2BGR', 'COLOR_YCR_CB2RGB', 'COLOR_YCrCb2BGR', 'COLOR_YCrCb2RGB', 'COLOR_YUV2BGR', 'COLOR_YUV2BGRA_I420', 'COLOR_YUV2BGRA_IYUV', 'COLOR_YUV2BGRA_NV12', 'COLOR_YUV2BGRA_NV21', 'COLOR_YUV2BGRA_UYNV', 'COLOR_YUV2BGRA_UYVY', 'COLOR_YUV2BGRA_Y422', 'COLOR_YUV2BGRA_YUNV', 'COLOR_YUV2BGRA_YUY2', 'COLOR_YUV2BGRA_YUYV', 'COLOR_YUV2BGRA_YV12', 'COLOR_YUV2BGRA_YVYU', 'COLOR_YUV2BGR_I420', 'COLOR_YUV2BGR_IYUV', 'COLOR_YUV2BGR_NV12', 'COLOR_YUV2BGR_NV21', 'COLOR_YUV2BGR_UYNV', 'COLOR_YUV2BGR_UYVY', 'COLOR_YUV2BGR_Y422', 'COLOR_YUV2BGR_YUNV', 'COLOR_YUV2BGR_YUY2', 'COLOR_YUV2BGR_YUYV', 'COLOR_YUV2BGR_YV12', 'COLOR_YUV2BGR_YVYU', 'COLOR_YUV2GRAY_420', 'COLOR_YUV2GRAY_I420', 'COLOR_YUV2GRAY_IYUV', 'COLOR_YUV2GRAY_NV12', 'COLOR_YUV2GRAY_NV21', 'COLOR_YUV2GRAY_UYNV', 'COLOR_YUV2GRAY_UYVY', 'COLOR_YUV2GRAY_Y422', 'COLOR_YUV2GRAY_YUNV', 'COLOR_YUV2GRAY_YUY2', 'COLOR_YUV2GRAY_YUYV', 'COLOR_YUV2GRAY_YV12', 'COLOR_YUV2GRAY_YVYU', 'COLOR_YUV2RGB', 'COLOR_YUV2RGBA_I420', 'COLOR_YUV2RGBA_IYUV', 'COLOR_YUV2RGBA_NV12', 'COLOR_YUV2RGBA_NV21', 'COLOR_YUV2RGBA_UYNV', 'COLOR_YUV2RGBA_UYVY', 'COLOR_YUV2RGBA_Y422', 'COLOR_YUV2RGBA_YUNV', 'COLOR_YUV2RGBA_YUY2', 'COLOR_YUV2RGBA_YUYV', 'COLOR_YUV2RGBA_YV12', 'COLOR_YUV2RGBA_YVYU', 'COLOR_YUV2RGB_I420', 'COLOR_YUV2RGB_IYUV', 'COLOR_YUV2RGB_NV12', 'COLOR_YUV2RGB_NV21', 'COLOR_YUV2RGB_UYNV', 'COLOR_YUV2RGB_UYVY', 'COLOR_YUV2RGB_Y422', 'COLOR_YUV2RGB_YUNV', 'COLOR_YUV2RGB_YUY2', 'COLOR_YUV2RGB_YUYV', 'COLOR_YUV2RGB_YV12', 'COLOR_YUV2RGB_YVYU', 'COLOR_YUV420P2BGR', 'COLOR_YUV420P2BGRA', 'COLOR_YUV420P2GRAY', 'COLOR_YUV420P2RGB', 'COLOR_YUV420P2RGBA', 'COLOR_YUV420SP2BGR', 'COLOR_YUV420SP2BGRA', 'COLOR_YUV420SP2GRAY', 'COLOR_YUV420SP2RGB', 'COLOR_YUV420SP2RGBA', 'COLOR_YUV420p2BGR', 'COLOR_YUV420p2BGRA', 'COLOR_YUV420p2GRAY', 'COLOR_YUV420p2RGB', 'COLOR_YUV420p2RGBA', 'COLOR_YUV420sp2BGR', 'COLOR_YUV420sp2BGRA', 'COLOR_YUV420sp2GRAY', 'COLOR_YUV420sp2RGB', 'COLOR_YUV420sp2RGBA', 'COLOR_mRGBA2RGBA', 'CONTOURS_MATCH_I1', 'CONTOURS_MATCH_I2', 'CONTOURS_MATCH_I3', 'COVAR_COLS', 'COVAR_NORMAL', 'COVAR_ROWS', 'COVAR_SCALE', 'COVAR_SCRAMBLED', 'COVAR_USE_AVG', 'CV_16S', 'CV_16SC1', 'CV_16SC2', 'CV_16SC3', 'CV_16SC4', 'CV_16U', 'CV_16UC1', 'CV_16UC2', 'CV_16UC3', 'CV_16UC4', 'CV_32F', 'CV_32FC1', 'CV_32FC2', 'CV_32FC3', 'CV_32FC4', 'CV_32S', 'CV_32SC1', 'CV_32SC2', 'CV_32SC3', 'CV_32SC4', 'CV_64F', 'CV_64FC1', 'CV_64FC2', 'CV_64FC3', 'CV_64FC4', 'CV_8S', 'CV_8SC1', 'CV_8SC2', 'CV_8SC3', 'CV_8SC4', 'CV_8U', 'CV_8UC1', 'CV_8UC2', 'CV_8UC3', 'CV_8UC4', 'CalibrateCRF', 'CalibrateDebevec', 'CalibrateRobertson', 'CamShift', 'Canny', 'CascadeClassifier', 'CascadeClassifier_convert', 'ChiHistogramCostExtractor', 'CirclesGridFinderParameters', 'CirclesGridFinderParameters_ASYMMETRIC_GRID', 'CirclesGridFinderParameters_SYMMETRIC_GRID', 'DCT_INVERSE', 'DCT_ROWS', 'DECOMP_CHOLESKY', 'DECOMP_EIG', 'DECOMP_LU', 'DECOMP_NORMAL', 'DECOMP_QR', 'DECOMP_SVD', 'DESCRIPTOR_MATCHER_BRUTEFORCE', 'DESCRIPTOR_MATCHER_BRUTEFORCE_HAMMING', 'DESCRIPTOR_MATCHER_BRUTEFORCE_HAMMINGLUT', 'DESCRIPTOR_MATCHER_BRUTEFORCE_L1', 'DESCRIPTOR_MATCHER_BRUTEFORCE_SL2', 'DESCRIPTOR_MATCHER_FLANNBASED', 'DFT_COMPLEX_INPUT', 'DFT_COMPLEX_OUTPUT', 'DFT_INVERSE', 'DFT_REAL_OUTPUT', 'DFT_ROWS', 'DFT_SCALE', 'DISOPTICAL_FLOW_PRESET_FAST', 'DISOPTICAL_FLOW_PRESET_MEDIUM', 'DISOPTICAL_FLOW_PRESET_ULTRAFAST', 'DISOpticalFlow', 'DISOpticalFlow_PRESET_FAST', 'DISOpticalFlow_PRESET_MEDIUM', 'DISOpticalFlow_PRESET_ULTRAFAST', 'DISOpticalFlow_create', 'DIST_C', 'DIST_FAIR', 'DIST_HUBER', 'DIST_L1', 'DIST_L12', 'DIST_L2', 'DIST_LABEL_CCOMP', 'DIST_LABEL_PIXEL', 'DIST_MASK_3', 'DIST_MASK_5', 'DIST_MASK_PRECISE', 'DIST_USER', 'DIST_WELSCH', 'DMatch', 'DRAW_MATCHES_FLAGS_DEFAULT', 'DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG', 'DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS', 'DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS', 'DenseOpticalFlow', 'DescriptorMatcher', 'DescriptorMatcher_BRUTEFORCE', 'DescriptorMatcher_BRUTEFORCE_HAMMING', 'DescriptorMatcher_BRUTEFORCE_HAMMINGLUT', 'DescriptorMatcher_BRUTEFORCE_L1', 'DescriptorMatcher_BRUTEFORCE_SL2', 'DescriptorMatcher_FLANNBASED', 'DescriptorMatcher_create', 'DrawMatchesFlags_DEFAULT', 'DrawMatchesFlags_DRAW_OVER_OUTIMG', 'DrawMatchesFlags_DRAW_RICH_KEYPOINTS', 'DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS', 'EMD', 'EMDHistogramCostExtractor', 'EMDL1HistogramCostExtractor', 'EVENT_FLAG_ALTKEY', 'EVENT_FLAG_CTRLKEY', 'EVENT_FLAG_LBUTTON', 'EVENT_FLAG_MBUTTON', 'EVENT_FLAG_RBUTTON', 'EVENT_FLAG_SHIFTKEY', 'EVENT_LBUTTONDBLCLK', 'EVENT_LBUTTONDOWN', 'EVENT_LBUTTONUP', 'EVENT_MBUTTONDBLCLK', 'EVENT_MBUTTONDOWN', 'EVENT_MBUTTONUP', 'EVENT_MOUSEHWHEEL', 'EVENT_MOUSEMOVE', 'EVENT_MOUSEWHEEL', 'EVENT_RBUTTONDBLCLK', 'EVENT_RBUTTONDOWN', 'EVENT_RBUTTONUP', 'Error', 'FAST_FEATURE_DETECTOR_FAST_N', 'FAST_FEATURE_DETECTOR_NONMAX_SUPPRESSION', 'FAST_FEATURE_DETECTOR_THRESHOLD', 'FAST_FEATURE_DETECTOR_TYPE_5_8', 'FAST_FEATURE_DETECTOR_TYPE_7_12', 'FAST_FEATURE_DETECTOR_TYPE_9_16', 'FILE_NODE_EMPTY', 'FILE_NODE_FLOAT', 'FILE_NODE_FLOW', 'FILE_NODE_INT', 'FILE_NODE_MAP', 'FILE_NODE_NAMED', 'FILE_NODE_NONE', 'FILE_NODE_REAL', 'FILE_NODE_SEQ', 'FILE_NODE_STR', 'FILE_NODE_STRING', 'FILE_NODE_TYPE_MASK', 'FILE_NODE_UNIFORM', 'FILE_STORAGE_APPEND', 'FILE_STORAGE_BASE64', 'FILE_STORAGE_FORMAT_AUTO', 'FILE_STORAGE_FORMAT_JSON', 'FILE_STORAGE_FORMAT_MASK', 'FILE_STORAGE_FORMAT_XML', 'FILE_STORAGE_FORMAT_YAML', 'FILE_STORAGE_INSIDE_MAP', 'FILE_STORAGE_MEMORY', 'FILE_STORAGE_NAME_EXPECTED', 'FILE_STORAGE_READ', 'FILE_STORAGE_UNDEFINED', 'FILE_STORAGE_VALUE_EXPECTED', 'FILE_STORAGE_WRITE', 'FILE_STORAGE_WRITE_BASE64', 'FILLED', 'FILTER_SCHARR', 'FLOODFILL_FIXED_RANGE', 'FLOODFILL_MASK_ONLY', 'FM_7POINT', 'FM_8POINT', 'FM_LMEDS', 'FM_RANSAC', 'FONT_HERSHEY_COMPLEX', 'FONT_HERSHEY_COMPLEX_SMALL', 'FONT_HERSHEY_DUPLEX', 'FONT_HERSHEY_PLAIN', 'FONT_HERSHEY_SCRIPT_COMPLEX', 'FONT_HERSHEY_SCRIPT_SIMPLEX', 'FONT_HERSHEY_SIMPLEX', 'FONT_HERSHEY_TRIPLEX', 'FONT_ITALIC', 'FORMATTER_FMT_C', 'FORMATTER_FMT_CSV', 'FORMATTER_FMT_DEFAULT', 'FORMATTER_FMT_MATLAB', 'FORMATTER_FMT_NUMPY', 'FORMATTER_FMT_PYTHON', 'FarnebackOpticalFlow', 'FarnebackOpticalFlow_create', 'FastFeatureDetector', 'FastFeatureDetector_FAST_N', 'FastFeatureDetector_NONMAX_SUPPRESSION', 'FastFeatureDetector_THRESHOLD', 'FastFeatureDetector_TYPE_5_8', 'FastFeatureDetector_TYPE_7_12', 'FastFeatureDetector_TYPE_9_16', 'FastFeatureDetector_create', 'Feature2D', 'FileNode', 'FileNode_EMPTY', 'FileNode_FLOAT', 'FileNode_FLOW', 'FileNode_INT', 'FileNode_MAP', 'FileNode_NAMED', 'FileNode_NONE', 'FileNode_REAL', 'FileNode_SEQ', 'FileNode_STR', 'FileNode_STRING', 'FileNode_TYPE_MASK', 'FileNode_UNIFORM', 'FileStorage', 'FileStorage_APPEND', 'FileStorage_BASE64', 'FileStorage_FORMAT_AUTO', 'FileStorage_FORMAT_JSON', 'FileStorage_FORMAT_MASK', 'FileStorage_FORMAT_XML', 'FileStorage_FORMAT_YAML', 'FileStorage_INSIDE_MAP', 'FileStorage_MEMORY', 'FileStorage_NAME_EXPECTED', 'FileStorage_READ', 'FileStorage_UNDEFINED', 'FileStorage_VALUE_EXPECTED', 'FileStorage_WRITE', 'FileStorage_WRITE_BASE64', 'FlannBasedMatcher', 'FlannBasedMatcher_create', 'Formatter_FMT_C', 'Formatter_FMT_CSV', 'Formatter_FMT_DEFAULT', 'Formatter_FMT_MATLAB', 'Formatter_FMT_NUMPY', 'Formatter_FMT_PYTHON', 'GC_BGD', 'GC_EVAL', 'GC_EVAL_FREEZE_MODEL', 'GC_FGD', 'GC_INIT_WITH_MASK', 'GC_INIT_WITH_RECT', 'GC_PR_BGD', 'GC_PR_FGD', 'GEMM_1_T', 'GEMM_2_T', 'GEMM_3_T', 'GFTTDetector', 'GFTTDetector_create', 'GaussianBlur', 'GeneralizedHough', 'GeneralizedHoughBallard', 'GeneralizedHoughGuil', 'HISTCMP_BHATTACHARYYA', 'HISTCMP_CHISQR', 'HISTCMP_CHISQR_ALT', 'HISTCMP_CORREL', 'HISTCMP_HELLINGER', 'HISTCMP_INTERSECT', 'HISTCMP_KL_DIV', 'HOGDESCRIPTOR_DEFAULT_NLEVELS', 'HOGDESCRIPTOR_DESCR_FORMAT_COL_BY_COL', 'HOGDESCRIPTOR_DESCR_FORMAT_ROW_BY_ROW', 'HOGDESCRIPTOR_L2HYS', 'HOGDescriptor', 'HOGDescriptor_DEFAULT_NLEVELS', 'HOGDescriptor_DESCR_FORMAT_COL_BY_COL', 'HOGDescriptor_DESCR_FORMAT_ROW_BY_ROW', 'HOGDescriptor_L2Hys', 'HOGDescriptor_getDaimlerPeopleDetector', 'HOGDescriptor_getDefaultPeopleDetector', 'HOUGH_GRADIENT', 'HOUGH_GRADIENT_ALT', 'HOUGH_MULTI_SCALE', 'HOUGH_PROBABILISTIC', 'HOUGH_STANDARD', 'HausdorffDistanceExtractor', 'HistogramCostExtractor', 'HoughCircles', 'HoughLines', 'HoughLinesP', 'HoughLinesPointSet', 'HuMoments', 'IMREAD_ANYCOLOR', 'IMREAD_ANYDEPTH', 'IMREAD_COLOR', 'IMREAD_GRAYSCALE', 'IMREAD_IGNORE_ORIENTATION', 'IMREAD_LOAD_GDAL', 'IMREAD_REDUCED_COLOR_2', 'IMREAD_REDUCED_COLOR_4', 'IMREAD_REDUCED_COLOR_8', 'IMREAD_REDUCED_GRAYSCALE_2', 'IMREAD_REDUCED_GRAYSCALE_4', 'IMREAD_REDUCED_GRAYSCALE_8', 'IMREAD_UNCHANGED', 'IMWRITE_EXR_TYPE', 'IMWRITE_EXR_TYPE_FLOAT', 'IMWRITE_EXR_TYPE_HALF', 'IMWRITE_JPEG2000_COMPRESSION_X1000', 'IMWRITE_JPEG_CHROMA_QUALITY', 'IMWRITE_JPEG_LUMA_QUALITY', 'IMWRITE_JPEG_OPTIMIZE', 'IMWRITE_JPEG_PROGRESSIVE', 'IMWRITE_JPEG_QUALITY', 'IMWRITE_JPEG_RST_INTERVAL', 'IMWRITE_PAM_FORMAT_BLACKANDWHITE', 'IMWRITE_PAM_FORMAT_GRAYSCALE', 'IMWRITE_PAM_FORMAT_GRAYSCALE_ALPHA', 'IMWRITE_PAM_FORMAT_NULL', 'IMWRITE_PAM_FORMAT_RGB', 'IMWRITE_PAM_FORMAT_RGB_ALPHA', 'IMWRITE_PAM_TUPLETYPE', 'IMWRITE_PNG_BILEVEL', 'IMWRITE_PNG_COMPRESSION', 'IMWRITE_PNG_STRATEGY', 'IMWRITE_PNG_STRATEGY_DEFAULT', 'IMWRITE_PNG_STRATEGY_FILTERED', 'IMWRITE_PNG_STRATEGY_FIXED', 'IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY', 'IMWRITE_PNG_STRATEGY_RLE', 'IMWRITE_PXM_BINARY', 'IMWRITE_TIFF_COMPRESSION', 'IMWRITE_TIFF_RESUNIT', 'IMWRITE_TIFF_XDPI', 'IMWRITE_TIFF_YDPI', 'IMWRITE_WEBP_QUALITY', 'INPAINT_NS', 'INPAINT_TELEA', 'INTERSECT_FULL', 'INTERSECT_NONE', 'INTERSECT_PARTIAL', 'INTER_AREA', 'INTER_BITS', 'INTER_BITS2', 'INTER_CUBIC', 'INTER_LANCZOS4', 'INTER_LINEAR', 'INTER_LINEAR_EXACT', 'INTER_MAX', 'INTER_NEAREST', 'INTER_NEAREST_EXACT', 'INTER_TAB_SIZE', 'INTER_TAB_SIZE2', 'KAZE', 'KAZE_DIFF_CHARBONNIER', 'KAZE_DIFF_PM_G1', 'KAZE_DIFF_PM_G2', 'KAZE_DIFF_WEICKERT', 'KAZE_create', 'KMEANS_PP_CENTERS', 'KMEANS_RANDOM_CENTERS', 'KMEANS_USE_INITIAL_LABELS', 'KalmanFilter', 'KeyPoint', 'KeyPoint_convert', 'KeyPoint_overlap', 'LDR_SIZE', 'LINE_4', 'LINE_8', 'LINE_AA', 'LMEDS', 'LOCAL_OPTIM_GC', 'LOCAL_OPTIM_INNER_AND_ITER_LO', 'LOCAL_OPTIM_INNER_LO', 'LOCAL_OPTIM_NULL', 'LOCAL_OPTIM_SIGMA', 'LSD_REFINE_ADV', 'LSD_REFINE_NONE', 'LSD_REFINE_STD', 'LUT', 'Laplacian', 'LineSegmentDetector', 'MARKER_CROSS', 'MARKER_DIAMOND', 'MARKER_SQUARE', 'MARKER_STAR', 'MARKER_TILTED_CROSS', 'MARKER_TRIANGLE_DOWN', 'MARKER_TRIANGLE_UP', 'MAT_AUTO_STEP', 'MAT_CONTINUOUS_FLAG', 'MAT_DEPTH_MASK', 'MAT_MAGIC_MASK', 'MAT_MAGIC_VAL', 'MAT_SUBMATRIX_FLAG', 'MAT_TYPE_MASK', 'MIXED_CLONE', 'MONOCHROME_TRANSFER', 'MORPH_BLACKHAT', 'MORPH_CLOSE', 'MORPH_CROSS', 'MORPH_DILATE', 'MORPH_ELLIPSE', 'MORPH_ERODE', 'MORPH_GRADIENT', 'MORPH_HITMISS', 'MORPH_OPEN', 'MORPH_RECT', 'MORPH_TOPHAT', 'MOTION_AFFINE', 'MOTION_EUCLIDEAN', 'MOTION_HOMOGRAPHY', 'MOTION_TRANSLATION', 'MSER', 'MSER_create', 'Mahalanobis', 'Mat_AUTO_STEP', 'Mat_CONTINUOUS_FLAG', 'Mat_DEPTH_MASK', 'Mat_MAGIC_MASK', 'Mat_MAGIC_VAL', 'Mat_SUBMATRIX_FLAG', 'Mat_TYPE_MASK', 'MergeDebevec', 'MergeExposures', 'MergeMertens', 'MergeRobertson', 'NEIGH_FLANN_KNN', 'NEIGH_FLANN_RADIUS', 'NEIGH_GRID', 'NORMAL_CLONE', 'NORMCONV_FILTER', 'NORM_HAMMING', 'NORM_HAMMING2', 'NORM_INF', 'NORM_L1', 'NORM_L2', 'NORM_L2SQR', 'NORM_MINMAX', 'NORM_RELATIVE', 'NORM_TYPE_MASK', 'NormHistogramCostExtractor', 'OPTFLOW_FARNEBACK_GAUSSIAN', 'OPTFLOW_LK_GET_MIN_EIGENVALS', 'OPTFLOW_USE_INITIAL_FLOW', 'ORB', 'ORB_FAST_SCORE', 'ORB_HARRIS_SCORE', 'ORB_create', 'PARAM_ALGORITHM', 'PARAM_BOOLEAN', 'PARAM_FLOAT', 'PARAM_INT', 'PARAM_MAT', 'PARAM_MAT_VECTOR', 'PARAM_REAL', 'PARAM_SCALAR', 'PARAM_STRING', 'PARAM_UCHAR', 'PARAM_UINT64', 'PARAM_UNSIGNED_INT', 'PCABackProject', 'PCACompute', 'PCACompute2', 'PCAProject', 'PCA_DATA_AS_COL', 'PCA_DATA_AS_ROW', 'PCA_USE_AVG', 'PROJ_SPHERICAL_EQRECT', 'PROJ_SPHERICAL_ORTHO', 'PSNR', 'Param_ALGORITHM', 'Param_BOOLEAN', 'Param_FLOAT', 'Param_INT', 'Param_MAT', 'Param_MAT_VECTOR', 'Param_REAL', 'Param_SCALAR', 'Param_STRING', 'Param_UCHAR', 'Param_UINT64', 'Param_UNSIGNED_INT', 'PyRotationWarper', 'QRCodeDetector', 'QT_CHECKBOX', 'QT_FONT_BLACK', 'QT_FONT_BOLD', 'QT_FONT_DEMIBOLD', 'QT_FONT_LIGHT', 'QT_FONT_NORMAL', 'QT_NEW_BUTTONBAR', 'QT_PUSH_BUTTON', 'QT_RADIOBOX', 'QT_STYLE_ITALIC', 'QT_STYLE_NORMAL', 'QT_STYLE_OBLIQUE', 'QUAT_ASSUME_NOT_UNIT', 'QUAT_ASSUME_UNIT', 'RANSAC', 'RECURS_FILTER', 'REDUCE_AVG', 'REDUCE_MAX', 'REDUCE_MIN', 'REDUCE_SUM', 'RETR_CCOMP', 'RETR_EXTERNAL', 'RETR_FLOODFILL', 'RETR_LIST', 'RETR_TREE', 'RHO', 'RNG_NORMAL', 'RNG_UNIFORM', 'ROTATE_180', 'ROTATE_90_CLOCKWISE', 'ROTATE_90_COUNTERCLOCKWISE', 'RQDecomp3x3', 'Rodrigues', 'SAMPLING_NAPSAC', 'SAMPLING_PROGRESSIVE_NAPSAC', 'SAMPLING_PROSAC', 'SAMPLING_UNIFORM', 'SCORE_METHOD_LMEDS', 'SCORE_METHOD_MAGSAC', 'SCORE_METHOD_MSAC', 'SCORE_METHOD_RANSAC', 'SIFT', 'SIFT_create', 'SOLVELP_MULTI', 'SOLVELP_SINGLE', 'SOLVELP_UNBOUNDED', 'SOLVELP_UNFEASIBLE', 'SOLVEPNP_AP3P', 'SOLVEPNP_DLS', 'SOLVEPNP_EPNP', 'SOLVEPNP_IPPE', 'SOLVEPNP_IPPE_SQUARE', 'SOLVEPNP_ITERATIVE', 'SOLVEPNP_MAX_COUNT', 'SOLVEPNP_P3P', 'SOLVEPNP_SQPNP', 'SOLVEPNP_UPNP', 'SORT_ASCENDING', 'SORT_DESCENDING', 'SORT_EVERY_COLUMN', 'SORT_EVERY_ROW', 'SPARSE_MAT_HASH_BIT', 'SPARSE_MAT_HASH_SCALE', 'SPARSE_MAT_MAGIC_VAL', 'SPARSE_MAT_MAX_DIM', 'STEREO_BM_PREFILTER_NORMALIZED_RESPONSE', 'STEREO_BM_PREFILTER_XSOBEL', 'STEREO_MATCHER_DISP_SCALE', 'STEREO_MATCHER_DISP_SHIFT', 'STEREO_SGBM_MODE_HH', 'STEREO_SGBM_MODE_HH4', 'STEREO_SGBM_MODE_SGBM', 'STEREO_SGBM_MODE_SGBM_3WAY', 'STITCHER_ERR_CAMERA_PARAMS_ADJUST_FAIL', 'STITCHER_ERR_HOMOGRAPHY_EST_FAIL', 'STITCHER_ERR_NEED_MORE_IMGS', 'STITCHER_OK', 'STITCHER_PANORAMA', 'STITCHER_SCANS', 'SUBDIV2D_NEXT_AROUND_DST', 'SUBDIV2D_NEXT_AROUND_LEFT', 'SUBDIV2D_NEXT_AROUND_ORG', 'SUBDIV2D_NEXT_AROUND_RIGHT', 'SUBDIV2D_PREV_AROUND_DST', 'SUBDIV2D_PREV_AROUND_LEFT', 'SUBDIV2D_PREV_AROUND_ORG', 'SUBDIV2D_PREV_AROUND_RIGHT', 'SUBDIV2D_PTLOC_ERROR', 'SUBDIV2D_PTLOC_INSIDE', 'SUBDIV2D_PTLOC_ON_EDGE', 'SUBDIV2D_PTLOC_OUTSIDE_RECT', 'SUBDIV2D_PTLOC_VERTEX', 'SVBackSubst', 'SVD_FULL_UV', 'SVD_MODIFY_A', 'SVD_NO_UV', 'SVDecomp', 'Scharr', 'ShapeContextDistanceExtractor', 'ShapeDistanceExtractor', 'ShapeTransformer', 'SimpleBlobDetector', 'SimpleBlobDetector_Params', 'SimpleBlobDetector_create', 'Sobel', 'SparseMat_HASH_BIT', 'SparseMat_HASH_SCALE', 'SparseMat_MAGIC_VAL', 'SparseMat_MAX_DIM', 'SparseOpticalFlow', 'SparsePyrLKOpticalFlow', 'SparsePyrLKOpticalFlow_create', 'StereoBM', 'StereoBM_PREFILTER_NORMALIZED_RESPONSE', 'StereoBM_PREFILTER_XSOBEL', 'StereoBM_create', 'StereoMatcher', 'StereoMatcher_DISP_SCALE', 'StereoMatcher_DISP_SHIFT', 'StereoSGBM', 'StereoSGBM_MODE_HH', 'StereoSGBM_MODE_HH4', 'StereoSGBM_MODE_SGBM', 'StereoSGBM_MODE_SGBM_3WAY', 'StereoSGBM_create', 'Stitcher', 'Stitcher_ERR_CAMERA_PARAMS_ADJUST_FAIL', 'Stitcher_ERR_HOMOGRAPHY_EST_FAIL', 'Stitcher_ERR_NEED_MORE_IMGS', 'Stitcher_OK', 'Stitcher_PANORAMA', 'Stitcher_SCANS', 'Stitcher_create', 'Subdiv2D', 'Subdiv2D_NEXT_AROUND_DST', 'Subdiv2D_NEXT_AROUND_LEFT', 'Subdiv2D_NEXT_AROUND_ORG', 'Subdiv2D_NEXT_AROUND_RIGHT', 'Subdiv2D_PREV_AROUND_DST', 'Subdiv2D_PREV_AROUND_LEFT', 'Subdiv2D_PREV_AROUND_ORG', 'Subdiv2D_PREV_AROUND_RIGHT', 'Subdiv2D_PTLOC_ERROR', 'Subdiv2D_PTLOC_INSIDE', 'Subdiv2D_PTLOC_ON_EDGE', 'Subdiv2D_PTLOC_OUTSIDE_RECT', 'Subdiv2D_PTLOC_VERTEX', 'TERM_CRITERIA_COUNT', 'TERM_CRITERIA_EPS', 'TERM_CRITERIA_MAX_ITER', 'THRESH_BINARY', 'THRESH_BINARY_INV', 'THRESH_MASK', 'THRESH_OTSU', 'THRESH_TOZERO', 'THRESH_TOZERO_INV', 'THRESH_TRIANGLE', 'THRESH_TRUNC', 'TM_CCOEFF', 'TM_CCOEFF_NORMED', 'TM_CCORR', 'TM_CCORR_NORMED', 'TM_SQDIFF', 'TM_SQDIFF_NORMED', 'TRACKER_KCF_CN', 'TRACKER_KCF_CUSTOM', 'TRACKER_KCF_GRAY', 'TermCriteria_COUNT', 'TermCriteria_EPS', 'TermCriteria_MAX_ITER', 'ThinPlateSplineShapeTransformer', 'TickMeter', 'Tonemap', 'TonemapDrago', 'TonemapMantiuk', 'TonemapReinhard', 'Tracker', 'TrackerCSRT', 'TrackerCSRT_Params', 'TrackerCSRT_create', 'TrackerGOTURN', 'TrackerGOTURN_Params', 'TrackerGOTURN_create', 'TrackerKCF', 'TrackerKCF_CN', 'TrackerKCF_CUSTOM', 'TrackerKCF_GRAY', 'TrackerKCF_Params', 'TrackerKCF_create', 'TrackerMIL', 'TrackerMIL_Params', 'TrackerMIL_create', 'UMAT_AUTO_STEP', 'UMAT_CONTINUOUS_FLAG', 'UMAT_DATA_ASYNC_CLEANUP', 'UMAT_DATA_COPY_ON_MAP', 'UMAT_DATA_DEVICE_COPY_OBSOLETE', 'UMAT_DATA_DEVICE_MEM_MAPPED', 'UMAT_DATA_HOST_COPY_OBSOLETE', 'UMAT_DATA_TEMP_COPIED_UMAT', 'UMAT_DATA_TEMP_UMAT', 'UMAT_DATA_USER_ALLOCATED', 'UMAT_DEPTH_MASK', 'UMAT_MAGIC_MASK', 'UMAT_MAGIC_VAL', 'UMAT_SUBMATRIX_FLAG', 'UMAT_TYPE_MASK', 'UMat', 'UMatData_ASYNC_CLEANUP', 'UMatData_COPY_ON_MAP', 'UMatData_DEVICE_COPY_OBSOLETE', 'UMatData_DEVICE_MEM_MAPPED', 'UMatData_HOST_COPY_OBSOLETE', 'UMatData_TEMP_COPIED_UMAT', 'UMatData_TEMP_UMAT', 'UMatData_USER_ALLOCATED', 'UMat_AUTO_STEP', 'UMat_CONTINUOUS_FLAG', 'UMat_DEPTH_MASK', 'UMat_MAGIC_MASK', 'UMat_MAGIC_VAL', 'UMat_SUBMATRIX_FLAG', 'UMat_TYPE_MASK', 'UMat_context', 'UMat_queue', 'USAC_ACCURATE', 'USAC_DEFAULT', 'USAC_FAST', 'USAC_FM_8PTS', 'USAC_MAGSAC', 'USAC_PARALLEL', 'USAC_PROSAC', 'USAGE_ALLOCATE_DEVICE_MEMORY', 'USAGE_ALLOCATE_HOST_MEMORY', 'USAGE_ALLOCATE_SHARED_MEMORY', 'USAGE_DEFAULT', 'UsacParams', 'VIDEOWRITER_PROP_DEPTH', 'VIDEOWRITER_PROP_FRAMEBYTES', 'VIDEOWRITER_PROP_IS_COLOR', 'VIDEOWRITER_PROP_NSTRIPES', 'VIDEOWRITER_PROP_QUALITY', 'VariationalRefinement', 'VariationalRefinement_create', 'VideoCapture', 'VideoWriter', 'VideoWriter_fourcc', 'WARP_FILL_OUTLIERS', 'WARP_INVERSE_MAP', 'WARP_POLAR_LINEAR', 'WARP_POLAR_LOG', 'WINDOW_AUTOSIZE', 'WINDOW_FREERATIO', 'WINDOW_FULLSCREEN', 'WINDOW_GUI_EXPANDED', 'WINDOW_GUI_NORMAL', 'WINDOW_KEEPRATIO', 'WINDOW_NORMAL', 'WINDOW_OPENGL', 'WND_PROP_ASPECT_RATIO', 'WND_PROP_AUTOSIZE', 'WND_PROP_FULLSCREEN', 'WND_PROP_OPENGL', 'WND_PROP_TOPMOST', 'WND_PROP_VISIBLE', 'WarperCreator', '_INPUT_ARRAY_CUDA_GPU_MAT', '_INPUT_ARRAY_CUDA_HOST_MEM', '_INPUT_ARRAY_EXPR', '_INPUT_ARRAY_FIXED_SIZE', '_INPUT_ARRAY_FIXED_TYPE', '_INPUT_ARRAY_KIND_MASK', '_INPUT_ARRAY_KIND_SHIFT', '_INPUT_ARRAY_MAT', '_INPUT_ARRAY_MATX', '_INPUT_ARRAY_NONE', '_INPUT_ARRAY_OPENGL_BUFFER', '_INPUT_ARRAY_STD_ARRAY', '_INPUT_ARRAY_STD_ARRAY_MAT', '_INPUT_ARRAY_STD_BOOL_VECTOR', '_INPUT_ARRAY_STD_VECTOR', '_INPUT_ARRAY_STD_VECTOR_CUDA_GPU_MAT', '_INPUT_ARRAY_STD_VECTOR_MAT', '_INPUT_ARRAY_STD_VECTOR_UMAT', '_INPUT_ARRAY_STD_VECTOR_VECTOR', '_INPUT_ARRAY_UMAT', '_InputArray_CUDA_GPU_MAT', '_InputArray_CUDA_HOST_MEM', '_InputArray_EXPR', '_InputArray_FIXED_SIZE', '_InputArray_FIXED_TYPE', '_InputArray_KIND_MASK', '_InputArray_KIND_SHIFT', '_InputArray_MAT', '_InputArray_MATX', '_InputArray_NONE', '_InputArray_OPENGL_BUFFER', '_InputArray_STD_ARRAY', '_InputArray_STD_ARRAY_MAT', '_InputArray_STD_BOOL_VECTOR', '_InputArray_STD_VECTOR', '_InputArray_STD_VECTOR_CUDA_GPU_MAT', '_InputArray_STD_VECTOR_MAT', '_InputArray_STD_VECTOR_UMAT', '_InputArray_STD_VECTOR_VECTOR', '_InputArray_UMAT', '_OUTPUT_ARRAY_DEPTH_MASK_16F', '_OUTPUT_ARRAY_DEPTH_MASK_16S', '_OUTPUT_ARRAY_DEPTH_MASK_16U', '_OUTPUT_ARRAY_DEPTH_MASK_32F', '_OUTPUT_ARRAY_DEPTH_MASK_32S', '_OUTPUT_ARRAY_DEPTH_MASK_64F', '_OUTPUT_ARRAY_DEPTH_MASK_8S', '_OUTPUT_ARRAY_DEPTH_MASK_8U', '_OUTPUT_ARRAY_DEPTH_MASK_ALL', '_OUTPUT_ARRAY_DEPTH_MASK_ALL_16F', '_OUTPUT_ARRAY_DEPTH_MASK_ALL_BUT_8S', '_OUTPUT_ARRAY_DEPTH_MASK_FLT', '_OutputArray_DEPTH_MASK_16F', '_OutputArray_DEPTH_MASK_16S', '_OutputArray_DEPTH_MASK_16U', '_OutputArray_DEPTH_MASK_32F', '_OutputArray_DEPTH_MASK_32S', '_OutputArray_DEPTH_MASK_64F', '_OutputArray_DEPTH_MASK_8S', '_OutputArray_DEPTH_MASK_8U', '_OutputArray_DEPTH_MASK_ALL', '_OutputArray_DEPTH_MASK_ALL_16F', '_OutputArray_DEPTH_MASK_ALL_BUT_8S', '_OutputArray_DEPTH_MASK_FLT', '__UMAT_USAGE_FLAGS_32BIT', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '__version__', 'absdiff', 'accumulate', 'accumulateProduct', 'accumulateSquare', 'accumulateWeighted', 'adaptiveThreshold', 'add', 'addText', 'addWeighted', 'alphamat', 'applyColorMap', 'approxPolyDP', 'arcLength', 'arrowedLine', 'aruco', 'aruco_Board', 'aruco_CharucoBoard', 'aruco_DetectorParameters', 'aruco_Dictionary', 'aruco_GridBoard', 'batchDistance', 'bgsegm', 'bgsegm_BackgroundSubtractorCNT', 'bgsegm_BackgroundSubtractorGMG', 'bgsegm_BackgroundSubtractorGSOC', 'bgsegm_BackgroundSubtractorLSBP', 'bgsegm_BackgroundSubtractorLSBPDesc', 'bgsegm_BackgroundSubtractorMOG', 'bgsegm_SyntheticSequenceGenerator', 'bilateralFilter', 'bioinspired', 'bioinspired_Retina', 'bioinspired_RetinaFastToneMapping', 'bioinspired_TransientAreasSegmentationModule', 'bitwise_and', 'bitwise_not', 'bitwise_or', 'bitwise_xor', 'blur', 'borderInterpolate', 'boundingRect', 'boxFilter', 'boxPoints', 'buildOpticalFlowPyramid', 'calcBackProject', 'calcCovarMatrix', 'calcHist', 'calcOpticalFlowFarneback', 'calcOpticalFlowPyrLK', 'calibrateCamera', 'calibrateCameraExtended', 'calibrateCameraRO', 'calibrateCameraROExtended', 'calibrateHandEye', 'calibrateRobotWorldHandEye', 'calibrationMatrixValues', 'cartToPolar', 'ccm', 'ccm_ColorCorrectionModel', 'checkChessboard', 'checkHardwareSupport', 'checkRange', 'circle', 'clipLine', 'colorChange', 'compare', 'compareHist', 'completeSymm', 'composeRT', 'computeCorrespondEpilines', 'computeECC', 'connectedComponents', 'connectedComponentsWithAlgorithm', 'connectedComponentsWithStats', 'connectedComponentsWithStatsWithAlgorithm', 'contourArea', 'convertFp16', 'convertMaps', 'convertPointsFromHomogeneous', 'convertPointsToHomogeneous', 'convertScaleAbs', 'convexHull', 'convexityDefects', 'copyMakeBorder', 'copyTo', 'cornerEigenValsAndVecs', 'cornerHarris', 'cornerMinEigenVal', 'cornerSubPix', 'correctMatches', 'countNonZero', 'createAffineTransformer', 'createAlignMTB', 'createBackgroundSubtractorKNN', 'createBackgroundSubtractorMOG2', 'createButton', 'createCLAHE', 'createCalibrateDebevec', 'createCalibrateRobertson', 'createChiHistogramCostExtractor', 'createEMDHistogramCostExtractor', 'createEMDL1HistogramCostExtractor', 'createGeneralizedHoughBallard', 'createGeneralizedHoughGuil', 'createHanningWindow', 'createHausdorffDistanceExtractor', 'createLineSegmentDetector', 'createMergeDebevec', 'createMergeMertens', 'createMergeRobertson', 'createNormHistogramCostExtractor', 'createShapeContextDistanceExtractor', 'createThinPlateSplineShapeTransformer', 'createTonemap', 'createTonemapDrago', 'createTonemapMantiuk', 'createTonemapReinhard', 'createTrackbar', 'cubeRoot', 'cuda', 'cuda_BufferPool', 'cuda_DeviceInfo', 'cuda_Event', 'cuda_GpuMat', 'cuda_GpuMat_Allocator', 'cuda_HostMem', 'cuda_Stream', 'cuda_TargetArchs', 'cvtColor', 'cvtColorTwoPlane', 'datasets', 'dct', 'decolor', 'decomposeEssentialMat', 'decomposeHomographyMat', 'decomposeProjectionMatrix', 'demosaicing', 'denoise_TVL1', 'destroyAllWindows', 'destroyWindow', 'detail', 'detailEnhance', 'detail_AffineBasedEstimator', 'detail_AffineBestOf2NearestMatcher', 'detail_BestOf2NearestMatcher', 'detail_BestOf2NearestRangeMatcher', 'detail_Blender', 'detail_BlocksChannelsCompensator', 'detail_BlocksCompensator', 'detail_BlocksGainCompensator', 'detail_BundleAdjusterAffine', 'detail_BundleAdjusterAffinePartial', 'detail_BundleAdjusterBase', 'detail_BundleAdjusterRay', 'detail_BundleAdjusterReproj', 'detail_CameraParams', 'detail_ChannelsCompensator', 'detail_DpSeamFinder', 'detail_Estimator', 'detail_ExposureCompensator', 'detail_FeatherBlender', 'detail_FeaturesMatcher', 'detail_GainCompensator', 'detail_GraphCutSeamFinder', 'detail_HomographyBasedEstimator', 'detail_ImageFeatures', 'detail_MatchesInfo', 'detail_MultiBandBlender', 'detail_NoBundleAdjuster', 'detail_NoExposureCompensator', 'detail_NoSeamFinder', 'detail_PairwiseSeamFinder', 'detail_ProjectorBase', 'detail_SeamFinder', 'detail_SphericalProjector', 'detail_Timelapser', 'detail_TimelapserCrop', 'detail_VoronoiSeamFinder', 'determinant', 'dft', 'dilate', 'displayOverlay', 'displayStatusBar', 'distanceTransform', 'distanceTransformWithLabels', 'divide', 'dnn', 'dnn_ClassificationModel', 'dnn_DetectionModel', 'dnn_DictValue', 'dnn_KeypointsModel', 'dnn_Layer', 'dnn_Model', 'dnn_Net', 'dnn_SegmentationModel', 'dnn_TextDetectionModel', 'dnn_TextDetectionModel_DB', 'dnn_TextDetectionModel_EAST', 'dnn_TextRecognitionModel', 'dnn_registerLayer', 'dnn_superres', 'dnn_superres_DnnSuperResImpl', 'dnn_unregisterLayer', 'dpm_DPMDetector', 'dpm_DPMDetector_ObjectDetection', 'drawChessboardCorners', 'drawContours', 'drawFrameAxes', 'drawKeypoints', 'drawMarker', 'drawMatches', 'drawMatchesKnn', 'dynafu', 'dynafu_DynaFu', 'edgePreservingFilter', 'eigen', 'eigenNonSymmetric', 'ellipse', 'ellipse2Poly', 'equalizeHist', 'erode', 'error', 'estimateAffine2D', 'estimateAffine3D', 'estimateAffinePartial2D', 'estimateChessboardSharpness', 'estimateTranslation3D', 'exp', 'extractChannel', 'face', 'face_BIF', 'face_BasicFaceRecognizer', 'face_EigenFaceRecognizer', 'face_FaceRecognizer', 'face_Facemark', 'face_FacemarkAAM', 'face_FacemarkKazemi', 'face_FacemarkLBF', 'face_FacemarkTrain', 'face_FisherFaceRecognizer', 'face_LBPHFaceRecognizer', 'face_MACE', 'face_PredictCollector', 'face_StandardCollector', 'fastAtan2', 'fastNlMeansDenoising', 'fastNlMeansDenoisingColored', 'fastNlMeansDenoisingColoredMulti', 'fastNlMeansDenoisingMulti', 'fillConvexPoly', 'fillPoly', 'filter2D', 'filterHomographyDecompByVisibleRefpoints', 'filterSpeckles', 'find4QuadCornerSubpix', 'findChessboardCorners', 'findChessboardCornersSB', 'findChessboardCornersSBWithMeta', 'findCirclesGrid', 'findContours', 'findEssentialMat', 'findFundamentalMat', 'findHomography', 'findNonZero', 'findTransformECC', 'fisheye', 'fitEllipse', 'fitEllipseAMS', 'fitEllipseDirect', 'fitLine', 'flann', 'flann_Index', 'flip', 'floodFill', 'freetype', 'freetype_FreeType2', 'ft', 'gemm', 'getAffineTransform', 'getBuildInformation', 'getCPUFeaturesLine', 'getCPUTickCount', 'getDefaultNewCameraMatrix', 'getDerivKernels', 'getFontScaleFromHeight', 'getGaborKernel', 'getGaussianKernel', 'getHardwareFeatureName', 'getNumThreads', 'getNumberOfCPUs', 'getOptimalDFTSize', 'getOptimalNewCameraMatrix', 'getPerspectiveTransform', 'getRectSubPix', 'getRotationMatrix2D', 'getStructuringElement', 'getTextSize', 'getThreadNum', 'getTickCount', 'getTickFrequency', 'getTrackbarPos', 'getValidDisparityROI', 'getVersionMajor', 'getVersionMinor', 'getVersionRevision', 'getVersionString', 'getWindowImageRect', 'getWindowProperty', 'goodFeaturesToTrack', 'grabCut', 'groupRectangles', 'haveImageReader', 'haveImageWriter', 'haveOpenVX', 'hconcat', 'hdf', 'hdf_HDF5', 'hfs', 'hfs_HfsSegment', 'idct', 'idft', 'illuminationChange', 'imdecode', 'imencode', 'img_hash', 'img_hash_AverageHash', 'img_hash_BlockMeanHash', 'img_hash_ColorMomentHash', 'img_hash_ImgHashBase', 'img_hash_MarrHildrethHash', 'img_hash_PHash', 'img_hash_RadialVarianceHash', 'imread', 'imreadmulti', 'imshow', 'imwrite', 'imwritemulti', 'inRange', 'initCameraMatrix2D', 'initUndistortRectifyMap', 'inpaint', 'insertChannel', 'integral', 'integral2', 'integral3', 'intensity_transform', 'intersectConvexConvex', 'invert', 'invertAffineTransform', 'ipp', 'isContourConvex', 'kinfu', 'kinfu_KinFu', 'kinfu_Params', 'kinfu_Volume', 'kinfu_VolumeParams', 'kmeans', 'large_kinfu', 'large_kinfu_LargeKinfu', 'large_kinfu_Params', 'legacy', 'legacy_MultiTracker', 'legacy_Tracker', 'legacy_TrackerBoosting', 'legacy_TrackerCSRT', 'legacy_TrackerKCF', 'legacy_TrackerMIL', 'legacy_TrackerMOSSE', 'legacy_TrackerMedianFlow', 'legacy_TrackerTLD', 'line', 'line_descriptor', 'line_descriptor_BinaryDescriptor', 'line_descriptor_BinaryDescriptorMatcher', 'line_descriptor_DrawLinesMatchesFlags', 'line_descriptor_KeyLine', 'line_descriptor_LSDDetector', 'line_descriptor_LSDParam', 'linearPolar', 'linemod', 'linemod_ColorGradient', 'linemod_DepthNormal', 'linemod_Detector', 'linemod_Feature', 'linemod_Match', 'linemod_Modality', 'linemod_QuantizedPyramid', 'linemod_Template', 'log', 'logPolar', 'magnitude', 'matMulDeriv', 'matchShapes', 'matchTemplate', 'max', 'mcc', 'mcc_CChecker', 'mcc_CCheckerDetector', 'mcc_CCheckerDraw', 'mcc_DetectorParameters', 'mean', 'meanShift', 'meanStdDev', 'medianBlur', 'merge', 'min', 'minAreaRect', 'minEnclosingCircle', 'minEnclosingTriangle', 'minMaxLoc', 'mixChannels', 'ml', 'ml_ANN_MLP', 'ml_Boost', 'ml_DTrees', 'ml_EM', 'ml_KNearest', 'ml_LogisticRegression', 'ml_NormalBayesClassifier', 'ml_ParamGrid', 'ml_RTrees', 'ml_SVM', 'ml_SVMSGD', 'ml_StatModel', 'ml_TrainData', 'moments', 'morphologyEx', 'motempl', 'moveWindow', 'mulSpectrums', 'mulTransposed', 'multicalib', 'multiply', 'namedWindow', 'norm', 'normalize', 'ocl', 'ocl_Device', 'ocl_OpenCLExecutionContext', 'ogl', 'omnidir', 'optflow', 'optflow_DenseRLOFOpticalFlow', 'optflow_DualTVL1OpticalFlow', 'optflow_GPCDetails', 'optflow_GPCPatchDescriptor', 'optflow_GPCPatchSample', 'optflow_GPCTrainingSamples', 'optflow_GPCTree', 'optflow_OpticalFlowPCAFlow', 'optflow_PCAPrior', 'optflow_RLOFOpticalFlowParameter', 'optflow_SparseRLOFOpticalFlow', 'patchNaNs', 'pencilSketch', 'perspectiveTransform', 'phase', 'phaseCorrelate', 'phase_unwrapping', 'phase_unwrapping_HistogramPhaseUnwrapping', 'phase_unwrapping_HistogramPhaseUnwrapping_Params', 'phase_unwrapping_PhaseUnwrapping', 'plot', 'plot_Plot2d', 'pointPolygonTest', 'polarToCart', 'polylines', 'pow', 'ppf_match_3d', 'ppf_match_3d_ICP', 'ppf_match_3d_PPF3DDetector', 'ppf_match_3d_Pose3D', 'ppf_match_3d_PoseCluster3D', 'preCornerDetect', 'projectPoints', 'putText', 'pyrDown', 'pyrMeanShiftFiltering', 'pyrUp', 'quality', 'quality_QualityBRISQUE', 'quality_QualityBase', 'quality_QualityGMSD', 'quality_QualityMSE', 'quality_QualityPSNR', 'quality_QualitySSIM', 'randShuffle', 'randn', 'randu', 'rapid', 'rapid_OLSTracker', 'rapid_Rapid', 'rapid_Tracker', 'readOpticalFlow', 'recoverPose', 'rectangle', 'rectify3Collinear', 'redirectError', 'reduce', 'reg', 'reg_Map', 'reg_MapAffine', 'reg_MapProjec', 'reg_MapShift', 'reg_MapTypeCaster', 'reg_Mapper', 'reg_MapperGradAffine', 'reg_MapperGradEuclid', 'reg_MapperGradProj', 'reg_MapperGradShift', 'reg_MapperGradSimilar', 'reg_MapperPyramid', 'remap', 'repeat', 'reprojectImageTo3D', 'resize', 'resizeWindow', 'rgbd', 'rgbd_DepthCleaner', 'rgbd_FastICPOdometry', 'rgbd_ICPOdometry', 'rgbd_Odometry', 'rgbd_OdometryFrame', 'rgbd_RgbdFrame', 'rgbd_RgbdICPOdometry', 'rgbd_RgbdNormals', 'rgbd_RgbdOdometry', 'rgbd_RgbdPlane', 'rotate', 'rotatedRectangleIntersection', 'saliency', 'saliency_MotionSaliency', 'saliency_MotionSaliencyBinWangApr2014', 'saliency_Objectness', 'saliency_ObjectnessBING', 'saliency_Saliency', 'saliency_StaticSaliency', 'saliency_StaticSaliencyFineGrained', 'saliency_StaticSaliencySpectralResidual', 'samples', 'sampsonDistance', 'scaleAdd', 'seamlessClone', 'selectROI', 'selectROIs', 'sepFilter2D', 'setIdentity', 'setMouseCallback', 'setNumThreads', 'setRNGSeed', 'setTrackbarMax', 'setTrackbarMin', 'setTrackbarPos', 'setUseOpenVX', 'setUseOptimized', 'setWindowProperty', 'setWindowTitle', 'solve', 'solveCubic', 'solveLP', 'solveP3P', 'solvePnP', 'solvePnPGeneric', 'solvePnPRansac', 'solvePnPRefineLM', 'solvePnPRefineVVS', 'solvePoly', 'sort', 'sortIdx', 'spatialGradient', 'split', 'sqrBoxFilter', 'sqrt', 'startWindowThread', 'stereoCalibrate', 'stereoCalibrateExtended', 'stereoRectify', 'stereoRectifyUncalibrated', 'structured_light', 'structured_light_GrayCodePattern', 'structured_light_SinusoidalPattern', 'structured_light_SinusoidalPattern_Params', 'structured_light_StructuredLightPattern', 'stylization', 'subtract', 'sumElems', 'text', 'text_BaseOCR', 'text_ERFilter', 'text_ERFilter_Callback', 'text_OCRBeamSearchDecoder', 'text_OCRBeamSearchDecoder_ClassifierCallback', 'text_OCRHMMDecoder', 'text_OCRHMMDecoder_ClassifierCallback', 'text_OCRTesseract', 'text_TextDetector', 'text_TextDetectorCNN', 'textureFlattening', 'threshold', 'trace', 'transform', 'transpose', 'triangulatePoints', 'undistort', 'undistortPoints', 'undistortPointsIter', 'useOpenVX', 'useOptimized', 'utils', 'validateDisparity', 'vconcat', 'videoio_registry', 'videostab', 'viz', 'waitKey', 'waitKeyEx', 'warpAffine', 'warpPerspective', 'warpPolar', 'watershed', 'writeOpticalFlow', 'ximgproc', 'ximgproc_AdaptiveManifoldFilter', 'ximgproc_ContourFitting', 'ximgproc_DTFilter', 'ximgproc_DisparityFilter', 'ximgproc_DisparityWLSFilter', 'ximgproc_EdgeAwareInterpolator', 'ximgproc_EdgeBoxes', 'ximgproc_FastBilateralSolverFilter', 'ximgproc_FastGlobalSmootherFilter', 'ximgproc_FastLineDetector', 'ximgproc_GuidedFilter', 'ximgproc_RFFeatureGetter', 'ximgproc_RICInterpolator', 'ximgproc_RidgeDetectionFilter', 'ximgproc_SparseMatchInterpolator', 'ximgproc_StructuredEdgeDetection', 'ximgproc_SuperpixelLSC', 'ximgproc_SuperpixelSEEDS', 'ximgproc_SuperpixelSLIC', 'ximgproc_segmentation_GraphSegmentation', 'ximgproc_segmentation_SelectiveSearchSegmentation', 'ximgproc_segmentation_SelectiveSearchSegmentationStrategy', 'ximgproc_segmentation_SelectiveSearchSegmentationStrategyColor', 'ximgproc_segmentation_SelectiveSearchSegmentationStrategyFill', 'ximgproc_segmentation_SelectiveSearchSegmentationStrategyMultiple', 'ximgproc_segmentation_SelectiveSearchSegmentationStrategySize', 'ximgproc_segmentation_SelectiveSearchSegmentationStrategyTexture', 'xphoto', 'xphoto_GrayworldWB', 'xphoto_LearningBasedWB', 'xphoto_SimpleWB', 'xphoto_TonemapDurand', 'xphoto_WhiteBalancer']


 

>>> cv2.getBuildInformation()
'\nGeneral configuration for OpenCV 4.5.1 =====================================\n  Version control:               unknown\n\n  Extra modules:\n    Location (extra):            /build/opencv-fF3y1A/opencv-4.5.1+dfsg/contrib/modules\n    Version control (extra):     unknown\n\n  Platform:\n    Timestamp:                   2021-06-16T12:09:47Z\n    Host:                        Linux 4.19.0-17-arm64 aarch64\n    CMake:                       3.18.4\n    CMake generator:             Ninja\n    CMake build tool:            /usr/bin/ninja\n    Configuration:               Release\n\n  CPU/HW features:\n    Baseline:                    NEON FP16\n\n  C/C++:\n    Built as dynamic libs?:      YES\n    C++ standard:                11\n    C++ Compiler:                /usr/bin/c++  (ver 10.2.1)\n    C++ flags (Release):         -g -O2 -ffile-prefix-map=/build/opencv-fF3y1A/opencv-4.5.1+dfsg=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2   -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -fvisibility-inlines-hidden -g -O2 -ffile-prefix-map=/build/opencv-fF3y1A/opencv-4.5.1+dfsg=. -fstack-protector-strong -Wformat -Werror=format-security  -DNDEBUG\n    C++ flags (Debug):           -g -O2 -ffile-prefix-map=/build/opencv-fF3y1A/opencv-4.5.1+dfsg=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2   -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -fvisibility-inlines-hidden -g  -DDEBUG -D_DEBUG\n    C Compiler:                  /usr/bin/cc\n    C flags (Release):           -g -O2 -ffile-prefix-map=/build/opencv-fF3y1A/opencv-4.5.1+dfsg=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2   -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -g -O2 -ffile-prefix-map=/build/opencv-fF3y1A/opencv-4.5.1+dfsg=. -fstack-protector-strong -Wformat -Werror=format-security  -DNDEBUG\n    C flags (Debug):             -g -O2 -ffile-prefix-map=/build/opencv-fF3y1A/opencv-4.5.1+dfsg=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2   -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -g  -DDEBUG -D_DEBUG\n    Linker flags (Release):      -Wl,-z,relro -Wl,-z,now  -Wl,--gc-sections -Wl,--as-needed -Wl,-z,relro -Wl,-z,now \n    Linker flags (Debug):        -Wl,-z,relro -Wl,-z,now  -Wl,--gc-sections -Wl,--as-needed  \n    ccache:                      NO\n    Precompiled headers:         NO\n    Extra dependencies:          dl m pthread rt\n    3rdparty dependencies:\n\n  OpenCV modules:\n    To be built:                 alphamat aruco bgsegm bioinspired calib3d ccalib core datasets dnn dnn_objdetect dnn_superres dpm face features2d flann freetype fuzzy hdf hfs highgui img_hash imgcodecs imgproc intensity_transform java line_descriptor mcc ml objdetect optflow phase_unwrapping photo plot python3 quality rapid reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking video videoio videostab viz ximgproc xobjdetect xphoto\n    Disabled:                    world\n    Disabled by dependency:      sfm\n    Unavailable:                 cnn_3dobj cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev cvv gapi julia matlab ovis python2 ts\n    Applications:                apps\n    Documentation:               doxygen python javadoc\n    Non-free algorithms:         NO\n\n  GUI: \n    GTK+:                        YES (ver 3.24.24)\n      GThread :                  YES (ver 2.66.8)\n      GtkGlExt:                  NO\n    OpenGL support:              NO\n    VTK support:                 YES (ver 9.0.1)\n\n  Media I/O: \n    ZLib:                        /usr/lib/aarch64-linux-gnu/libz.so (ver 1.2.11)\n    JPEG:                        /usr/lib/aarch64-linux-gnu/libjpeg.so (ver 62)\n    WEBP:                        /usr/lib/aarch64-linux-gnu/libwebp.so (ver encoder: 0x020e)\n    PNG:                         /usr/lib/aarch64-linux-gnu/libpng.so (ver 1.6.37)\n    TIFF:                        /usr/lib/aarch64-linux-gnu/libtiff.so (ver 42 / 4.2.0)\n    JPEG 2000:                   OpenJPEG (ver 2.4.0)\n    OpenEXR:                     /usr/lib/aarch64-linux-gnu/libImath-2_5.so /usr/lib/aarch64-linux-gnu/libIlmImf-2_5.so /usr/lib/aarch64-linux-gnu/libIex-2_5.so /usr/lib/aarch64-linux-gnu/libHalf-2_5.so /usr/lib/aarch64-linux-gnu/libIlmThread-2_5.so (ver 2_5)\n    GDAL:                        YES (/usr/lib/libgdal.so)\n    GDCM:                        YES (3.0.8)\n    HDR:                         YES\n    SUNRASTER:                   YES\n    PXM:                         YES\n    PFM:                         YES\n\n  Video I/O:\n    DC1394:                      YES (2.2.6)\n    FFMPEG:                      YES\n      avcodec:                   YES (58.91.100)\n      avformat:                  YES (58.45.100)\n      avutil:                    YES (56.51.100)\n      swscale:                   YES (5.7.100)\n      avresample:                NO\n    GStreamer:                   YES (1.18.4)\n    PvAPI:                       NO\n    v4l/v4l2:                    YES (linux/videodev2.h)\n    gPhoto2:                     YES\n\n  Parallel framework:            TBB (ver 2020.3 interface 11103)\n\n  Trace:                         YES (built-in)\n\n  Other third-party libraries:\n    Lapack:                      NO\n    Eigen:                       YES (ver 3.3.9)\n    Custom HAL:                  NO\n    Protobuf:                    /usr/lib/aarch64-linux-gnu/libprotobuf.so (3.12.4)\n\n  OpenCL:                        YES (no extra features)\n    Include path:                /usr/include/CL\n    Link libraries:              Dynamic load\n\n  Python 3:\n    Interpreter:                 /usr/bin/python3 (ver 3.9.2)\n    Libraries:                   /usr/lib/aarch64-linux-gnu/libpython3.9.so (ver 3.9.2)\n    numpy:                       /usr/lib/python3/dist-packages/numpy/core/include (ver 1.19.5)\n    install path:                lib/python3.9/dist-packages\n\n  Python (for build):            /usr/bin/python3\n\n  Java:                          \n    ant:                         /usr/bin/ant (ver 1.10.9)\n    JNI:                         /usr/lib/jvm/default-java/include /usr/lib/jvm/default-java/include/linux /usr/lib/jvm/default-java/include\n    Java wrappers:               YES\n    Java tests:                  NO\n\n  Install to:                    /usr\n-----------------------------------------------------------------\n\n'
>>> 
 

附录B gstreamer在线文档

GStreamer: open source multimedia frameworkicon-default.png?t=N7T8https://gstreamer.freedesktop.org/API文档:

Application Development Manual (gstreamer.freedesktop.org)

Core Library (gstreamer.freedesktop.org)

appsrc (gstreamer.freedesktop.org)

附录C 一份python程序用来测试推流速度

它会自动在00,10,20,30,40,50秒切换自行生成的图片内容(通过RTSP推出)。你可以用它来测试系统的延迟。你会看到条状和斜方块的图片10秒为间隔交替切换。视频流查看程序建议使用vlc,它可以配置出非常低的延迟:

obsstudio始终配不出零延迟的效果。下面这段程序通过配置参数,我实现过几乎零延迟(<=500ms)的推流效果。在原始嵌入式平台使用:

watch -n 1 date

可以观察到原始的视频输出在,秒数低位=0那个跳变沿,对比vlc的接收图像,就可以直观感受整个视频系统在推送阶段的延迟速度。

C.1 main.py 负责推流

注意GST_DEBUG可以用来查看gstreamer的调试信息,对优化有帮助。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 获取当前脚本文件所在目录的父目录,并构建相对路径
import os
import sys
current_dir = os.path.dirname(os.path.abspath(__file__))
project_path = os.path.join(current_dir, '..')
sys.path.append(project_path)
sys.path.append(current_dir)
import cv2
import threading
import time
import warnings
import queue
import cat4Config
import thread_stream_in as stream_in
import numpy as np
import gi
gi.require_version('Gst', '1.0') ## 确保加载正确的版本
import os
# 设置GStreamer的调试级别为4
#os.environ['GST_DEBUG'] = '5'
from gi.repository import Gst, GObject, GLib


class SharedData:
    def __init__(self):
        self.lock = threading.Lock()  # 创建一个锁
        self.shared_variable = False

    def update_variable(self, new_val):
        with self.lock:
            self.shared_variable = new_val

class StreamOutThread(threading.Thread):
    def __init__(self, name, pjtConfig, streamGeneratorRhs:stream_ai.YoloV5Thread):
        threading.Thread.__init__(self)
        self.name = name
        self.isRunning = True
        self.nextTime = time.time() - 3
        self.streamGenerator= streamGeneratorRhs
        self.out = None
        self.frameCache = None #the very old frame
        self.frameRaw = None
        self.isFirstFrameGenedYet = SharedData()
        self.nextTime2Sent = time.time()
        self.queueOut = queue.Queue()
        self.errCnt = 0
        self.cnt = 0



        self.width = pjtConfig.width
        self.height = pjtConfig.height
        self.zone = pjtConfig.zone
        self.rtsp_url = pjtConfig.stream_out
        self.fps = pjtConfig.fps_out

        self.fps = 1
        
        self.timeStep = (1.0/self.fps)
        self.MAX_QUEUE_LEN = pjtConfig.max_queue_line

    def run(self):
        self.nextTime2Sent = time.time()-3
        self.out = None
        self.streamGenerator.purge();
        self.purge()
        self.isFirstFrameGenedYet.update_variable(False)
        self.rtsp_out_init()
        while self.isRunning:
            ret, self.frameRaw = self.streamGenerator.outFrame() #read next
            if ret:
                if(not self.isFirstFrameGenedYet.shared_variable):
                    #print(">>>>>>>>>>>>>>>>rknn first frame gened");
                    self.isFirstFrameGenedYet.update_variable(True)
                    self.streamGenerator.purge();
                    self.purge()
                    self.nextTime2Sent = time.time()
                self.queueOut.put(self.frameRaw)
            if(self.isFirstFrameGenedYet.shared_variable) and (time.time()>=self.nextTime2Sent):
                print("time anchor", time.time(), self.nextTime2Sent)
                ret, frame = self.outFrame()
                if(ret):
                    #print("queue len=", self.queueOut.qsize());
                    self.rtsp_out_push(frame)
                    self.nextTime2Sent += self.timeStep
                else:
                    time.sleep(0.01)
            else:
                time.sleep(0.01)
        
    def stop(self):
        self.isRunning = False

    def __del__(self):
        self.isRunning = False
        #if(self.cap != None):
        #    self.cap.release()

    def outFrame(self):
        while self.queueOut.qsize()>1:
            self.queueOut.get()
            continue;
        if(not self.isFirstFrameGenedYet.shared_variable): return False, None;
        #print(self.queueOut.qsize)
        if(self.queueOut.qsize()<=0): return False, None;
        dumb = self.queueOut.get()
        try:
            arMat = np.zeros((self.height, self.width, 3), dtype=np.uint8)
            arMat[:,:,:] = dumb
            self.frameCache = arMat
        except Exception as e:
            self.errCnt += 1
        return self.isFirstFrameGenedYet.shared_variable, self.frameCache

    def purge(self):
        self.streamGenerator.purge()
        while self.queueOut.qsize()>0:
            self.queueOut.get()
            continue;

    def need_data_callback(self, appsrc, length, udata):
        print("need data", length)

    def seek_data_callback(self, appsrc, offset, udata):
        print('seek data', offset)

    def rtsp_out_init(self):
        print('start post to %s' %(self.rtsp_url))
        self.fps = 1
        keyIntMax = 1 #self.fps*2
        #if(keyIntMax > 5): keyIntMax = 
        #keyIntMax keyframe inter-span, lower caused latency little.
        #cv2.CAP_PROP_BUFFERSIZE low latency
        #sync, audio video sync...
        #        ' ! video/x-raw, format=RGB, width=%d, height=%d' %(self.width, self.height) + \
        # stream-type=0 no seek.
        # leaky-type=2 queue full drop old ...
        # sync=False cfr=False show-preroll-frame=False max-latency=1  sink
        #  format=GST_FORMAT_TIME do-timestamp=True min-percent=0  max-bytes=245760
        self.out = cv2.VideoWriter('appsrc is-live=True stream-type=0 emit-signals=False max-latency=1' + \
#        ' ! queue max-size-time=10' + \
        ' ! videoconvert ! video/x-raw, format=I420' + \
        ' ! x264enc speed-preset=ultrafast bitrate=1200 tune="zerolatency" key-int-max=' + str( keyIntMax ) + \
        ' ! video/x-h264,profile=baseline' + \
        ' ! rtspclientsink location=%s' %(self.rtsp_url),
        cv2.CAP_GSTREAMER, cv2.VideoWriter_fourcc(*'h264'), self.fps, (self.width, self.height), True)
        if self.out is None:
            print("video out error.")
            exit(1)

    def rtsp_out_push(self, npArray):
        try:
            out = self.out
            frame = npArray
            print(">>>>>>>>>>>>sent out stage1..", self.cnt, time.time(), npArray[0,0])
            out.write(frame)
            print(">>>>>>>>>>>>sent out.....", self.cnt, time.time(), npArray[0,0])
            self.cnt +=1
        except cv2.error as e:
            print("Error writing video:", e)
            exit(1)
        except Exception as e:
            print("An unexpected error occurred:", e)
            exit(1)

if __name__ == "__main__":
     pjtConfig = cat4Config.Cat4Config()
     threadIn = stream_in.StreamInThread("Stream In Thread", pjtConfig)
     threadOut = StreamOutThread("Stream RTSP Out Thread", pjtConfig, threadIn)
     threadOut.start()
     threadIn.start()
     while True:
         time.sleep(3600)
     threadOut.stop()
     #threadCalc.stop()
     threadIn.stop()

C.2 thread_stream_in.py 负责生成测试帧

因为原本是要连原始的网络摄像头的,这部分逻辑没有全部清理掉。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 获取当前脚本文件所在目录的父目录,并构建相对路径
import os
import sys
current_dir = os.path.dirname(os.path.abspath(__file__))
project_path = os.path.join(current_dir, '..')
sys.path.append(project_path)
sys.path.append(current_dir)
import cv2
import threading
import time
import warnings
import queue
import cat4Config
from datetime import datetime
import numpy as np

class StreamInThread(threading.Thread):
    def __init__(self, name, pjtConfig):
        threading.Thread.__init__(self)
        self.name = name
        self.isRunning = True
        self.frame = None  #the very last frame
        self.cap = None
        self.queueIn = queue.Queue()
        self.MAX_QUEUE_LEN = 5
        self.imageCache = None #the very old frame
        self.isFirstImageComing = False

        self.width = pjtConfig.width
        self.height = pjtConfig.height
        self.zone = pjtConfig.zone
        self.rtsp_url = pjtConfig.stream_in
        self.cnt = 0

    def run(self):
        flagNotHandle= False
        zone = self.zone
        self.cap = cv2.VideoCapture(self.rtsp_url, cv2.CAP_GSTREAMER)        
        if not self.cap.isOpened():
            print("stream is not open")
            exit(1)
        else:
            print("gstreamer opened!")
        self.isFirstImageComing = False 
        #fps = self.cap.get(5)
        fps = 5
        print('stream in fps = ', fps);
        start1 = time.time()
        curcolor = 200;
        lastseconds = -1
        while self.isRunning:
            #self.cap.get()
            height = self.height
            width = self.width
            Y = np.zeros((height, width), dtype=np.uint8)
            U = np.zeros((height, width), dtype=np.uint8)
            V = np.zeros((height, width), dtype=np.uint8)
            Y[:,:] = 255

            current_time = datetime.now()
            seconds = current_time.second
            if(seconds%10 == 0) and (lastseconds!=seconds):
                lastseconds = seconds;
                if(curcolor==200):
                    curcolor = 100
                    self.cnt=0
                else:
                    curcolor = 200
                    self.cnt=0
                
            if(curcolor == 100):
                    U[:,:] = 0
                    for i in np.arange(self.width):
                        for j in np.arange(self.height//2):
                              U[j,i] = 255
                    V[:,:] = 0
                    Y[:,:] = curcolor
                    arMat = np.dstack((Y, U, V))
            else:
                    U[:,:] = 0
                    for i in np.arange(self.width):
                        for j in np.arange(i):
                              U[i,j] = 128
                    Y[:,:] = curcolor
                    arMat = np.dstack((Y, U, V))
            frame = arMat
            print(">>>>>>>>>>>>sent in.....", self.cnt, time.time(), self.queueIn.qsize())
            self.cnt +=1            
            # create a rectangle
            color = curcolor
            color +=1
            self.queueIn.put(frame)
            #print("%s frame written to the server" % datetime.now(), curcolor)

            now = time.time()
            diff = (1.0 / fps) - now + start1
            #print("diff in thread_in", diff)
            if diff > 0:
                time.sleep(diff)
            start1 = now
        self.cap.release()

    def stop(self):
        self.isRunning = False

    def __del__(self):
        self.isRunning = False
        #if(self.cap != None):
        #    self.cap.release()

    def outFrame(self):
       return self.rawImage()

    def rawImage(self):
        while self.queueIn.qsize()>(self.MAX_QUEUE_LEN*2):
            self.queueIn.get()
            continue;
        if(self.queueIn.qsize()>0):
            self.imageCache = self.queueIn.get()
            self.isFirstImageComing  = True
        return self.isFirstImageComing, self.imageCache

    def purge(self):
        while self.queueIn.qsize()>1:
            self.queueIn.get()
            continue;



if __name__ == "__main__":
     pjtConfig = cat4Config.Cat4Config()
     thread = StreamInThread("Stream In Thread", pjtConfig)
     thread.start()
     time.sleep(10)
     thread.stop();
     
     

C.3  catConfig.py 配置

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 获取当前脚本文件所在目录的父目录,并构建相对路径
import os
import sys
current_dir = os.path.dirname(os.path.abspath(__file__))
project_path = os.path.join(current_dir, '..')
sys.path.append(project_path)
sys.path.append(current_dir)
import cv2
import threading
import time
import warnings
import queue

class Cat4Config:
   def __init__(self):
       self.stream_in = "rtsp://xxxx:xxxxx@192.168.75.7:554/h264/ch1/main/av_stream"
       self.stream_out = "rtsp://127.0.0.1:8554/ch3" 
       self.fps_out = 5
       self.hide_warning_yet = False
       self.width=640
       self.height=640
       self.max_queue_line = 2

  • 33
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要使用Python调用Gstreamer进行推流,需要安装Python Gstreamer绑定库。可以使用以下命令在Linux中安装: ``` sudo apt-get install python-gst-1.0 ``` 接下来,可以使用以下Python代码来推送视频流: ```python import gi gi.require_version('Gst', '1.0') from gi.repository import GObject, Gst GObject.threads_init() Gst.init(None) pipeline = Gst.Pipeline() # 创建源 source = Gst.ElementFactory.make("v4l2src", "source") source.set_property("device", "/dev/video0") # 创建编码器 encoder = Gst.ElementFactory.make("x264enc", "encoder") encoder.set_property("speed-preset", "ultrafast") # 创建PayLoad pay = Gst.ElementFactory.make("rtph264pay", "pay") # 创建UDPSink udpsink = Gst.ElementFactory.make("udpsink", "udpsink") udpsink.set_property("host", "127.0.0.1") udpsink.set_property("port", 5000) # 添加到pipeline中 pipeline.add(source) pipeline.add(encoder) pipeline.add(pay) pipeline.add(udpsink) # 连接元素 source.link(encoder) encoder.link(pay) pay.link(udpsink) # 启动流 pipeline.set_state(Gst.State.PLAYING) # 等待流 bus = pipeline.get_bus() msg = bus.timed_pop_filtered(Gst.CLOCK_TIME_NONE, Gst.MessageType.ERROR | Gst.MessageType.EOS) if msg: if msg.type == Gst.MessageType.ERROR: err, debug = msg.parse_error() print("Error received from element %s: %s" % (msg.src.get_name(), err)) print("Debugging information: %s" % debug) elif msg.type == Gst.MessageType.EOS: print("End-Of-Stream reached.") else: print("Unexpected message received.") # 停止流 pipeline.set_state(Gst.State.NULL) ``` 这个代码段将从/dev/video0设备中获取视频流,并使用x264编码器进行编码,然后将其通过UDP发送到127.0.0.1:5000。可以根据需要更改设备和网络设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子正

thanks, bro...

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值