{"id":43843086,"url":"https://github.com/ray2501/tcl-opencv","last_synced_at":"2026-02-06T05:18:45.724Z","repository":{"id":113065832,"uuid":"404291645","full_name":"ray2501/tcl-opencv","owner":"ray2501","description":"Tcl extension for OpenCV library","archived":false,"fork":false,"pushed_at":"2025-02-05T15:18:09.000Z","size":1453,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-05T15:48:06.424Z","etag":null,"topics":["opencv","tcl","tcl-extension"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ray2501.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-08T09:42:16.000Z","updated_at":"2025-02-05T15:18:13.000Z","dependencies_parsed_at":"2024-11-10T03:34:32.354Z","dependency_job_id":null,"html_url":"https://github.com/ray2501/tcl-opencv","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/ray2501/tcl-opencv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ray2501%2Ftcl-opencv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ray2501%2Ftcl-opencv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ray2501%2Ftcl-opencv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ray2501%2Ftcl-opencv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ray2501","download_url":"https://codeload.github.com/ray2501/tcl-opencv/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ray2501%2Ftcl-opencv/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29152229,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T02:39:25.012Z","status":"ssl_error","status_checked_at":"2026-02-06T02:37:22.784Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["opencv","tcl","tcl-extension"],"created_at":"2026-02-06T05:18:44.980Z","updated_at":"2026-02-06T05:18:45.704Z","avatar_url":"https://github.com/ray2501.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"tcl-opencv\n=====\n\nThis project is a Tcl extension for [OpenCV](https://opencv.org/) library.\n\nOpenCV (Open Source Computer Vision Library) is a library of programming\nfunctions mainly aimed at real-time computer vision.\n\nThis extension requires OpenCV 4.5.0 or newer.\n\n\nBuilding this extension\n=====\n\nSee [BUILDING.md](BUILDING.md) to know how to build the extension.\n\n\nImplement commands\n=====\n\n### Matrix\n\n    MATRIX dims\n    MATRIX size\n    MATRIX rows\n    MATRIX cols\n    MATRIX channels\n    MATRIX depth\n    MATRIX type\n    MATRIX empty\n    MATRIX at index_list channel ?value?\n    MATRIX inv ?method?\n    MATRIX dot matrix\n    MATRIX cross matrix\n    MATRIX * matrix\n    MATRIX add value\n    MATRIX subtract value\n    MATRIX multiply value\n    MATRIX divide value\n    MATRIX transpose\n    MATRIX diag ?d?\n    MATRIX crop x y width height\n    MATRIX rect x y width height\n    MATRIX copyTo matrix ?mask?\n    MATRIX convertTo type ?scale shift?\n    MATRIX col index\n    MATRIX colRange startcol endcol\n    MATRIX row index\n    MATRIX rowRange startcol endcol\n    MATRIX pop_back ?nelems?\n    MATRIX push_back matrix\n    MATRIX reshape cn ?rows?\n    MATRIX setData list_data\n    MATRIX setTo color_list ?mask?\n    MATRIX toByteArray\n    MATRIX fromByteArray width height bpp bytes\n    MATRIX close\n\n    ::cv::CV_8UC num\n    ::cv::CV_8SC num\n    ::cv::CV_16UC num\n    ::cv::CV_16SC num\n    ::cv::CV_32SC num\n    ::cv::CV_32FC num\n    ::cv::CV_64FC num\n\n    ::cv::Mat::Mat rows cols type ?color_list?\n    ::cv::Mat::MatWithDims dims size_list type ?color_list?\n    ::cv::Mat::diag matrix\n    ::cv::Mat::eye rows cols type\n    ::cv::Mat::ones rows cols type\n    ::cv::Mat::zeros rows cols type\n\n    ::cv::matvar name mat\n\n`::cv::matvar` is provided which does some automatic resource/life-cycle\nmanagement using traces on variables. It's an experimental combination of\nthe set command with a unset/write variable trace on the (local or global)\nvariable. You can check\n[example](https://github.com/ray2501/tcl-opencv/issues/14#issuecomment-939336696).\n\n    ::cv::abs matrix\n    ::cv::absdiff matrix_1 matrix_2\n    ::cv::add matrix_1 matrix_2\n    ::cv::addWeighted matrix_1 alpha matrix_2 beta gamma\n    ::cv::bitwise_and matrix_1 matrix_2 ?mask?\n    ::cv::bitwise_or matrix_1 matrix_2 ?mask?\n    ::cv::bitwise_xor matrix_1 matrix_2 ?mask?\n    ::cv::bitwise_not matrix ?mask?\n    ::cv::calcCovarMatrix matrix flags ?ctype?\n    ::cv::cartToPolar matrix_1 matrix_2 ?angleInDegrees?\n    ::cv::compare matrix_1 matrix_2 cmpop\n    ::cv::convertScaleAbs matrix alpha beta\n    ::cv::copyMakeBorder matrix top bottom left right borderType ?color_list?\n    ::cv::countNonZero matrix\n    ::cv::hasNonZero matrix\n    ::cv::determinant matrix\n    ::cv::divide matrix_1 matrix_2 ?scale?\n    ::cv::eigen matrix\n    ::cv::eigenNonSymmetric matrix\n    ::cv::exp matrix\n    ::cv::extractChannel matrix coi\n    ::cv::findNonZero matrix\n    ::cv::flip matrix flipCode\n    ::cv::getOptimalDFTSize vecsize\n    ::cv::dft matrix ?falgs nonzeroRows?\n    ::cv::inRange matrix color_list1 color_list2\n    ::cv::insertChannel src_matrix dst_matrix coi\n    ::cv::log matrix\n    ::cv::LUT matrix1 matrix2\n    ::cv::Mahalanobis matrix1 matrix2 icovar_matrix\n    ::cv::magnitude matrix1 matrix2\n    ::cv::max matrix1 matrix2\n    ::cv::meanStdDev matrix\n    ::cv::min matrix1 matrix2\n    ::cv::minMaxIdx matrix\n    ::cv::minMaxLoc matrix\n    ::cv::multiply matrix_1 matrix_2 ?scale?\n    ::cv::mulSpectrums matrix_1 matrix_2 flags ?conjB?\n    ::cv::split matrix\n    ::cv::merge matrix_list\n    ::cv::norm matrix norm_type\n    ::cv::norm matrix_1 matrix_2 norm_type\n    ::cv::normalize matrix alpha beta norm_type\n    ::cv::pow matrix power\n    ::cv::randn matrix mean_list stddev_list\n    ::cv::randu matrix min_list max_list\n    ::cv::randShuffle matrix ?iterFactor?\n    ::cv::reduce matrix dim rtype ?dtype?\n    ::cv::repeat matrix ny nx\n    ::cv::rotate matrix rotateCode\n    ::cv::setRNGSeed seed\n    ::cv::solve matrix_1 matrix_2 ?flags?\n    ::cv::solveCubic matrix\n    ::cv::solvePoly matrix ?maxIters?\n    ::cv::sortIdx matrix flags\n    ::cv::sqrt matrix\n    ::cv::subtract matrix_1 matrix_2\n    ::cv::sum matrix\n    ::cv::SVBackSubst matrix_w matrix_u matrix_vt matrix\n    ::cv::SVDecomp matrix ?flags?\n    ::cv::trace matrix\n    ::cv::transform matrix_1 matrix_2\n    ::cv::hconcat matrix_1 matrix_2\n    ::cv::vconcat matrix_1 matrix_2\n\nOpenCV 4.8.0 add `::cv::hasNonZero`.\n\n    ::cv::kmeans matrix k bestLabels termCriteria attempts flags\n\nIf users setup bestLabels to `None`, then flags should not set to `$::cv::KMEANS_USE_INITIAL_LABELS`.\nIf flags is set to `$::cv::KMEANS_USE_INITIAL_LABELS`, users should provide a CV_32S matrix.\n\n    ::cv::perspectiveTransform src_list transformation_matrix\n\n    ::cv::getBuildInformation\n    ::cv::getTickCount\n    ::cv::getTickFrequency\n\n    ::cv::PCA matrix flags ?maxComponents?\n    PCA mean\n    PCA eigenvalues\n    PCA eigenvectors\n    PCA backProject matrix\n    PCA project matrix\n    PCA close\n\n    ::cv::TermCriteria ?type maxCount epsilon?\n    TermCriteria close\n\n    ::cv::fromByteArray width height bpp bytes\n\nCreates a new `cv::Mat` from a gray (`bpp` equals 1) or RGB (`bpp` equals 3) byte array with `width` columns and `height` rows.\nSame rule regarding arguments applies to `MATRIX fromByteArray ...`.\nLikewise, the command `MATRIX toByteArray` returns a 4 element result list.\n\n### fstorage\n\n    ::cv::FileStorage\n    FS open filename|data mode\n    FS keys ?name ...?\n    FS startMap name\n    FS startSeq name\n    FS endMap\n    FS endSeq\n    FS readDouble name ...\n    FS readInt name ...\n    FS readMat name ...\n    FS readObj name ...\n    FS readString name ...\n    FS writeDouble name double ...\n    FS writeInt name int ...\n    FS writeMat name matrix\n    FS writeObj name obj\n    FS writeString name string ...\n    FS close\n\nFor more FileStorage info, you can check\n[XML/YAML Persistence](https://docs.opencv.org/master/d4/da4/group__core__xml.html).\n\n### imgcodecs\n\n    ::cv::imread filename ?flags?\n    ::cv::imdecode bytes ?flags?\n    ::cv::imwrite filename matrix\n    ::cv::imencode fileext matrix\n\n### imgproc\n\n    ::cv::applyColorMap matrix colormap\n    ::cv::cvtColor src_matrix code ?dstCn?\n    ::cv::calcBackProject matrix channels hist_matrix ranges_list ?scale uniform?\n    ::cv::calcHist matrix channels mask dims histSize_list ranges_list ?uniform accumulate?\n    ::cv::compareHist matrix_1 matrix_2 method\n    ::cv::equalizeHist matrix\n    ::cv::EMD signature1 signature2 distType ?cost?\n    ::cv::floodFill matrix seed_x seed_y color_list ?rect_list loDiff_color upDiff_color flags?\n    ::cv::grabCut matrix x y width height iterCount\n    ::cv::matchTemplate matrix templ_matrix method\n    ::cv::moments matrix ?binaryImage?\n    ::cv::getRotationMatrix2D x y angle scale\n    ::cv::getRectSubPix matrix width height center_x center_y\n    ::cv::HuMoments moments_list\n    ::cv::integral matrix ?sdepth sqdepth?\n    ::cv::remap matrix map1 map2 interpolation\n    ::cv::resize matrix width height ?flags?\n    ::cv::threshold matrix thresh maxval type\n    ::cv::adaptiveThreshold matrix maxValue adaptiveMethod thresholdType blockSize C\n    ::cv::getAffineTransform src_list dst_list\n    ::cv::warpAffine src_matrix transformation_matrix width height ?flags?\n    ::cv::getPerspectiveTransform src_list dst_list ?solveMethod?\n    ::cv::warpPerspective src_matrix transformation_matrix width height ?flags?\n    ::cv::warpPolar matrix dsize_width dsize_height center_x center_y maxRadius ?flags?\n\n    ::cv::filter2D src_matrix kernel_matrix ?anchor_x anchor_y delta borderType?\n    ::cv::sepFilter2D src_matrix kernelX kernelY ?anchor_x anchor_y delta borderType?\n    ::cv::getDerivKernels dx dy ksize ?normalize ktype?\n    ::cv::getGaborKernel ksize_width ksize_height sigma theta lambd gamma ?psi type?\n    ::cv::getGaussianKernel ksize sigma ?type?\n    ::cv::blur src_matrix ksize_width ksize_height ?anchor_x anchor_y borderType?\n    ::cv::GaussianBlur src_matrix ksize_width ksize_height sigmaX ?sigmaY borderType?\n    ::cv::medianBlur src_matrix ksize\n    ::cv::stackBlur src_matrix ksize_width ksize_height\n    ::cv::bilateralFilter src_matrix d sigmaColor sigmaSpace ?borderType?\n    ::cv::boxFilter src_matrix ksize_width ksize_height ?anchor_x anchor_y normalize borderType?\n    ::cv::sqrBoxFilter src_matrix ksize_width ksize_height ?anchor_x anchor_y normalize borderType?\n\nOpenCV 4.7.0 add `::cv::stackBlur`.\n\n    ::cv::getStructuringElement shape ksize_width ksize_height ?anchor_x anchor_y?\n    ::cv::dilate src_matrix kernel_matrix ?anchor_x anchor_y iterations?\n    ::cv::erode src_matrix kernel_matrix ?anchor_x anchor_y iterations?\n    ::cv::morphologyEx src_matrix op kernel_matrix ?anchor_x anchor_y iterations?\n    ::cv::buildPyramid src_matrix maxlevel ?borderType?\n    ::cv::pyrUp src_matrix ?dstsize_width dstsize_height borderType?\n    ::cv::pyrDown src_matrix ?dstsize_width dstsize_height borderType?\n    ::cv::pyrMeanShiftFiltering src_matrix sp sr ?maxLevel?\n\n    ::cv::createHanningWindow winSize_width winSize_height type\n    ::cv::phaseCorrelate matrix_1 matrix_2 ?window?\n\n    ::cv::Canny matrix threshold1 threshold2 ?apertureSize L2gradient?\n    ::cv::Sobel matrix dx dy ?ksize scale delta borderType?\n    ::cv::Scharr matrix dx dy ?scale delta borderType?\n    ::cv::Laplacian matrix ?ksize scale delta borderType?\n    ::cv::distanceTransform matrix distanceType maskSize\n    ::cv::connectedComponents matrix ?connectivity?\n    ::cv::connectedComponentsWithStats matrix ?connectivity?\n    ::cv::watershed matrix markers\n    ::cv::goodFeaturesToTrack matrix maxCorners qualityLevel minDistance ?mask blockSize useHarrisDetector k?\n    ::cv::cornerHarris matrix blockSize ksize k ?borderType?\n    ::cv::cornerEigenValsAndVecs matrix blockSize ksize ?borderType?\n    ::cv::cornerMinEigenVal matrix blockSize ksize ?borderType?\n    ::cv::cornerSubPix matrix corners winSize_width winSize_height zeroZone_widht zeroZone_height termCriteria\n    ::cv::HoughCircles matrix method dp minDist ?param1 param2 minRadius maxRadius?\n    ::cv::HoughLines matrix rho theta threshold ?srn stn min_theta max_theta?\n    ::cv::HoughLinesP matrix rho theta threshold ?minLineLength maxLineGap?\n\n    ::cv::findContours matrix mode method ?offset_point_x offset_point_y?\n    ::cv::findContoursWithHierarchy matrix mode method ?offset_point_x offset_point_y?\n    ::cv::drawContours matrix contours_list contourIdx color_list thickness ?lineType maxLevel offset_point_x offset_point_y?\n    ::cv::drawContoursWithHierarchy matrix contours_list contourIdx color_list thickness lineType hierarchy maxLevel ?offset_point_x offset_point_y?\n    ::cv::approxPolyDP contour epsilon closed\n    ::cv::arcLength contour closed\n    ::cv::contourArea contour ?oriented?\n    ::cv::boundingRect contour\n    ::cv::minAreaRect contour\n    ::cv::fitEllipse contour\n    ::cv::fitLine contour distType param reps aeps\n    ::cv::boxPoints contour\n    ::cv::minEnclosingCircle contour\n    ::cv::convexHull contour ?clockwise returnPoints?\n    ::cv::convexityDefects contour convexhull\n    ::cv::matchShapes contour1 contour2 method\n    ::cv::pointPolygonTest contour x y measureDist\n\nIf users want to find the convexity defects of a contour,\nconvex hull obtained using `::cv::convexHull` that required to set returnPoints to 0.\n\nIf users need to know contour's moments, users need to use `::cv::Mat::Mat` to create\na matrix and fill the contour's data to the matrix, then use `::cv::moments` to calculate.\n\n    ::cv::arrowedLine matrix point_x1 point_y1 point_x2 point_y2 color_list thickness ?lineType shift tipLength?\n    ::cv::circle matrix center_x center_y radius color_list thickness ?lineType shift?\n    ::cv::clipLine size_list point1_list point2_list\n    ::cv::drawMarker matrix point_x point_y color_list ?markerType markerSize thickness line_type?\n    ::cv::ellipse matrix center_x center_y width hgieht angle startAngle endAngle color_list thickness ?lineType shift?\n    ::cv::fillConvexPoly matrix point_list color_list ?lineType shift?\n    ::cv::fillPoly matrix point_lists color_list ?lineType shift offset_x offset_y?\n    ::cv::getFontScaleFromHeight fontFace pixelHeight ?thickness?\n    ::cv::getTextSize text fontFace fontScale thickness\n    ::cv::line matrix point_x1 point_y1 point_x2 point_y2 color_list thickness ?lineType shift?\n    ::cv::polylines matrix point_list ncontours isClosed color_list thickness ?lineType shift?\n    ::cv::putText matrix text point_x point_y fontFace fontScale color_list thickness ?lineType bottomLeftOrigin?\n    ::cv::rectangle matrix point_x1 point_y1 point_x2 point_y2 color_list thickness ?lineType shift?\n\n    ::cv::CLAHE ?clipLimit tileGridSize_w tileGridSize_h?\n    CLAHE apply matrix\n    CLAHE close\n\nPlease notice, CLAHE command will only have 1 instance.\n\n    ::cv::GeneralizedHoughBallard\n    GeneralizedHoughBallard detect matrix\n    GeneralizedHoughBallard getCannyHighThresh\n    GeneralizedHoughBallard getCannyLowThresh\n    GeneralizedHoughBallard getDp\n    GeneralizedHoughBallard getLevels\n    GeneralizedHoughBallard getMinDist\n    GeneralizedHoughBallard getVotesThreshold\n    GeneralizedHoughBallard setCannyHighThresh\n    GeneralizedHoughBallard setCannyLowThresh value\n    GeneralizedHoughBallard setDp value\n    GeneralizedHoughBallard setLevels value\n    GeneralizedHoughBallard setMinDist value\n    GeneralizedHoughBallard setTemplate matrix\n    GeneralizedHoughBallard setVotesThreshold value\n    GeneralizedHoughBallard close\n\nPlease notice, GeneralizedHoughBallard command will only have 1 instance.\n\n    ::cv::GeneralizedHoughGuil\n    GeneralizedHoughGuil detect matrix\n    GeneralizedHoughGuil getAngleEpsilon\n    GeneralizedHoughGuil getAngleStep\n    GeneralizedHoughGuil getAngleThresh\n    GeneralizedHoughGuil getCannyHighThresh\n    GeneralizedHoughGuil getCannyLowThresh\n    GeneralizedHoughGuil getDp\n    GeneralizedHoughGuil getLevels\n    GeneralizedHoughGuil getMaxAngle\n    GeneralizedHoughGuil getMaxScale\n    GeneralizedHoughGuil getMinDist\n    GeneralizedHoughGuil getMinAngle\n    GeneralizedHoughGuil getMinScale\n    GeneralizedHoughGuil getPosThresh\n    GeneralizedHoughGuil getScaleStep\n    GeneralizedHoughGuil getScaleThresh\n    GeneralizedHoughGuil getXi\n    GeneralizedHoughGuil setAngleEpsilon value\n    GeneralizedHoughGuil setAngleStep value\n    GeneralizedHoughGuil setAngleThresh value\n    GeneralizedHoughGuil setCannyHighThresh value\n    GeneralizedHoughGuil setCannyLowThresh value\n    GeneralizedHoughGuil setDp value\n    GeneralizedHoughGuil setLevels value\n    GeneralizedHoughGuil setMaxAngle value\n    GeneralizedHoughGuil setMaxScale value\n    GeneralizedHoughGuil setMinDist value\n    GeneralizedHoughGuil setMinAngle value\n    GeneralizedHoughGuil setMinScale value\n    GeneralizedHoughGuil setPosThresh value\n    GeneralizedHoughGuil setScaleStep value\n    GeneralizedHoughGuil setScaleThresh value\n    GeneralizedHoughGuil setXi value\n    GeneralizedHoughGuil setTemplate matrix\n    GeneralizedHoughGuil close\n\nPlease notice, GeneralizedHoughGuil command will only have 1 instance.\n\n    ::cv::LineSegmentDetector ?refine scale sigma_scale quant ang_th log_eps density_th n_bins?\n    LineSegmentDetector detect matrix\n    LineSegmentDetector drawSegments matrix lines\n    LineSegmentDetector close\n\nLineSegmentDetector's implementation has been removed from OpenCV version 3.4.6 to 3.4.15 and\nversion 4.1.0 to 4.5.3 due original code license conflict. Restored in 4.5.4 again after\n[Computation of a NFA](https://github.com/rafael-grompone-von-gioi/binomial_nfa) code published\nunder the MIT licens.\n\nPlease notice, LineSegmentDetector command will only have 1 instance.\n\n    ::cv::segmentation::IntelligentScissorsMB\n    IntelligentScissorsMB applyImage matrix\n    IntelligentScissorsMB buildMap x y\n    IntelligentScissorsMB getContour x y ?backward?\n    IntelligentScissorsMB setEdgeFeatureCannyParameters threshold1 threshold2 ?apertureSize L2gradient?\n    IntelligentScissorsMB setEdgeFeatureZeroCrossingParameters gradient_magnitude_min_value\n    IntelligentScissorsMB setGradientMagnitudeMaxLimit gradient_magnitude_threshold_max\n    IntelligentScissorsMB setWeights weight_non_edge weight_gradient_direction weight_gradient_magnitude\n    IntelligentScissorsMB close\n\nOpenCV 4.5.2 add `::cv::segmentation::IntelligentScissorsMB`.\nIt is used to find the path (contour) between two points which can be used for image segmentation.\n\n### videoio\n\n    ::cv::VideoCapture file/index filename/number ?flags? ?paramId value?\n    VideoCapture isOpened\n    VideoCapture read\n    VideoCapture get propId\n    VideoCapture set propId value\n    VideoCapture close\n\n`::cv::VideoCapture` is using to open video file or open a camera for video\ncapturing. Second argument is `file` or `index`, then the third arugment\nis filename or camera id.\n\n    ::cv::VideoWriter filename fourcc fps width height ?isColor?\n    VideoWriter isOpened\n    VideoWriter write matrix\n    VideoWriter get propId\n    VideoWriter set propId value\n    VideoWriter close\n\n### highgui\n\n    ::cv::namedWindow winname ?flags?\n    ::cv::imshow winname matrix\n    ::cv::waitKey delay\n    ::cv::moveWindow winname x y\n    ::cv::resizeWindow winname width height\n    ::cv::setWindowTitle winname title\n    ::cv::destroyWindow winname\n    ::cv::destroyAllWindows\n    ::cv::selectROI matrix ?showCrosshair fromCenter?\n    ::cv::setMouseCallback winname callback_code\n    ::cv::createTrackbar trackbarname winname init_value max_value callback_code\n    ::cv::getTrackbarPos trackbarname winname\n\n### features2d\n\n    ::cv::drawKeypoints matrix keypoints dst_image color_list ?flags?\n\n    ::cv::drawMatches matrix1 keypoints1 matrix2 keypoints2 matches1to2 dst_image matchColor_list singlePointColor_list ?flags?\n\nIf users setup dst_image to `None`, then flags should not set to `$::cv::DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG`.\nIf flags is set to `$::cv::DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG`, users should provide a dst matrix.\n\n    ::cv::FastFeatureDetector ?threshold nonmaxSuppression type?\n    FastFeatureDetector detect matrix\n    FastFeatureDetector getNonmaxSuppression\n    FastFeatureDetector getThreshold\n    FastFeatureDetector getType\n    FastFeatureDetector setNonmaxSuppression value\n    FastFeatureDetector setThreshold value\n    FastFeatureDetector setType value\n    FastFeatureDetector close\n\nPlease notice, FastFeatureDetector command will only have 1 instance.\n\n    ::cv::AgastFeatureDetector ?threshold nonmaxSuppression type?\n    AgastFeatureDetector detect matrix\n    AgastFeatureDetector getNonmaxSuppression\n    AgastFeatureDetector getThreshold\n    AgastFeatureDetector getType\n    AgastFeatureDetector setNonmaxSuppression value\n    AgastFeatureDetector setThreshold value\n    AgastFeatureDetector setType value\n    AgastFeatureDetector close\n\nPlease notice, AgastFeatureDetector command will only have 1 instance.\n\n    ::cv::MSER ?delta min_area max_area max_variation min_diversity max_evolution area_threshold min_margin edge_blur_size?\n    MSER detectRegions matrix\n    MSER getDelta\n    MSER getMaxArea\n    MSER getMinArea\n    MSER getPass2Only\n    MSER setDelta value\n    MSER setMaxArea value\n    MSER setMinArea value\n    MSER setPass2Only value\n    MSER close\n\nPlease notice, MSER command will only have 1 instance.\n\n    ::cv::ORB ?nfeatures scaleFactor nlevels edgeThreshold firstLevel WTA_K scoreType patchSize fastThreshold?\n    ORB detect matrix\n    ORB compute matrix keypoints\n    ORB detectAndCompute matrix\n    ORB getEdgeThreshold\n    ORB getFastThreshold\n    ORB getFirstLevel\n    ORB getMaxFeatures\n    ORB getNLevels\n    ORB getPatchSize\n    ORB getScaleFactor\n    ORB getScoreType\n    ORB getWTA_K\n    ORB setEdgeThreshold value\n    ORB setFastThreshold value\n    ORB setFirstLevel value\n    ORB setMaxFeatures value\n    ORB setNLevels value\n    ORB setPatchSize value\n    ORB setScaleFactor value\n    ORB setScoreType value\n    ORB setWTA_K value\n    ORB close\n\nPlease notice, ORB command will only have 1 instance.\n\n    ::cv::AKAZE ?descriptor_type descriptor_size descriptor_channels threshold nOctaves nOctaveLayers diffusivity?\n    AKAZE detect matrix\n    AKAZE compute matrix keypoints\n    AKAZE detectAndCompute matrix\n    AKAZE getDescriptorChannels\n    AKAZE getDescriptorSize\n    AKAZE getDescriptorType\n    AKAZE getDiffusivity\n    AKAZE getNOctaveLayers\n    AKAZE getNOctaves\n    AKAZE getThreshold\n    AKAZE setDescriptorChannels value\n    AKAZE setDescriptorSize value\n    AKAZE setDescriptorType value\n    AKAZE setDiffusivity value\n    AKAZE setNOctaveLayers value\n    AKAZE setNOctaves value\n    AKAZE setThreshold value\n    AKAZE close\n\nPlease notice, AKAZE command will only have 1 instance.\n\n    ::cv::BRISK ?thresh octaves patternScale?\n    BRISK detect matrix\n    BRISK compute matrix keypoints\n    BRISK detectAndCompute matrix\n    BRISK close\n\nPlease notice, BRISK command will only have 1 instance.\n\n    ::cv::KAZE ?extended upright threshold nOctaves nOctaveLayers diffusivity?\n    KAZE detect matrix\n    KAZE compute matrix keypoints\n    KAZE detectAndCompute matrix\n    KAZE getDiffusivity\n    KAZE getExtended\n    KAZE getNOctaveLayers\n    KAZE getNOctaves\n    KAZE getThreshold\n    KAZE getUpright\n    KAZE setDiffusivity value\n    KAZE setExtended value\n    KAZE setNOctaveLayers value\n    KAZE setNOctaves value\n    KAZE setThreshold value\n    KAZE setUpright value\n    KAZE close\n\nPlease notice, KAZE command will only have 1 instance.\n\n    ::cv::SIFT ?nfeatures nOctaveLayers contrastThreshold edgeThreshold sigma?\n    SIFT detect matrix\n    SIFT compute matrix keypoints\n    SIFT detectAndCompute matrix\n    SIFT close\n\nSIFT (Scale-Invariant Feature Transform) algorithm has been moved to\nthe OpenCV main repository in OpenCV 4.4.0 because its patent expired.\n\nPlease notice, SIFT command will only have 1 instance.\n\n    ::cv::AffineFeature backend ?maxTilt minTilt tiltStep rotateStepBase?\n    AffineFeature detect matrix\n    AffineFeature compute matrix keypoints\n    AffineFeature detectAndCompute matrix\n    AffineFeature close\n\nOpenCV 4.5.0 add AffineFeature (A-SIFT) API.\n\nPlease notice, AffineFeature command will only have 1 instance.\nAnd backend supports SIFT, KAZE, ORB, AKAZE and BRISK.\n\n    ::cv::BFMatcher normType crossCheck\n    BFMatcher match queryDescriptors trainDescriptors\n    BFMatcher knnMatch queryDescriptors trainDescriptors k\n    BFMatcher close\n\nPlease notice, BFMatcher command will only have 1 instance.\n\n    ::cv::FlannBasedMatcher ?algorithm indexParams?\n    FlannBasedMatcher match queryDescriptors trainDescriptors\n    FlannBasedMatcher knnMatch queryDescriptors trainDescriptors k\n    FlannBasedMatcher close\n\n`algorithm` can specify `FLANN_INDEX_LSH` or `FLANN_INDEX_KDTREE`. Default is FLANN_INDEX_LSH.\n\n`indexParams` is a list of LshIndexParams parameters (table_number, key_size, multi_probe_level) or\nKDTreeIndexParams parameters (trees).\n\nPlease notice, FlannBasedMatcher command will only have 1 instance.\n\n    ::cv::SimpleBlobDetector ?-minThreshold value? ?-maxThreshold value? ?-filterByArea boolean? ?-minArea value? ?-maxArea value? ?-filterByCircularity boolean? ?-minCircularity value? ?-maxCircularity value? ?-filterByConvexity boolean? ?-minConvexity value? ?-maxConvexity value? ?-filterByInertia boolean? ?-minInertiaRatio value? ?-maxInertiaRatio value?\n    SimpleBlobDetector detect matrix\n    SimpleBlobDetector close\n\nPlease notice, SimpleBlobDetector command will only have 1 instance.\n\n    ::cv::BOWKMeansTrainer clusterCount termCriteria ?attempts flags?\n    BOWKMeansTrainer add descriptors\n    BOWKMeansTrainer clear\n    BOWKMeansTrainer cluster\n    BOWKMeansTrainer descriptorsCount\n    BOWKMeansTrainer getDescriptors\n    BOWKMeansTrainer close\n\n    ::cv::BOWImgDescriptorExtractor dextractor dmatcher\n    BOWImgDescriptorExtractor compute matrix keypoints\n    BOWImgDescriptorExtractor descriptorSize\n    BOWImgDescriptorExtractor descriptorType\n    BOWImgDescriptorExtractor getVocabulary\n    BOWImgDescriptorExtractor setVocabulary vocabulary\n    BOWImgDescriptorExtractor close\n\n`::cv::BOWImgDescriptorExtractor` now supports SIFT or KAZE (dextractor) and FlannBasedMatcher (dmatcher).\n\n### calib3d\n\n    ::cv::findChessboardCorners image patternSize_width patternSize_height ?flags?\n    ::cv::drawChessboardCorners image patternSize_width patternSize_height corners patternWasFound\n    ::cv::calibrateCamera objectPoints_list imagePoints_list width height cameraMatrix distCoeffs\n    ::cv::getOptimalNewCameraMatrix cameraMatrix distCoeffs width height alpha nwidth nheight ?centerPrincipalPoint?\n    ::cv::undistort matrix cameraMatrix distCoeffs newCameraMatrix\n    ::cv::initUndistortRectifyMap cameraMatrix distCoeffs R newCameraMatrix width height m1type\n    ::cv::projectPoints objectPoints rvec tvec cameraMatrix distCoeffs\n    ::cv::solvePnP objectPoints imagePoints cameraMatrix distCoeffs\n\n`::cv::findChessboardCorners` returns a list of (retval, corners).\nThe retval value is a non-zero value if all of the corners are found and\nthey are placed in a certain order.\nAnd the retval value should be passed to `::cv::drawChessboardCorners`'s\nparameter `patternWasFound`.\n\n    ::cv::computeCorrespondEpilines matrix whichImage F\n    ::cv::estimateAffine2D matrix_1 matrix_2 ?method ransacReprojThreshold maxIters confidence refineIters?\n    ::cv::estimateAffinePartial2D matrix_1 matrix_2 ?method ransacReprojThreshold maxIters confidence refineIters?\n    ::cv::estimateAffine3D matrix_1 matrix_2 ?ransacThreshold confidence?\n    ::cv::findFundamentalMat matrix_1 matrix_2 ?method ransacReprojThreshold confidence?\n    ::cv::findHomography matrix_1 matrix_2 ?method ransacReprojThreshold maxIters confidence?\n\n`::cv::estimateAffine2D`, `::cv::estimateAffinePartial2D`, `::cv::estimateAffine3D`,\n`::cv::findFundamentalMat` and `::cv::findHomography` returns a list of (result, inliers or mask).\n\nNote that whenever an H matrix cannot be estimated, an empty one will be returned.\nYou can use MATRIX `empty` to check this.\n\n    ::cv::StereoBM ?numDisparities blockSize?\n    StereoBM compute matrix1 matrix2\n    StereoBM getPreFilterCap\n    StereoBM getPreFilterSize\n    StereoBM getPreFilterType\n    StereoBM getSmallerBlockSize\n    StereoBM getTextureThreshold\n    StereoBM getUniquenessRatio\n    StereoBM setPreFilterCap value\n    StereoBM setPreFilterSize value\n    StereoBM setPreFilterType value\n    StereoBM setSmallerBlockSize value\n    StereoBM setTextureThreshold value\n    StereoBM setUniquenessRatio value\n    StereoBM close\n\nPlease notice, StereoBM command will only have 1 instance.\n\n    ::cv::StereoSGBM ?minDisparity numDisparities blockSize P1 P2 disp12MaxDiff preFilterCap uniquenessRatio speckleWindowSize speckleRange mode?\n    StereoSGBM compute matrix1 matrix2\n    StereoSGBM getMode\n    StereoSGBM getP1\n    StereoSGBM getP2\n    StereoSGBM getPreFilterCap\n    StereoSGBM getUniquenessRatio\n    StereoSGBM setMode value\n    StereoSGBM setP1 value\n    StereoSGBM setP2 value\n    StereoSGBM setPreFilterCap value\n    StereoSGBM setUniquenessRatio value\n    StereoSGBM close\n\nPlease notice, StereoSGBM command will only have 1 instance.\n\n### video\n\n    ::cv::BackgroundSubtractorKNN ?history dist2Threshold detectShadows?\n    BackgroundSubtractorKNN apply matrix\n    BackgroundSubtractorKNN getDetectShadows\n    BackgroundSubtractorKNN getDist2Threshold\n    BackgroundSubtractorKNN getHistory\n    BackgroundSubtractorKNN setDetectShadows value\n    BackgroundSubtractorKNN setDist2Threshold value\n    BackgroundSubtractorKNN setHistory value\n    BackgroundSubtractorKNN close\n\nPlease notice, BackgroundSubtractorKNN command will only have 1 instance.\n\n    ::cv::BackgroundSubtractorMOG2 ?history varThreshold detectShadows?\n    BackgroundSubtractorMOG2 apply matrix\n    BackgroundSubtractorMOG2 getDetectShadows\n    BackgroundSubtractorMOG2 getHistory\n    BackgroundSubtractorMOG2 getVarThreshold\n    BackgroundSubtractorMOG2 setDetectShadows value\n    BackgroundSubtractorMOG2 setHistory value\n    BackgroundSubtractorMOG2 setVarThreshold value\n    BackgroundSubtractorMOG2 close\n\nPlease notice, BackgroundSubtractorMOG2 command will only have 1 instance.\n\n    ::cv::meanShift matrix x y width height termCriteria\n    ::cv::CamShift matrix x y width height termCriteria\n    ::cv::calcOpticalFlowPyrLK prevImg nextImg prevPts winSize_width winSize_height maxLevel termCriteria\n    ::cv::calcOpticalFlowFarneback prevImg nextImg pyr_scale levels winsize iterations poly_n poly_sigma flags\n    ::cv::readOpticalFlow path\n    ::cv::writeOpticalFlow path flow_matrix\n\n`::cv::readOpticalFlow` and `::cv::writeOpticalFlow` in OpenCV 3.x is in\ncontrib module (optflow). If you build this extension with OpenCV 3.x failed,\nyou need build optflow module or disable 2 commands by youself.\n\n    ::cv::computeECC matrix_1 matrix_2 ?mask?\n    ::cv::findTransformECC matrix_1 matrix_2 warpMatrix motionType ?termCriteria maks gaussFiltSize?\n\nUsers should use `::cv::Mat::eye` to create a 3x3 (for `$::Cv::MOTION_HOMOGRAPHY`)\nor 2x3 warpMatrix then pass to `::cv::findTransformECC`.\n\n    cv::TrackerMIL\n    TrackerMIL init matrix x y width height\n    TrackerMIL update matrix\n    TrackerMIL close\n\nOpenCV 4.5.1 add `cv::TrackerMIL`.\n\nPlease notice, TrackerMIL command will only have 1 instance.\n\n    cv::TrackerGOTURN ?modelBin modelTxt?\n    TrackerGOTURN init matrix x y width height\n    TrackerGOTURN update matrix\n    TrackerGOTURN close\n\nOpenCV 4.5.1 add `cv::TrackerGOTURN`.\nYou can get related files from [OpenCV extra](https://github.com/opencv/opencv_extra/tree/c4219d5eb3105ed8e634278fad312a1a8d2c182d/testdata/tracking) or\n[here](https://github.com/Mogball/goturn-files).\nIf uesrs need more info, I think you can check [OpenCV documentation](https://docs.opencv.org/master/d7/d4c/classcv_1_1TrackerGOTURN.html).\n\nPlease notice, TrackerGOTURN command will only have 1 instance.\n\n    cv::TrackerDaSiamRPN ?-model value? ?-kernel_cls1 value? ?-kernel_r1 value? ?-backend value? ?-target value?\n    TrackerDaSiamRPN init matrix x y width height\n    TrackerDaSiamRPN update matrix\n    TrackerDaSiamRPN getTrackingScore\n    TrackerDaSiamRPN close\n\nOpenCV 4.5.3 add `cv::TrackerDaSiamRPN`. You can get links to onnx models from\n[C++ sample](https://github.com/opencv/opencv/blob/61359a5bd05fc6f808644c7a1e73ca2e47e0e9fe/samples/dnn/dasiamrpn_tracker.cpp).\n\nPlease notice, TrackerDaSiamRPN command will only have 1 instance.\n\n### photo\n\n    ::cv::inpaint matrix inpaintMask inpaintRadius flags\n    ::cv::decolor matrix\n\n    ::cv::fastNlMeansDenoising matrix ?h templateWindowSize searchWindowSize?\n    ::cv::fastNlMeansDenoisingColored matrix ?h hColor templateWindowSize searchWindowSize?\n\n`::cv::fastNlMeansDenoising` expected to be applied to grayscale images.\n`::cv::fastNlMeansDenoisingColored` is for colored images.\n\n    ::cv::colorChange matrix mask red_mul green_mul blue_mul\n    ::cv::illuminationChange matrix mask alpha beta\n    ::cv::textureFlattening matrix mask low_threshold high_threshold ?kernel_size?\n    ::cv::seamlessClone src_matrix dst_matrix mask x y flags\n\n    ::cv::detailEnhance matrix ?sigma_s sigma_r?\n    ::cv::edgePreservingFilter matrix ?flags sigma_s sigma_r?\n    ::cv::pencilSketch matrix ?sigma_s sigma_r shade_factor?\n    ::cv::stylization matrix ?sigma_s sigma_r?\n\nBelow are [High Dynamic Range Imaging](https://en.wikipedia.org/wiki/High-dynamic-range_imaging)\nrelated commands:\n\n    ::cv::AlignMTB ?max_bits exclude_range cut?\n    AlignMTB process matrix_list\n    AlignMTB close\n\nPlease notice, AlignMTB command will only have 1 instance.\n\n    ::cv::CalibrateDebevec ?samples lambda random?\n    CalibrateDebevec process matrix_list times_list\n    CalibrateDebevec close\n\nPlease notice, CalibrateDebevec command will only have 1 instance.\n\n    ::cv::MergeDebevec\n    MergeDebevec process matrix_list times_list response\n    MergeDebevec close\n\nPlease notice, MergeDebevec command will only have 1 instance.\n\n    ::cv::MergeMertens ?contrast_weight saturation_weight exposure_weight?\n    MergeMertens process matrix_list\n    MergeMertens close\n\nPlease notice, MergeMertens command will only have 1 instance.\n\n    ::cv::TonemapDrago ?gamma saturation bias?\n    TonemapDrago process hdrDebevec\n    TonemapDrago close\n\nPlease notice, TonemapDrago command will only have 1 instance.\n\n    ::cv::TonemapMantiuk ?gamma scale saturation?\n    TonemapMantiuk process hdrDebevec\n    TonemapMantiuk close\n\nPlease notice, TonemapMantiuk command will only have 1 instance.\n\n    ::cv::TonemapReinhard ?gamma intensity light_adapt color_adapt?\n    TonemapReinhard process hdrDebevec\n    TonemapReinhard close\n\nPlease notice, TonemapReinhard command will only have 1 instance.\n\n### stitching\n\n    ::cv::Stitcher mode\n    Stitcher stitch image_list\n    Stitcher close\n\nPlease notice, Stitcher command will only have 1 instance.\n\n### objdetect\n\n    ::cv::CascadeClassifier filename\n    CascadeClassifier detectMultiScale matrix ?scaleFactor minNeighbors minWidth minHeight maxWidth maxHeight?\n    CascadeClassifier close\n\n    ::cv::HOGDescriptor winSize_width winSize_height blockSize_width blockStride_width blockStride_height blockSize_height cellSize_width cellSize_height nbins ?derivAperture winSigma L2HysThreshold gammaCorrection nlevels signedGradient?\n    HOGDescriptor compute matrix ?winStride_width winStride_heigth padding_width padding_height?\n    HOGDescriptor detectMultiScale matrix ?hitThreshold winStride_width winStride_height padding_width padding_height scale finalThreshold useMeanshiftGrouping?\n    HOGDescriptor getDefaultPeopleDetector\n    HOGDescriptor getDaimlerPeopleDetector\n    HOGDescriptor setSVMDetector svmdetector\n    HOGDescriptor close\n\n    :cv::QRCodeDetector\n    QRCodeDetector detect matrix\n    QRCodeDetector detectAndDecode matrix\n    QRCodeDetector close\n\nPlease notice, QRCodeDetector looks like have issues\nif encoded QR Code data is long when I test it.\n\n    ::cv::FaceDetectorYN model config width height ?score_threshold nms_threshold top_k backend_id target_id?\n    FaceDetectorYN detect matrix\n    FaceDetectorYN close\n\nOpenCV 4.5.4 add `::cv::FaceDetectorYN` (DNN-based face detector).\nPlease notice, FaceDetectorYN command will only have 1 instance.\n\n    ::cv::FaceRecognizerSF model config ?backend_id target_id?\n    FaceRecognizerSF alignCrop matrix face_box\n    FaceRecognizerSF feature aligned_img\n    FaceRecognizerSF match face_feature1 face_feature2 ?dis_type?\n    FaceRecognizerSF close\n\nOpenCV 4.5.4 add `::cv::FaceRecognizerSF` (DNN-based face recognizer).\nPlease notice, FaceRecognizerSF command will only have 1 instance.\n\nYou can check [related tutorial](https://docs.opencv.org/master/d0/dd4/tutorial_dnn_face.html)\nand get model download link.\n\n    ::cv::QRCodeEncoder ?-correction_level value? ?-mode value? ?-structure_number value? ?-version value?\n    QRCodeEncoder encode string\n    QRCodeEncoder close\n\nOpenCV 4.5.5 add `::cv::QRCodeEncoder`.\nPlease notice, QRCodeEncoder command will only have 1 instance.\n\n    ::cv::BarcodeDetector\n    BarcodeDetector detectAndDecodeWithType matrix\n    BarcodeDetector close\n\nOpenCV 4.8.0 add `::cv::BarcodeDetector`.\nPlease notice, BarcodeDetector command will only have 1 instance.\n\n### ml\n\n    ::cv::ml::LogisticRegression\n    ::cv::ml::LogisticRegression::load filename\n    LogisticRegression get_learnt_thetas\n    LogisticRegression getIterations\n    LogisticRegression getLearningRate\n    LogisticRegression getMiniBatchSize\n    LogisticRegression getRegularization\n    LogisticRegression getTrainMethod\n    LogisticRegression setIterations value\n    LogisticRegression setLearningRate value\n    LogisticRegression setMiniBatchSize value\n    LogisticRegression setRegularization value\n    LogisticRegression setTrainMethod value\n    LogisticRegression setTermCriteria termCriteria\n    LogisticRegression train trainData ?flags?\n    LogisticRegression predict samples ?flags?\n    LogisticRegression save filename\n    LogisticRegression close\n\nPlease notice, LogisticRegression and LogisticRegression::load command will only have 1 instance.\n\n    ::cv::ml::NormalBayesClassifier\n    ::cv::ml::NormalBayesClassifier::load filename\n    NormalBayesClassifier train trainData ?flags?\n    NormalBayesClassifier predict samples ?flags?\n    NormalBayesClassifier predictProb samples ?flags?\n    NormalBayesClassifier save filename\n    NormalBayesClassifier close\n\nPlease notice, NormalBayesClassifier and NormalBayesClassifier::load command will only have 1 instance.\n\n    ::cv::ml::KNearest\n    ::cv::ml::KNearest::load filename\n    KNearest getAlgorithmType\n    KNearest getDefaultK\n    KNearest getEmax\n    KNearest getIsClassifier\n    KNearest setAlgorithmType value\n    KNearest setDefaultK value\n    KNearest setEmax\n    KNearest setIsClassifier\n    KNearest findNearest samples k\n    KNearest train trainData ?flags?\n    KNearest predict samples ?flags?\n    KNearest save filename\n    KNearest close\n\nPlease notice, KNearest and KNearest::load command will only have 1 instance.\n\n    ::cv::ml::SVM\n    ::cv::ml::SVM::load filename\n    SVM getC\n    SVM getCoef0\n    SVM getDegree\n    SVM getGamma\n    SVM getNu\n    SVM getP\n    SVM getType\n    SVM getKernelType\n    SVM getDecisionFunction\n    SVM getSupportVectors\n    SVM getUncompressedSupportVectors\n    SVM setC value\n    SVM setCoef0 value\n    SVM setDegree value\n    SVM setGamma value\n    SVM setNu value\n    SVM setP value\n    SVM setType value\n    SVM setKernel value\n    SVM setTermCriteria termCriteria\n    SVM train trainData ?flags?\n    SVM predict samples ?flags?\n    SVM save filename\n    SVM close\n\nPlease notice, SVM and SVM::load command will only have 1 instance.\n\n    ::cv::ml::SVMSGD\n    ::cv::ml::SVMSGD::load filename\n    SVMSGD getInitialStepSize\n    SVMSGD getMarginRegularization\n    SVMSGD getMarginType\n    SVMSGD getShift\n    SVMSGD getStepDecreasingPower\n    SVMSGD getSvmsgdType\n    SVMSGD getWeights\n    SVMSGD setInitialStepSize value\n    SVMSGD setMarginRegularization value\n    SVMSGD setMarginType value\n    SVMSGD setOptimalParameters svmsgdType marginType\n    SVMSGD setStepDecreasingPower value\n    SVMSGD setSvmsgdType value\n    SVMSGD setTermCriteria termCriteria\n    SVMSGD train trainData ?flags?\n    SVMSGD predict samples ?flags?\n    SVMSGD save filename\n    SVMSGD close\n\nPlease notice, SVMSGD and SVMSGD::load command will only have 1 instance.\n\n    ::cv::ml::DTrees\n    ::cv::ml::DTrees::load filename\n    DTrees getCVFolds\n    DTrees getMaxCategories\n    DTrees getMaxDepth\n    DTrees getMinSampleCount\n    DTrees getPriors\n    DTrees getRegressionAccuracy\n    DTrees getTruncatePrunedTree\n    DTrees getUse1SERule\n    DTrees getUseSurrogates\n    DTrees setCVFolds value\n    DTrees setMaxCategories value\n    DTrees setMaxDepth value\n    DTrees setMinSampleCount value\n    DTrees setPriors matrix\n    DTrees setRegressionAccuracy value\n    DTrees setTruncatePrunedTree value\n    DTrees setUse1SERule value\n    DTrees setUseSurrogates value\n    DTrees train trainData ?flags?\n    DTrees predict samples ?flags?\n    DTrees save filename\n    DTrees close\n\nPlease notice, DTrees and DTrees::load command will only have 1 instance.\n\n    ::cv::ml::Boost\n    ::cv::ml::Boost::load filename\n    Boost getCVFolds\n    Boost getMaxCategories\n    Boost getMaxDepth\n    Boost getMinSampleCount\n    Boost getPriors\n    Boost getRegressionAccuracy\n    Boost getTruncatePrunedTree\n    Boost getUse1SERule\n    Boost getUseSurrogates\n    Boost getBoostType\n    Boost getWeakCount\n    Boost getWeightTrimRate\n    Boost setCVFolds value\n    Boost setMaxCategories value\n    Boost setMaxDepth value\n    Boost setMinSampleCount value\n    Boost setPriors matrix\n    Boost setRegressionAccuracy value\n    Boost setTruncatePrunedTree value\n    Boost setUse1SERule value\n    Boost setUseSurrogates value\n    Boost setBoostType value\n    Boost setWeakCount value\n    Boost setWeightTrimRate value\n    Boost train trainData ?flags?\n    Boost predict samples ?flags?\n    Boost save filename\n    Boost close\n\nPlease notice, Boost and Boost::load command will only have 1 instance.\n\n    ::cv::ml::RTrees\n    ::cv::ml::RTrees::load filename\n    RTrees getCVFolds\n    RTrees getMaxCategories\n    RTrees getMaxDepth\n    RTrees getMinSampleCount\n    RTrees getPriors\n    RTrees getRegressionAccuracy\n    RTrees getTruncatePrunedTree\n    RTrees getUse1SERule\n    RTrees getUseSurrogates\n    RTrees getActiveVarCount\n    RTrees getCalculateVarImportance\n    RTrees getVarImportance\n    RTrees getVotes\n    RTrees setCVFolds value\n    RTrees setMaxCategories value\n    RTrees setMaxDepth value\n    RTrees setMinSampleCount value\n    RTrees setPriors matrix\n    RTrees setRegressionAccuracy value\n    RTrees setTruncatePrunedTree value\n    RTrees setUse1SERule value\n    RTrees setUseSurrogates value\n    RTrees setActiveVarCount value\n    RTrees setCalculateVarImportance value\n    RTrees setTermCriteria termCriteria\n    RTrees train trainData ?flags?\n    RTrees predict samples ?flags?\n    RTrees save filename\n    RTrees close\n\nPlease notice, RTrees and RTrees::load command will only have 1 instance.\n\n    ::cv::ml::ANN_MLP\n    ::cv::ml::ANN_MLP::load filename\n    ANN_MLP getAnnealCoolingRatio\n    ANN_MLP getAnnealFinalT\n    ANN_MLP getAnnealInitialT\n    ANN_MLP getAnnealItePerStep\n    ANN_MLP getBackpropMomentumScale\n    ANN_MLP getBackpropWeightScale\n    ANN_MLP getRpropDW0\n    ANN_MLP getRpropDWMax\n    ANN_MLP getRpropDWMin\n    ANN_MLP getRpropDWMinus\n    ANN_MLP getRpropDWPlus\n    ANN_MLP getLayerSizes\n    ANN_MLP getTrainMethod\n    ANN_MLP getWeights layerIdx\n    ANN_MLP setAnnealCoolingRatio value\n    ANN_MLP setAnnealFinalT value\n    ANN_MLP setAnnealInitialT value\n    ANN_MLP setAnnealItePerStep value\n    ANN_MLP setBackpropMomentumScale value\n    ANN_MLP setBackpropWeightScale value\n    ANN_MLP setRpropDW0 value\n    ANN_MLP setRpropDWMax value\n    ANN_MLP setRpropDWMin value\n    ANN_MLP setRpropDWMinus value\n    ANN_MLP setRpropDWPlus value\n    ANN_MLP setActivationFunction value ?param1 param2?\n    ANN_MLP setLayerSizes matrix\n    ANN_MLP setTrainMethod value ?param1 param2?\n    ANN_MLP setTermCriteria termCriteria\n    ANN_MLP train trainData ?flags?\n    ANN_MLP predict samples ?flags?\n    ANN_MLP save filename\n    ANN_MLP close\n\nPlease notice, ANN_MLP and ANN_MLP::load command will only have 1 instance.\n\n    ::cv::ml::TrainData samples layout responses\n    TrainData getTestResponses\n    TrainData getTestSamples\n    TrainData setTrainTestSplit count ?shuffle?\n    TrainData setTrainTestSplitRatio ratio ?shuffle?\n    TrainData close\n\nPlease notice, TrainData command will only have 1 instance.\n\n### dnn\n\n    ::cv::dnn::blobFromImage matrix scalefactor width height mean_color_list swapRB crop\n    ::cv::dnn::readNet model ?config framework?\n    ::cv::dnn::NMSBoxes bboxes scores score_threshold nms_threshold ?eta top_k?\n    ::cv::dnn::softNMSBoxes bboxes scores score_threshold nms_threshold ?top_k sigma method?\n    READNET getLayerNames\n    READNET getUnconnectedOutLayers\n    READNET getUnconnectedOutLayersNames\n    READNET setPreferableBackend backendId\n    READNET setPreferableTarget targetId\n    READNET setInput blob ?name scalefactor mean_color_list?\n    READNET forward ?name?\n    READNET forwardWithNames outBlobNames\n    READNET close\n\nOpenCV 4.5.4 add `::cv::dnn::softNMSBoxes`.\n\nIf you want to know supported framework, you can check\n[Deep Learning in OpenCV](https://github.com/opencv/opencv/wiki/Deep-Learning-in-OpenCV).\n\nUsers could check\n[official OpenCV documentation](https://docs.opencv.org/master/d6/d0f/group__dnn.html#ga3b34fe7a29494a6a4295c169a7d32422) to know about the different frameworks,\ntheir model files and the configuration files.\n\n    cv::dnn::TextDetectionModel_EAST model ?config?\n    TextDetectionModel_EAST detect matrix\n    TextDetectionModel_EAST getConfidenceThreshold\n    TextDetectionModel_EAST getNMSThreshold\n    TextDetectionModel_EAST setConfidenceThreshold value\n    TextDetectionModel_EAST setNMSThreshold value\n    TextDetectionModel_EAST setInputParams scalefactor width height mean_color_list swapRB ?crop?\n    TextDetectionModel_EAST close\n\nTextDetectionModel_EAST is the high-level API for text detection DL networks\ncompatible with EAST model. OpenCV 4.5.1 add the high-level API.\n\n    cv::dnn::TextDetectionModel_DB model ?config?\n    TextDetectionModel_DB detect matrix\n    TextDetectionModel_DB getBinaryThreshold\n    TextDetectionModel_DB getMaxCandidates\n    TextDetectionModel_DB getPolygonThreshold\n    TextDetectionModel_DB getUnclipRatio\n    TextDetectionModel_DB setBinaryThreshold value\n    TextDetectionModel_DB setMaxCandidates value\n    TextDetectionModel_DB setPolygonThreshold value\n    TextDetectionModel_DB setUnclipRatio value\n    TextDetectionModel_DB setInputParams scalefactor width height mean_color_list swapRB ?crop?\n    TextDetectionModel_DB close\n\nTextDetectionModel_DB is the high-level API for text detection DL networks\ncompatible with DB model. OpenCV 4.5.1 add the high-level API.\n\n    cv::dnn::TextRecognitionModel model ?config?\n    TextRecognitionModel recognize matrix\n    TextRecognitionModel getDecodeType\n    TextRecognitionModel getVocabulary\n    TextRecognitionModel setDecodeType value\n    TextRecognitionModel setVocabulary vocabulary\n    TextRecognitionModel setInputParams scalefactor width height mean_color_list swapRB ?crop?\n    TextRecognitionModel close\n\nTextRecognitionModel is the high-level API  for text recognition networks.\nOpenCV 4.5.1 add the high-level API.\n\nModel files download links are provided in\n[here](https://docs.opencv.org/master/d4/d43/tutorial_dnn_text_spotting.html).\n\n### thread support\n\n    ::cv::thread::info ?tag?\n    ::cv::thread::recv tag ?timeout?\n    ::cv::thread::send tag mat|None ?string?\n\nA simple mechanism to transfer `cv::Mat` from one Tcl thread to another\nwhere `tag` is the name of a queue. The `info` command without arguments\nreturns all currently known `tags`, the `info` command with a `tag` returns\nthe number of items in that queue. With `send` an item consisting of a\n`cv::Mat` or `None` and an optional `string` is added to the queue\nnamed `tag`. With `recv` a zero, one, or two element list is returned\nfrom the queue named `tag` with optional wait timeout in milliseconds\n(default timeout is 10 seconds). Zero elements means timeout condition,\none or two elements are the name/command of the received `cv::Mat` or\nempty element for `None`, and optional `string`.\n\nVariables\n=====\n\nThis extension defined below namespace variables:\n\nTypes -\n\n    ::cv::CV_8U\n    ::cv::CV_8S\n    ::cv::CV_16U\n    ::cv::CV_16S\n    ::cv::CV_32S\n    ::cv::CV_32F\n    ::cv::CV_64F\n\n    ::cv::CV_8UC1\n    ::cv::CV_8UC2\n    ::cv::CV_8UC3\n    ::cv::CV_8UC4\n    ::cv::CV_8SC1\n    ::cv::CV_8SC2\n    ::cv::CV_8SC3\n    ::cv::CV_8SC4\n    ::cv::CV_16UC1\n    ::cv::CV_16UC2\n    ::cv::CV_16UC3\n    ::cv::CV_16UC4\n    ::cv::CV_16SC1\n    ::cv::CV_16SC2\n    ::cv::CV_16SC3\n    ::cv::CV_16SC4\n    ::cv::CV_32SC1\n    ::cv::CV_32SC2\n    ::cv::CV_32SC3\n    ::cv::CV_32SC4\n    ::cv::CV_32FC1\n    ::cv::CV_32FC2\n    ::cv::CV_32FC3\n    ::cv::CV_32FC4\n    ::cv::CV_64FC1\n    ::cv::CV_64FC2\n    ::cv::CV_64FC3\n    ::cv::CV_64FC4\n\n`::cv::FileStorage` flags -\n\n    ::cv::FileStorage::READ\n    ::cv::FileStorage::WRITE\n    ::cv::FileStorage::APPEND\n    ::cv::FileStorage::MEMORY\n    ::cv::FileStorage::FORMAT_AUTO\n    ::cv::FileStorage::FORMAT_XML\n    ::cv::FileStorage::FORMAT_YAML\n    ::cv::FileStorage::FORMAT_JSON\n    ::cv::FileStorage::BASE64\n    ::cv::FileStorage::WRITE_BASE64\n\n`::cv::sortIdx` flags -\n\n    ::cv::SORT_EVERY_ROW\n    ::cv::SORT_EVERY_COLUMN\n    ::cv::SORT_ASCENDING\n    ::cv::SORT_DESCENDING\n\n`::cv::imread` flags -\n\n    ::cv::IMREAD_UNCHANGED\n    ::cv::IMREAD_GRAYSCALE\n    ::cv::IMREAD_COLOR\n    ::cv::IMREAD_ANYDEPTH\n    ::cv::IMREAD_ANYCOLOR\n    ::cv::IMREAD_LOAD_GDAL\n    ::cv::IMREAD_REDUCED_GRAYSCALE_2\n    ::cv::IMREAD_REDUCED_COLOR_2\n    ::cv::IMREAD_REDUCED_GRAYSCALE_4\n    ::cv::IMREAD_REDUCED_COLOR_4\n    ::cv::IMREAD_REDUCED_GRAYSCALE_8\n    ::cv::IMREAD_REDUCED_COLOR_8\n    ::cv::IMREAD_IGNORE_ORIENTATION\n\n`VideoCapture` command flags -\n\n    ::cv::CAP_ANY\n    ::cv::CAP_VFW\n    ::cv::CAP_V4L\n    ::cv::CAP_V4L2\n    ::cv::CAP_FIREWIRE\n    ::cv::CAP_FIREWARE\n    ::cv::CAP_IEEE1394\n    ::cv::CAP_DC1394\n    ::cv::CAP_CMU1394\n    ::cv::CAP_QT\n    ::cv::CAP_UNICAP\n    ::cv::CAP_DSHOW\n    ::cv::CAP_PVAPI\n    ::cv::CAP_OPENNI\n    ::cv::CAP_OPENNI_ASUS\n    ::cv::CAP_ANDROID\n    ::cv::CAP_XIAPI\n    ::cv::CAP_AVFOUNDATION\n    ::cv::CAP_GIGANETIX\n    ::cv::CAP_MSMF\n    ::cv::CAP_WINRT\n    ::cv::CAP_INTELPERC\n    ::cv::CAP_REALSENSE\n    ::cv::CAP_OPENNI2\n    ::cv::CAP_OPENNI2_ASUS\n    ::cv::CAP_OPENNI2_ASTRA\n    ::cv::CAP_GPHOTO2\n    ::cv::CAP_GSTREAMER\n    ::cv::CAP_FFMPEG\n    ::cv::CAP_IMAGES\n    ::cv::CAP_ARAVIS\n    ::cv::CAP_OPENCV_MJPEG\n    ::cv::CAP_INTEL_MFX\n    ::cv::CAP_XINE\n    ::cv::CAP_UEYE\n\n`VideoCapture` and `VideoWriter` propId -\n\n    ::cv::CAP_PROP_POS_MSEC\n    ::cv::CAP_PROP_POS_FRAMES\n    ::cv::CAP_PROP_POS_AVI_RATIO\n    ::cv::CAP_PROP_FRAME_WIDTH\n    ::cv::CAP_PROP_FRAME_HEIGHT\n    ::cv::CAP_PROP_FPS\n    ::cv::CAP_PROP_FOURCC\n    ::cv::CAP_PROP_FRAME_COUNT\n    ::cv::CAP_PROP_FORMAT\n    ::cv::CAP_PROP_MODE\n    ::cv::CAP_PROP_BRIGHTNESS\n    ::cv::CAP_PROP_CONTRAST\n    ::cv::CAP_PROP_SATURATION\n    ::cv::CAP_PROP_HUE\n    ::cv::CAP_PROP_GAIN\n    ::cv::CAP_PROP_EXPOSURE\n    ::cv::CAP_PROP_CONVERT_RGB\n    ::cv::CAP_PROP_WHITE_BALANCE_BLUE_U\n    ::cv::CAP_PROP_RECTIFICATION\n    ::cv::CAP_PROP_MONOCHROME\n    ::cv::CAP_PROP_SHARPNESS\n    ::cv::CAP_PROP_AUTO_EXPOSURE\n    ::cv::CAP_PROP_GAMMA\n    ::cv::CAP_PROP_TEMPERATURE\n    ::cv::CAP_PROP_TRIGGER\n    ::cv::CAP_PROP_TRIGGER_DELAY\n    ::cv::CAP_PROP_WHITE_BALANCE_RED_V\n    ::cv::CAP_PROP_ZOOM\n    ::cv::CAP_PROP_FOCUS\n    ::cv::CAP_PROP_GUID\n    ::cv::CAP_PROP_ISO_SPEED\n    ::cv::CAP_PROP_BACKLIGHT\n    ::cv::CAP_PROP_PAN\n    ::cv::CAP_PROP_TILT\n    ::cv::CAP_PROP_ROLL\n    ::cv::CAP_PROP_IRIS\n    ::cv::CAP_PROP_SETTINGS\n    ::cv::CAP_PROP_BUFFERSIZE\n    ::cv::CAP_PROP_AUTOFOCUS\n    ::cv::CAP_PROP_SAR_NUM\n    ::cv::CAP_PROP_SAR_DEN\n    ::cv::CAP_PROP_BACKEND\n    ::cv::CAP_PROP_CHANNEL\n    ::cv::CAP_PROP_AUTO_WB\n    ::cv::CAP_PROP_WB_TEMPERATURE\n    ::cv::CAP_PROP_CODEC_PIXEL_FORMAT\n    ::cv::CAP_PROP_BITRATE\n    ::cv::CAP_PROP_ORIENTATION_META\n    ::cv::CAP_PROP_ORIENTATION_AUTO\n    ::cv::CAP_PROP_HW_ACCELERATION\n    ::cv::CAP_PROP_HW_DEVICE\n\n`VideoWriter` propId -\n\n    ::cv::VIDEOWRITER_PROP_QUALITY\n    ::cv::VIDEOWRITER_PROP_FRAMEBYTES\n    ::cv::VIDEOWRITER_PROP_NSTRIPES\n    ::cv::VIDEOWRITER_PROP_IS_COLOR\n    ::cv::VIDEOWRITER_PROP_DEPTH\n    ::cv::VIDEOWRITER_PROP_HW_ACCELERATION\n    ::cv::VIDEOWRITER_PROP_HW_DEVICE\n\n`::cv::cvtColor` code -\n\n    ::cv::COLOR_BGR2BGRA\n    ::cv::COLOR_RGB2RGBA\n    ::cv::COLOR_BGRA2BGR\n    ::cv::COLOR_RGBA2RGB\n    ::cv::COLOR_BGR2RGBA\n    ::cv::COLOR_RGB2BGRA\n    ::cv::COLOR_RGBA2BGR\n    ::cv::COLOR_BGRA2RGB\n    ::cv::COLOR_BGR2RGB\n    ::cv::COLOR_RGB2BGR\n    ::cv::COLOR_BGRA2RGBA\n    ::cv::COLOR_RGBA2BGRA\n    ::cv::COLOR_BGR2GRAY\n    ::cv::COLOR_RGB2GRAY\n    ::cv::COLOR_GRAY2BGR\n    ::cv::COLOR_GRAY2RGB\n    ::cv::COLOR_GRAY2BGRA\n    ::cv::COLOR_GRAY2RGBA\n    ::cv::COLOR_BGRA2GRAY\n    ::cv::COLOR_RGBA2GRAY\n    ::cv::COLOR_BGR2BGR565\n    ::cv::COLOR_RGB2BGR565\n    ::cv::COLOR_BGR5652BGR\n    ::cv::COLOR_BGR5652RGB\n    ::cv::COLOR_BGRA2BGR565\n    ::cv::COLOR_RGBA2BGR565\n    ::cv::COLOR_BGR5652BGRA\n    ::cv::COLOR_BGR5652RGBA\n    ::cv::COLOR_GRAY2BGR565\n    ::cv::COLOR_BGR5652GRAY\n    ::cv::COLOR_BGR2BGR555\n    ::cv::COLOR_RGB2BGR555\n    ::cv::COLOR_BGR5552BGR\n    ::cv::COLOR_BGR5552RGB\n    ::cv::COLOR_BGRA2BGR555\n    ::cv::COLOR_RGBA2BGR555\n    ::cv::COLOR_BGR5552BGRA\n    ::cv::COLOR_BGR5552RGBA\n    ::cv::COLOR_GRAY2BGR555\n    ::cv::COLOR_BGR5552GRAY\n    ::cv::COLOR_BGR2XYZ\n    ::cv::COLOR_RGB2XYZ\n    ::cv::COLOR_XYZ2BGR\n    ::cv::COLOR_XYZ2RGB\n    ::cv::COLOR_BGR2YCrCb\n    ::cv::COLOR_RGB2YCrCb\n    ::cv::COLOR_YCrCb2BGR\n    ::cv::COLOR_YCrCb2RGB\n    ::cv::COLOR_BGR2HSV\n    ::cv::COLOR_RGB2HSV\n    ::cv::COLOR_BGR2Lab\n    ::cv::COLOR_RGB2Lab\n    ::cv::COLOR_BGR2Luv\n    ::cv::COLOR_RGB2Luv\n    ::cv::COLOR_BGR2HLS\n    ::cv::COLOR_RGB2HLS\n    ::cv::COLOR_HSV2BGR\n    ::cv::COLOR_HSV2RGB\n    ::cv::COLOR_Lab2BGR\n    ::cv::COLOR_Lab2RGB\n    ::cv::COLOR_Luv2BGR\n    ::cv::COLOR_Luv2RGB\n    ::cv::COLOR_HLS2BGR\n    ::cv::COLOR_HLS2RGB\n    ::cv::COLOR_BGR2HSV_FULL\n    ::cv::COLOR_RGB2HSV_FULL\n    ::cv::COLOR_BGR2HLS_FULL\n    ::cv::COLOR_RGB2HLS_FULL\n    ::cv::COLOR_HSV2BGR_FULL\n    ::cv::COLOR_HSV2RGB_FULL\n    ::cv::COLOR_HLS2BGR_FULL\n    ::cv::COLOR_HLS2RGB_FULL\n    ::cv::COLOR_LBGR2Lab\n    ::cv::COLOR_LRGB2Lab\n    ::cv::COLOR_LBGR2Luv\n    ::cv::COLOR_LRGB2Luv\n    ::cv::COLOR_Lab2LBGR\n    ::cv::COLOR_Lab2LRGB\n    ::cv::COLOR_Luv2LBGR\n    ::cv::COLOR_Luv2LRGB\n    ::cv::COLOR_BGR2YUV\n    ::cv::COLOR_RGB2YUV\n    ::cv::COLOR_YUV2BGR\n    ::cv::COLOR_YUV2RGB\n    ::cv::COLOR_YUV2RGB_NV12\n    ::cv::COLOR_YUV2BGR_NV12\n    ::cv::COLOR_YUV2RGB_NV21\n    ::cv::COLOR_YUV2BGR_NV21\n    ::cv::COLOR_YUV420sp2RGB\n    ::cv::COLOR_YUV420sp2BGR\n    ::cv::COLOR_YUV2RGBA_NV12\n    ::cv::COLOR_YUV2BGRA_NV12\n    ::cv::COLOR_YUV2RGBA_NV21\n    ::cv::COLOR_YUV2BGRA_NV21\n    ::cv::COLOR_YUV420sp2RGBA\n    ::cv::COLOR_YUV420sp2BGRA\n    ::cv::COLOR_YUV2RGB_YV12\n    ::cv::COLOR_YUV2BGR_YV12\n    ::cv::COLOR_YUV2RGB_IYUV\n    ::cv::COLOR_YUV2BGR_IYUV\n    ::cv::COLOR_YUV2RGB_I420\n    ::cv::COLOR_YUV2BGR_I420\n    ::cv::COLOR_YUV420p2RGB\n    ::cv::COLOR_YUV420p2BGR\n    ::cv::COLOR_YUV2RGBA_YV12\n    ::cv::COLOR_YUV2BGRA_YV12\n    ::cv::COLOR_YUV2RGBA_IYUV\n    ::cv::COLOR_YUV2BGRA_IYUV\n    ::cv::COLOR_YUV2RGBA_I420\n    ::cv::COLOR_YUV2BGRA_I420\n    ::cv::COLOR_YUV420p2RGBA\n    ::cv::COLOR_YUV420p2BGRA\n    ::cv::COLOR_YUV2GRAY_420\n    ::cv::COLOR_YUV2GRAY_NV21\n    ::cv::COLOR_YUV2GRAY_NV12\n    ::cv::COLOR_YUV2GRAY_YV12\n    ::cv::COLOR_YUV2GRAY_IYUV\n    ::cv::COLOR_YUV2GRAY_I420\n    ::cv::COLOR_YUV420sp2GRAY\n    ::cv::COLOR_YUV420p2GRAY\n    ::cv::COLOR_YUV2RGB_UYVY\n    ::cv::COLOR_YUV2BGR_UYVY\n    ::cv::COLOR_YUV2RGB_Y422\n    ::cv::COLOR_YUV2BGR_Y422\n    ::cv::COLOR_YUV2RGB_UYNV\n    ::cv::COLOR_YUV2BGR_UYNV\n    ::cv::COLOR_YUV2RGBA_UYVY\n    ::cv::COLOR_YUV2BGRA_UYVY\n    ::cv::COLOR_YUV2RGBA_Y422\n    ::cv::COLOR_YUV2BGRA_Y422\n    ::cv::COLOR_YUV2RGBA_UYNV\n    ::cv::COLOR_YUV2BGRA_UYNV\n    ::cv::COLOR_YUV2RGB_YUY2\n    ::cv::COLOR_YUV2BGR_YUY2\n    ::cv::COLOR_YUV2RGB_YVYU\n    ::cv::COLOR_YUV2BGR_YVYU\n    ::cv::COLOR_YUV2RGB_YUYV\n    ::cv::COLOR_YUV2BGR_YUYV\n    ::cv::COLOR_YUV2RGB_YUNV\n    ::cv::COLOR_YUV2BGR_YUNV\n    ::cv::COLOR_YUV2RGBA_YUY2\n    ::cv::COLOR_YUV2BGRA_YUY2\n    ::cv::COLOR_YUV2RGBA_YVYU\n    ::cv::COLOR_YUV2BGRA_YVYU\n    ::cv::COLOR_YUV2RGBA_YUYV\n    ::cv::COLOR_YUV2BGRA_YUYV\n    ::cv::COLOR_YUV2RGBA_YUNV\n    ::cv::COLOR_YUV2BGRA_YUNV\n    ::cv::COLOR_YUV2GRAY_UYVY\n    ::cv::COLOR_YUV2GRAY_YUY2\n    ::cv::COLOR_YUV2GRAY_Y422\n    ::cv::COLOR_YUV2GRAY_UYNV\n    ::cv::COLOR_YUV2GRAY_YVYU\n    ::cv::COLOR_YUV2GRAY_YUYV\n    ::cv::COLOR_YUV2GRAY_YUNV\n    ::cv::COLOR_RGBA2mRGBA\n    ::cv::COLOR_mRGBA2RGBA\n    ::cv::COLOR_RGB2YUV_I420\n    ::cv::COLOR_BGR2YUV_I420\n    ::cv::COLOR_RGB2YUV_IYUV\n    ::cv::COLOR_BGR2YUV_IYUV\n    ::cv::COLOR_RGBA2YUV_I420\n    ::cv::COLOR_BGRA2YUV_I420\n    ::cv::COLOR_RGBA2YUV_IYUV\n    ::cv::COLOR_BGRA2YUV_IYUV\n    ::cv::COLOR_RGB2YUV_YV12\n    ::cv::COLOR_BGR2YUV_YV12\n    ::cv::COLOR_RGBA2YUV_YV12\n    ::cv::COLOR_BGRA2YUV_YV12\n    ::cv::COLOR_BayerBG2BGR\n    ::cv::COLOR_BayerGB2BGR\n    ::cv::COLOR_BayerRG2BGR\n    ::cv::COLOR_BayerGR2BGR\n    ::cv::COLOR_BayerBG2RGB\n    ::cv::COLOR_BayerGB2RGB\n    ::cv::COLOR_BayerRG2RGB\n    ::cv::COLOR_BayerGR2RGB\n    ::cv::COLOR_BayerBG2GRAY\n    ::cv::COLOR_BayerGB2GRAY\n    ::cv::COLOR_BayerRG2GRAY\n    ::cv::COLOR_BayerGR2GRAY\n    ::cv::COLOR_BayerBG2BGR_VNG\n    ::cv::COLOR_BayerGB2BGR_VNG\n    ::cv::COLOR_BayerRG2BGR_VNG\n    ::cv::COLOR_BayerGR2BGR_VNG\n    ::cv::COLOR_BayerBG2RGB_VNG\n    ::cv::COLOR_BayerGB2RGB_VNG\n    ::cv::COLOR_BayerRG2RGB_VNG\n    ::cv::COLOR_BayerGR2RGB_VNG\n    ::cv::COLOR_BayerBG2BGR_EA\n    ::cv::COLOR_BayerGB2BGR_EA\n    ::cv::COLOR_BayerRG2BGR_EA\n    ::cv::COLOR_BayerGR2BGR_EA\n    ::cv::COLOR_BayerBG2RGB_EA\n    ::cv::COLOR_BayerGB2RGB_EA\n    ::cv::COLOR_BayerRG2RGB_EA\n    ::cv::COLOR_BayerGR2RGB_EA\n    ::cv::COLOR_BayerBG2BGRA\n    ::cv::COLOR_BayerGB2BGRA\n    ::cv::COLOR_BayerRG2BGRA\n    ::cv::COLOR_BayerGR2BGRA\n    ::cv::COLOR_BayerBG2RGBA\n    ::cv::COLOR_BayerGB2RGBA\n    ::cv::COLOR_BayerRG2RGBA\n    ::cv::COLOR_BayerGR2RGBA\n    ::cv::COLOR_COLORCVT_MAX\n\nLine Types -\n\n    ::cv::FILLED\n    ::cv::LINE_4\n    ::cv::LINE_8\n    ::cv::LINE_AA\n\n`::cv::drawMarker` Marker Types -\n\n    ::cv::MARKER_CROSS\n    ::cv::MARKER_TILTED_CROSS\n    ::cv::MARKER_STAR\n    ::cv::MARKER_DIAMOND\n    ::cv::MARKER_SQUARE\n    ::cv::MARKER_TRIANGLE_UP\n    ::cv::MARKER_TRIANGLE_DOWN\n\n`::cv::putText` fontFace -\n\n    ::cv::FONT_HERSHEY_SIMPLEX\n    ::cv::FONT_HERSHEY_PLAIN\n    ::cv::FONT_HERSHEY_DUPLEX\n    ::cv::FONT_HERSHEY_COMPLEX\n    ::cv::FONT_HERSHEY_TRIPLEX\n    ::cv::FONT_HERSHEY_COMPLEX_SMALL\n    ::cv::FONT_HERSHEY_SCRIPT_SIMPLEX\n    ::cv::FONT_HERSHEY_SCRIPT_COMPLEX\n    ::cv::FONT_ITALIC\n\n`::cv::threshold` type -\n\n    ::cv::THRESH_BINARY\n    ::cv::THRESH_BINARY_INV\n    ::cv::THRESH_TRUNC\n    ::cv::THRESH_TOZERO\n    ::cv::THRESH_TOZERO_INV\n    ::cv::THRESH_MASK\n    ::cv::THRESH_OTSU\n    ::cv::THRESH_TRIANGLE\n\n`::cv::adaptiveThreshold` method -\n\n    ::cv::ADAPTIVE_THRESH_MEAN_C\n    ::cv::ADAPTIVE_THRESH_GAUSSIAN_C\n\n`::cv::copyMakeBorder` border type -\n\n    ::cv::BORDER_CONSTANT\n    ::cv::BORDER_REPLICATE\n    ::cv::BORDER_REFLECT\n    ::cv::BORDER_WRAP\n    ::cv::BORDER_REFLECT_101\n    ::cv::BORDER_TRANSPARENT\n    ::cv::BORDER_REFLECT101\n    ::cv::BORDER_DEFAULT\n    ::cv::BORDER_ISOLATED\n\n`::cv::getStructuringElement` morph shapes -\n\n    ::cv::MORPH_RECT\n    ::cv::MORPH_CROSS\n    ::cv::MORPH_ELLIPSE\n\n`::cv::morphologyEx` op type -\n\n    ::cv::MORPH_ERODE\n    ::cv::MORPH_DILATE\n    ::cv::MORPH_OPEN\n    ::cv::MORPH_CLOSE\n    ::cv::MORPH_GRADIENT\n    ::cv::MORPH_TOPHAT\n    ::cv::MORPH_BLACKHAT\n    ::cv::MORPH_HITMISS\n\n`::cv::matchShapes` method -\n\n    ::cv::CONTOURS_MATCH_I1\n    ::cv::CONTOURS_MATCH_I2\n    ::cv::CONTOURS_MATCH_I3\n\n`::cv::applyColorMap` colormap -\n\n    ::cv::COLORMAP_AUTUMN\n    ::cv::COLORMAP_BONE\n    ::cv::COLORMAP_JET\n    ::cv::COLORMAP_WINTER\n    ::cv::COLORMAP_RAINBOW\n    ::cv::COLORMAP_OCEAN\n    ::cv::COLORMAP_SUMMER\n    ::cv::COLORMAP_SPRING\n    ::cv::COLORMAP_COOL\n    ::cv::COLORMAP_HSV\n    ::cv::COLORMAP_PINK\n    ::cv::COLORMAP_HOT\n    ::cv::COLORMAP_PARULA\n    ::cv::COLORMAP_MAGMA\n    ::cv::COLORMAP_INFERNO\n    ::cv::COLORMAP_PLASMA\n    ::cv::COLORMAP_VIRIDIS\n    ::cv::COLORMAP_CIVIDIS\n    ::cv::COLORMAP_TWILIGHT\n    ::cv::COLORMAP_TWILIGHT_SHIFTED\n    ::cv::COLORMAP_TURBO\n    ::cv::COLORMAP_DEEPGREEN\n\n`::cv::namedWindow` flags -\n\n    ::cv::WINDOW_NORMAL\n    ::cv::WINDOW_AUTOSIZE\n    ::cv::WINDOW_OPENGL\n    ::cv::WINDOW_FULLSCREEN\n    ::cv::WINDOW_FREERATIO\n    ::cv::WINDOW_KEEPRATIO\n    ::cv::WINDOW_GUI_EXPANDED\n    ::cv::WINDOW_GUI_NORMAL\n\n`::cv::setMouseCallback` event -\n\n    ::cv::EVENT_MOUSEMOVE\n    ::cv::EVENT_LBUTTONDOWN\n    ::cv::EVENT_RBUTTONDOWN\n    ::cv::EVENT_MBUTTONDOWN\n    ::cv::EVENT_LBUTTONUP\n    ::cv::EVENT_RBUTTONUP\n    ::cv::EVENT_MBUTTONUP\n    ::cv::EVENT_LBUTTONDBLCLK\n    ::cv::EVENT_RBUTTONDBLCLK\n    ::cv::EVENT_MBUTTONDBLCLK\n    ::cv::EVENT_MOUSEWHEEL\n    ::cv::EVENT_MOUSEHWHEEL\n\n    ::cv::EVENT_FLAG_LBUTTON\n    ::cv::EVENT_FLAG_RBUTTON\n    ::cv::EVENT_FLAG_MBUTTON\n    ::cv::EVENT_FLAG_CTRLKEY\n    ::cv::EVENT_FLAG_SHIFTKEY\n    ::cv::EVENT_FLAG_ALTKEY\n\n`::cv::compareHist` method -\n\n    ::cv::HISTCMP_CORREL\n    ::cv::HISTCMP_CHISQR\n    ::cv::HISTCMP_INTERSECT\n    ::cv::HISTCMP_BHATTACHARYYA\n    ::cv::HISTCMP_HELLINGER\n    ::cv::HISTCMP_CHISQR_ALT\n    ::cv::HISTCMP_KL_DIV\n\nLineSegmentDetector modes -\n\n    ::cv::LSD_REFINE_NONE\n    ::cv::LSD_REFINE_STD\n    ::cv::LSD_REFINE_ADV\n\n`::cv::dft` command flags -\n\n    ::cv::DFT_INVERSE\n    ::cv::DFT_SCALE\n    ::cv::DFT_ROWS\n    ::cv::DFT_COMPLEX_OUTPUT\n    ::cv::DFT_REAL_OUTPUT\n    ::cv::DFT_COMPLEX_INPUT\n    ::cv::DCT_INVERSE\n    ::cv::DCT_ROWS\n\n`::cv::SVDecomp` flags -\n\n    ::cv::SVD_MODIFY_A\n    ::cv::SVD_NO_UV\n    ::cv::SVD_FULL_UV\n\n`::cv::norm`, `::cv::normalize` and `BFMatcher`norm_type -\n\n    ::cv::NORM_INF\n    ::cv::NORM_L1\n    ::cv::NORM_L2\n    ::cv::NORM_L2SQR\n    ::cv::NORM_HAMMING\n    ::cv::NORM_HAMMING2\n    ::cv::NORM_TYPE_MASK\n    ::cv::NORM_RELATIVE\n    ::cv::NORM_MINMAX\n\n`::cv::floodFill` command flag -\n\n    ::cv::FLOODFILL_FIXED_RANGE\n\n`:cv::remap`interpolation,\n`::cv::resize`, `::cv::warpAffine` and `::cv::warpPerspective` command flag -\n\n    ::cv::INTER_NEAREST\n    ::cv::INTER_LINEAR\n    ::cv::INTER_CUBIC\n    ::cv::INTER_AREA\n    ::cv::INTER_LANCZOS4\n    ::cv::INTER_LINEAR_EXACT\n    ::cv::INTER_NEAREST_EXACT\n    ::cv::INTER_MAX\n    ::cv::WARP_FILL_OUTLIERS\n    ::cv::WARP_INVERSE_MAP\n\n`::cv::warpPolar` mode -\n\n    ::cv::WARP_POLAR_LINEAR\n    ::cv::WARP_POLAR_LOG\n\n`::cv::compare` cmpop -\n\n    ::cv::CMP_EQ\n    ::cv::CMP_GT\n    ::cv::CMP_GE\n    ::cv::CMP_LT\n    ::cv::CMP_LE\n    ::cv::CMP_NE\n\n`::cv::reduce` rtype -\n\n    ::cv::REDUCE_SUM\n    ::cv::REDUCE_AVG\n    ::cv::REDUCE_MAX\n    ::cv::REDUCE_MIN\n    ::cv::REDUCE_SUM2\n\nOpenCV 4.8.0 add `::cv::REDUCE_SUM2` option to ::cv::reduce.\n\n`::cv::rotate` rotateCode -\n\n    ::cv::ROTATE_90_CLOCKWISE\n    ::cv::ROTATE_180\n    ::cv::ROTATE_90_COUNTERCLOCKWISE\n\n`MATRIX inv` method, `::cv::solve` flags and\n`::cv::getPerspectiveTransform` command solveMethod -\n\n    ::cv::DECOMP_LU\n    ::cv::DECOMP_SVD\n    ::cv::DECOMP_EIG\n    ::cv::DECOMP_CHOLESKY\n    ::cv::DECOMP_QR\n    ::cv::DECOMP_NORMAL\n\n`::cv::findContours` mode -\n\n    ::cv::RETR_EXTERNAL\n    ::cv::RETR_LIST\n    ::cv::RETR_CCOMP\n    ::cv::RETR_TREE\n    ::cv::RETR_FLOODFILL\n\n`::cv::findContours` method -\n\n    ::cv::CHAIN_APPROX_NONE\n    ::cv::CHAIN_APPROX_SIMPLE\n    ::cv::CHAIN_APPROX_TC89_L1\n    ::cv::CHAIN_APPROX_TC89_KCOS\n\n`::cv::HoughCircles` method -\n\n    ::cv::HOUGH_GRADIENT\n    ::cv::HOUGH_GRADIENT_ALT\n\n`::cv::matchTemplate` method -\n\n    ::cv::TM_SQDIFF\n    ::cv::TM_SQDIFF_NORMED\n    ::cv::TM_CCORR\n    ::cv::TM_CCORR_NORMED\n    ::cv::TM_CCOEFF\n    ::cv::TM_CCOEFF_NORMED\n\n`::cv::EMD` distType, `::cv::fitLine` distType and\n`::cv::distanceTransform` distanceType -\n\n    ::cv::DIST_L1\n    ::cv::DIST_L2\n    ::cv::DIST_C\n    ::cv::DIST_L12\n    ::cv::DIST_FAIR\n    ::cv::DIST_WELSCH\n    ::cv::DIST_HUBER\n\nGrabCut classes -\n\n    ::cv::GC_BGD\n    ::cv::GC_FGD\n    ::cv::GC_PR_BGD\n    ::cv::GC_PR_FGD\n\n`::cv::calcCovarMatrix` flags -\n\n    ::cv::COVAR_SCRAMBLED\n    ::cv::COVAR_NORMAL\n    ::cv::COVAR_USE_AVG\n    ::cv::COVAR_SCALE\n    ::cv::COVAR_ROWS\n    ::cv::COVAR_COLS\n\nKmeans flags -\n\n    ::cv::KMEANS_RANDOM_CENTERS\n    ::cv::KMEANS_PP_CENTERS\n    ::cv::KMEANS_USE_INITIAL_LABELS\n\nPCA flags -\n\n    ::cv::DATA_AS_ROW\n    ::cv::DATA_AS_COL\n    ::cv::USE_AVG\n\nTermCriteria type -\n\n    ::cv::COUNT\n    ::cv::EPS\n\n`FastFeatureDetector` detector type -\n\n    ::cv::DetectorType_TYPE_5_8\n    ::cv::DetectorType_TYPE_7_12\n    ::cv::DetectorType_TYPE_9_16\n\n`AgastFeatureDetector` detector type -\n\n    ::cv::DetectorType_AGAST_5_8\n    ::cv::DetectorType_AGAST_7_12d\n    ::cv::DetectorType_AGAST_7_12s\n    ::cv::DetectorType_OAST_9_16\n\n`ORB` Score type -\n\n    ::cv::ORB_HARRIS_SCORE\n    ::cv::ORB_FAST_SCORE\n\n`AKAZE` descriptor type -\n\n    ::cv::AKAZE_DESCRIPTOR_KAZE_UPRIGHT\n    ::cv::AKAZE_DESCRIPTOR_KAZE\n    ::cv::AKAZE_DESCRIPTOR_MLDB_UPRIGHT\n    ::cv::AKAZE_DESCRIPTOR_MLDB\n\n`KAZE` and `AKAZE` Diffusivity type -\n\n    ::cv::KAZE_DIFF_PM_G1\n    ::cv::KAZE_DIFF_PM_G2\n    ::cv::KAZE_DIFF_WEICKERT\n    ::cv::KAZE_DIFF_CHARBONNIER\n\n`drawKeypoints` and `drawMatches` flags\n\n    ::cv::DRAW_MATCHES_FLAGS_DEFAULT\n    ::cv::DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG\n    ::cv::DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS\n    ::cv::DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS\n\n`::cv::findTransformECC` motion type -\n\n    ::cv::MOTION_TRANSLATION\n    ::cv::MOTION_EUCLIDEAN\n    ::cv::MOTION_AFFINE\n    ::cv::MOTION_HOMOGRAPHY\n\n`findChessboardCorners` flags -\n\n    ::cv::CALIB_CB_ADAPTIVE_THRESH\n    ::cv::CALIB_CB_NORMALIZE_IMAGE\n    ::cv::CALIB_CB_FILTER_QUADS\n    ::cv::CALIB_CB_FAST_CHECK\n\n`findFundamentalMat` method -\n\n    ::cv::FM_7POINT\n    ::cv::FM_8POINT\n    ::cv::FM_LMEDS\n    ::cv::FM_RANSAC\n\n`findHomography` method -\n\n    ::cv::LMEDS\n    ::cv::RANSAC\n    ::cv::RHO\n\nStereoBM PreFilter type -\n\n    ::cv::PREFILTER_NORMALIZED_RESPONSE\n    ::cv::PREFILTER_XSOBEL\n\nStereoSGBM mode -\n\n    ::cv::StereoSGBM_MODE_SGBM\n    ::cv::StereoSGBM_MODE_HH\n    ::cv::StereoSGBM_MODE_SGBM_3WAY\n    ::cv::StereoSGBM_MODE_HH4\n\nQRCodeEncoder CorrectionLevel mode -\n\n    ::cv::QRCodeEncoder_CORRECT_LEVEL_L\n    ::cv::QRCodeEncoder_CORRECT_LEVEL_M\n    ::cv::QRCodeEncoder_CORRECT_LEVEL_Q\n    ::cv::QRCodeEncoder_CORRECT_LEVEL_H\n\nQRCodeEncoder EncodeMode mode -\n\n    ::cv::QRCodeEncoder_MODE_AUTO\n    ::cv::QRCodeEncoder_MODE_NUMERIC\n    ::cv::QRCodeEncoder_MODE_ALPHANUMERIC\n    ::cv::QRCodeEncoder_MODE_BYTE\n    ::cv::QRCodeEncoder_MODE_ECI\n    ::cv::QRCodeEncoder_MODE_KANJI\n    ::cv::QRCodeEncoder_MODE_STRUCTURED_APPEND\n\nPhoto inpaint flags -\n\n    ::cv::INPAINT_NS\n    ::cv::INPAINT_TELEA\n\nPhoto edgePreservingFilter flags -\n\n    ::cv::RECURS_FILTER\n    ::cv::NORMCONV_FILTER\n\nPhoto seamlessClone flags -\n\n    ::cv::NORMAL_CLONE\n    ::cv::MIXED_CLONE\n    ::cv::MONOCHROME_TRANSFER\n\nStitcher mode -\n\n    ::cv::PANORAMA\n    ::cv::SCANS\n\n`::cv::FaceRecognizerSF` dis_type -\n\n    ::cv::FR_COSINE\n    ::cv::FR_NORM_L2\n\nML sample types -\n\n    ::cv::ml::ROW_SAMPLE\n    ::cv::ml::COL_SAMPLE\n\nPredict options -\n\n    ::cv::ml::UPDATE_MODEL\n    ::cv::ml::RAW_OUTPUT\n    ::cv::ml::COMPRESSED_INPUT\n    ::cv::ml::PREPROCESSED_INPUT\n\nLogisticRegression Methods -\n\n    ::cv::ml::LOGISTIC_BATCH\n    ::cv::ml::LOGISTIC_MINI_BATCH\n\nLogisticRegression Regularization Kinds -\n\n    ::cv::ml::LOGISTIC_REG_DISABLE\n    ::cv::ml::LOGISTIC_REG_L1\n    ::cv::ml::LOGISTIC_REG_L2\n\nKNearest algorithm -\n\n    ::cv::ml::KNEAREST_BRUTE_FORCE\n    ::cv::ml::KNEAREST_KDTREE\n\nSVM types -\n\n    ::cv::ml::SVM_C_SVC\n    ::cv::ml::SVM_NU_SVC\n    ::cv::ml::SVM_ONE_CLASS\n    ::cv::ml::SVM_EPS_SVR\n    ::cv::ml::SVM_NU_SVR\n\nSVM kernel types -\n\n    ::cv::ml::SVM_LINEAR\n    ::cv::ml::SVM_POLY\n    ::cv::ml::SVM_RBF\n    ::cv::ml::SVM_SIGMOID\n    ::cv::ml::SVM_CHI2\n    ::cv::ml::SVM_INTER\n\nSVMSGD Margin Type -\n\n    ::cv::ml::SVMSGD_SOFT_MARGIN\n    ::cv::ml::SVMSGD_HARD_MARGIN\n\nSVMSGD Type -\n\n    ::cv::ml::SVMSGD_SGD\n    ::cv::ml::SVMSGD_ASGD\n\nBoost Types -\n\n    ::cv::ml::BOOST_DISCRETE\n    ::cv::ml::BOOST_REAL\n    ::cv::ml::BOOST_LOGIT\n    ::cv::ml::BOOST_GENTLE\n\nANN_MLP ActivationFunctions -\n\n    ::cv::ml::MLP_IDENTITY\n    ::cv::ml::MLP_SIGMOID_SYM\n    ::cv::ml::MLP_GAUSSIAN\n    ::cv::ml::MLP_RELU\n    ::cv::ml::MLP_LEAKYRELU\n\nANN_MLP Train Flags\n\n    ::cv::ml::MLP_UPDATE_WEIGHTS\n    ::cv::ml::MLP_NO_INPUT_SCALE\n    ::cv::ml::MLP_NO_OUTPUT_SCALE\n\nANN_MLP Training Methods -\n\n    ::cv::ml::MLP_BACKPROP\n    ::cv::ml::MLP_RPROP\n    ::cv::ml::MLP_ANNEAL\n\nREADNET `setPreferableBackend` backendId -\n\n    ::cv::dnn::DNN_BACKEND_DEFAULT\n    ::cv::dnn::DNN_BACKEND_HALIDE\n    ::cv::dnn::DNN_BACKEND_OPENCV\n    ::cv::dnn::DNN_BACKEND_VKCOM\n    ::cv::dnn::DNN_BACKEND_CUDA\n\nREADNET `setPreferableTarget` targetId -\n\n    ::cv::dnn::DNN_TARGET_CPU\n    ::cv::dnn::DNN_TARGET_OPENCL\n    ::cv::dnn::DNN_TARGET_OPENCL_FP16\n    ::cv::dnn::DNN_TARGET_MYRIAD\n    ::cv::dnn::DNN_TARGET_VULKAN\n    ::cv::dnn::DNN_TARGET_CUDA\n    ::cv::dnn::DNN_TARGET_CUDA_FP16\n    ::cv::dnn::DNN_TARGET_HDDL\n\n`cv::dnn::softNMSBoxes` method -\n\n    cv::dnn::SOFTNMS_LINEAR\n    cv::dnn::SOFTNMS_GAUSSIAN\n\nExamples\n=====\n\nBrighness and contrast -\n\n    package require opencv\n\n    if {$argc != 1} {\n        exit\n    }\n\n    set filename [lindex $argv 0]\n\n    try {\n        set img [::cv::imread $filename $::cv::IMREAD_COLOR]\n\n        set img2 [$img convertTo -1 1 100]\n        set img3 [$img convertTo -1 1 -100]\n        set img4 [$img convertTo -1 2 0]\n        set img5 [$img convertTo -1 0.5 0]\n\n        ::cv::namedWindow \"Source\" $::cv::WINDOW_NORMAL\n        ::cv::imshow \"Source\" $img\n        ::cv::namedWindow \"Brighness High\" $::cv::WINDOW_NORMAL\n        ::cv::imshow \"Brighness High\" $img2\n        ::cv::namedWindow \"Brighness Low\" $::cv::WINDOW_NORMAL\n        ::cv::imshow \"Brighness Low\" $img3\n        ::cv::namedWindow \"Contrast High\" $::cv::WINDOW_NORMAL\n        ::cv::imshow \"Contrast High\" $img4\n        ::cv::namedWindow \"Contrast Low\" $::cv::WINDOW_NORMAL\n        ::cv::imshow \"Contrast Low\" $img5\n\n        ::cv::waitKey 0\n        ::cv::destroyAllWindows\n\n        $img close\n        $img2 close\n        $img3 close\n        $img4 close\n        $img5 close\n    } on error {em} {\n        puts $em\n    }\n\nBelow is an example to apply a color map -\n\n    package require opencv\n\n    if {$argc != 1} {\n        exit\n    }\n\n    set filename [lindex $argv 0]\n\n    try {\n        set img [::cv::imread $filename $::cv::IMREAD_COLOR]\n\n        set img2 [::cv::applyColorMap $img $::cv::COLORMAP_RAINBOW]\n\n        ::cv::namedWindow \"Display Image\" $::cv::WINDOW_AUTOSIZE\n        ::cv::imshow \"Display Image\" $img\n        ::cv::namedWindow \"Display Image 2\" $::cv::WINDOW_AUTOSIZE\n        ::cv::imshow \"Display Image 2\" $img2\n        ::cv::waitKey 0\n        ::cv::destroyAllWindows\n\n        $img close\n        $img2 close\n    } on error {em} {\n        puts $em\n    }\n\nFlip and Rotate -\n\n    package require opencv\n\n    if {$argc != 1} {\n        exit\n    }\n\n    set filename [lindex $argv 0]\n\n    try {\n        set img [::cv::imread $filename $::cv::IMREAD_COLOR]\n\n        # 0 means flipping around the x-axis\n        set f_img [::cv::flip $img 0]\n\n        # Rotate by 270 degrees clockwise\n        set r_img [::cv::rotate $img $::cv::ROTATE_90_COUNTERCLOCKWISE]\n\n        ::cv::namedWindow \"Image\" $::cv::WINDOW_AUTOSIZE\n        ::cv::imshow \"Image\" $img\n        ::cv::namedWindow \"Flip\" $::cv::WINDOW_AUTOSIZE\n        ::cv::imshow \"Flip\" $f_img\n        ::cv::namedWindow \"Rotate\" $::cv::WINDOW_AUTOSIZE\n        ::cv::imshow \"Rotate\" $r_img\n        ::cv::waitKey 0\n        ::cv::destroyAllWindows\n\n        $img close\n        $f_img close\n        $r_img close\n    } on error {em} {\n        puts $em\n    }\n\nImage Rotation and Translation -\n\n    package require opencv\n\n    if {$argc != 1} {\n        puts \"Please give a file name.\"\n    }\n\n    set filename [lindex $argv 0]\n\n    try {\n        set img1 [cv::imread $filename]\n\n        # Rotation\n        set matrix1 [::cv::getRotationMatrix2D [expr [$img1 cols]/2] [expr [$img1 rows]/2] 45 1]\n        set img2 [::cv::warpAffine $img1 $matrix1 [$img1 cols] [$img1 rows]]\n\n        # Translation\n        set matrix2 [cv::Mat::Mat 2 3 $::cv::CV_64FC1]\n        $matrix2 setData [list 1.0 0.0 100 0.0 1.0 100]\n        set img3 [::cv::warpAffine $img1 $matrix2 [$img1 cols] [$img1 rows]]\n\n        # Wrap\n        set cols [$img1 cols]\n        set rows [$img1 rows]\n        set matrix3 [::cv::getAffineTransform \\\n              [list 0 0 [expr $cols-1] 0 0 [expr $rows-1]] \\\n              [list 0 [expr $rows * 0.33] [expr $cols*0.85] [expr $rows*0.25] \\\n                   [expr $cols*0.15] [expr $rows*0.7]]]\n        set img4 [::cv::warpAffine $img1 $matrix3 [$img1 cols] [$img1 rows]]\n\n        # Output\n        ::cv::imwrite \"rotation.jpg\" $img2\n        ::cv::imwrite \"translation.jpg\" $img3\n        ::cv::imwrite \"wrap.jpg\" $img4\n\n        $matrix1 close\n        $matrix2 close\n        $matrix3 close\n        $img1 close\n        $img2 close\n        $img3 close\n        $img4 close\n    } on error {em} {\n        puts $em\n    }\n\nMorphological Operations example -\n\n    package require opencv\n\n    if {$argc != 1} {\n        exit\n    }\n\n    set filename [lindex $argv 0]\n\n    try {\n        set img [::cv::imread $filename $::cv::IMREAD_COLOR]\n\n        set kernel [::cv::getStructuringElement $::cv::MORPH_ELLIPSE 5 5]\n        set dst [::cv::morphologyEx $img $::cv::MORPH_ERODE $kernel]\n\n        ::cv::namedWindow \"Display Image\" $::cv::WINDOW_AUTOSIZE\n        ::cv::imshow \"Display Image\" $img\n        ::cv::namedWindow \"Display Image 2\" $::cv::WINDOW_AUTOSIZE\n        ::cv::imshow \"Display Image 2\" $dst\n        ::cv::waitKey 0\n        ::cv::destroyAllWindows\n\n        $img close\n        $dst close\n        $kernel close\n    } on error {em} {\n        puts $em\n    }\n\nBelow is an exmaple for Laplacian Operator:\n\n    package require opencv\n\n    if {$argc != 1} {\n        exit\n    }\n\n    set filename [lindex $argv 0]\n\n    try {\n        set img [::cv::imread $filename $::cv::IMREAD_COLOR]\n\n        # Remove noise by applying a Gaussian blur\n        set img2 [::cv::GaussianBlur $img 3 3 0 0 $::cv::BORDER_DEFAULT]\n\n        # Convert the original image to grayscale\n        set img3 [::cv::cvtColor $img2 $::cv::COLOR_BGR2GRAY]\n\n        # Applies a Laplacian operator to the grayscale image\n        set img4 [::cv::Laplacian $img3 3 1.0 0.0 $::cv::BORDER_DEFAULT]\n\n        # Display\n        ::cv::namedWindow \"Display Image\" $::cv::WINDOW_AUTOSIZE\n        ::cv::moveWindow \"Display Image\" 0 0\n        ::cv::imshow \"Display Image\" $img4\n        ::cv::waitKey 0\n        ::cv::destroyAllWindows\n\n        $img close\n        $img2 close\n        $img3 close\n        $img4 close\n    } on error {em} {\n        puts $em\n    }\n\nBelow is an example that apply OpenCV Look Up Table (LUT) to an image -\n\n    package require opencv\n\n    if {$argc != 1} {\n        exit\n    }\n\n    set filename [lindex $argv 0]\n\n    try {\n        set img [::cv::imread $filename $::cv::IMREAD_COLOR]\n        ::cv::namedWindow \"Display Image\" $::cv::WINDOW_AUTOSIZE\n\n        set luv_mat [cv::Mat::Mat 1 256 $::cv::CV_8UC1]\n        for {set i 0} {$i \u003c 256} {incr i} {\n            if {$i \u003e 64 \u0026\u0026 $i \u003c 196} {\n                $luv_mat at [list 0 $i] 0 0\n            } else {\n                $luv_mat at [list 0 $i] 0 $i\n            }\n        }\n\n        set img2 [::cv::LUT $img $luv_mat]\n        ::cv::imshow \"Display Image\" $img2\n\n        ::cv::waitKey 0\n        ::cv::destroyAllWindows\n\n        $luv_mat close\n        $img close\n        $img2 close\n    } on error {em} {\n        puts $em\n    }\n\nBelow is an example to add 2 images:\n\n    package require opencv\n\n    if {$argc != 2} {\n        puts \"Please give 2 image file name.\"\n        exit\n    }\n\n    set file1 [lindex $argv 0]\n    set file2 [lindex $argv 1]\n\n    try {\n        set img1 [::cv::imread $file1 $::cv::IMREAD_COLOR]\n        set img2 [::cv::imread $file2 $::cv::IMREAD_COLOR]\n\n        if {[$img1 rows] \u003c [$img2 rows] || [$img1 cols] \u003c [$img2 cols]} {\n            puts \"Image 1 has to bigger than image 2.\"\n        }\n\n        set img1rect [$img1 rect 0 0 [$img2 cols] [$img2 rows]]\n        set addimage [::cv::addWeighted $img1rect 0.5 $img2 0.5 0]\n        $addimage copyTo $img1rect\n\n        ::cv::namedWindow \"Display Image\" $::cv::WINDOW_AUTOSIZE\n        ::cv::imshow \"Display Image\" $img1\n        ::cv::waitKey 0\n        ::cv::destroyAllWindows\n\n        $img1rect close\n        $addimage close\n        $img1 close\n        $img2 close\n    } on error {em} {\n        puts $em\n    }\n\nPlay a video file -\n\n    package require opencv\n\n    if {$argc != 1} {\n        exit\n    }\n\n    set filename [lindex $argv 0]\n    set v [::cv::VideoCapture file $filename]\n    if {[$v isOpened]==0} {\n        puts \"Open Video file $filename failed.\"\n        exit\n    } else {\n        set fps [$v get $::cv::CAP_PROP_FPS]\n        puts \"Frames per second : $fps\"\n\n        set frame_count [$v get $::cv::CAP_PROP_FRAME_COUNT]\n        puts \"Frame count : $frame_count\"\n    }\n\n    while {[$v isOpened]==1} {\n        try {\n            set f [$v read]\n            ::cv::imshow \"Frame\" $f\n            $f close\n        } on error {em} {\n            break\n        }\n\n        set key [::cv::waitKey 10]\n        if {$key==[scan \"q\" %c] || $key == 27} {\n            break\n        }\n    }\n    $v close\n    ::cv::destroyAllWindows\n\nAccess camera using OpenCV and save to a video file -\n\n    package require opencv\n\n    if {$argc != 1} {\n        exit\n    }\n\n    set index [lindex $argv 0]\n    set v [::cv::VideoCapture index $index]\n    if {[$v isOpened]==0} {\n        puts \"Open camera $index failed.\"\n        exit\n    }\n\n    set width [$v get 3]\n    set height [$v get 4]\n    set w [::cv::VideoWriter output.avi MJPG 20.0 $width $height 1]\n    while {[$v isOpened]==1} {\n        try {\n            set f [$v read]\n            ::cv::imshow \"Frame\" $f\n            $w write $f\n            $f close\n        } on error {em} {\n            puts $em\n            break\n        }\n\n        set key [::cv::waitKey 1]\n        if {$key==[scan \"q\" %c]} {\n            break\n        }\n    }\n    $w close\n    $v close\n    ::cv::destroyAllWindows\n\nVideo CamShift example -\n\n    package require opencv\n\n    # The example file can be downloaded from:\n    # https://www.bogotobogo.com/python/OpenCV_Python/images/mean_shift_tracking/slow_traffic_small.mp4\n\n    set filename \"slow_traffic_small.mp4\"\n    set v [::cv::VideoCapture file $filename]\n    if {[$v isOpened]==0} {\n        puts \"Open Video file $filename failed.\"\n        exit\n    }\n\n    # Setup initial location of track window, simply hardcoded the values\n    set x 300\n    set y 200\n    set width 100\n    set height 50\n\n    # calcHist parameters\n    set channels [list 0]\n    set histSize [list 180]\n    set ranges [list 0 180]\n\n    set frame [$v read]\n\n    set roi [$frame crop $x $y $width $height]\n    set hsv_roi [::cv::cvtColor $roi $::cv::COLOR_BGR2HSV]\n    set mask [::cv::inRange $hsv_roi [list 0 60 32 0] [list 180 255 255 0]]\n    set hsv_hist [::cv::calcHist $hsv_roi $channels $mask 1 $histSize $ranges]\n    set roi_hist [::cv::normalize $hsv_hist 0 255 $::cv::NORM_MINMAX]\n\n    $frame close\n    $roi close\n    $hsv_roi close\n    $mask close\n    $hsv_hist close\n\n    set term [::cv::TermCriteria [expr $::cv::EPS | $::cv::COUNT] 10 1]\n\n    while {[$v isOpened]==1} {\n        try {\n            set frame [$v read]\n\n            if {$x \u003c 550 || $y \u003c 200} {\n                set hsv [cv::cvtColor $frame $::cv::COLOR_BGR2HSV]\n                set dst [cv::calcBackProject $hsv [list 0] $roi_hist [list 0 180]]\n                set result [::cv::CamShift $dst $x $y $width $height $term]\n                set x [lindex [lindex $result 0] 0]\n                set y [lindex [lindex $result 0] 1]\n                set width [lindex [lindex $result 0] 2]\n                set hehgit [lindex [lindex $result 0] 3]\n\n                set points [lindex $result 1]\n                set p0_x [lindex $points 0]\n                set p0_y [lindex $points 1]\n                set p1_x [lindex $points 2]\n                set p1_y [lindex $points 3]\n                set p2_x [lindex $points 4]\n                set p2_y [lindex $points 5]\n                set p3_x [lindex $points 6]\n                set p3_y [lindex $points 7]\n\n                ::cv::line $frame $p0_x $p0_y $p1_x $p1_y [list 255 0 0 0] 3\n                ::cv::line $frame $p1_x $p1_y $p2_x $p2_y [list 255 0 0 0] 3\n                ::cv::line $frame $p2_x $p2_y $p3_x $p3_y [list 255 0 0 0] 3\n                ::cv::line $frame $p3_x $p3_y $p0_x $p0_y [list 255 0 0 0] 3\n\n                $hsv close\n                $dst close\n            }\n\n            ::cv::imshow \"Frame\" $frame\n\n            $frame close\n        } on error {em} {\n            break\n        }\n\n        set key [::cv::waitKey 10]\n        if {$key==[scan \"q\" %c] || $key == 27} {\n            break\n        }\n    }\n    $term close\n    $v close\n    ::cv::destroyAllWindows\n\nLucas-Kanade Optical Flow in OpenCV -\n\n    package require opencv\n\n    # The example file can be downloaded from:\n    # https://www.bogotobogo.com/python/OpenCV_Python/images/mean_shift_tracking/slow_traffic_small.mp4\n\n    set filename \"slow_traffic_small.mp4\"\n    set v [::cv::VideoCapture file $filename]\n    if {[$v isOpened]==0} {\n        puts \"Open Video file $filename failed.\"\n        exit\n    }\n\n    # Create some random colors\n    set colors [list]\n    for {set i 0} {$i \u003c 100} {incr i} {\n        lappend colors [list [expr int(rand() * 255)] [expr int(rand() * 255)] [expr int(rand() * 255)] 0]\n    }\n\n    set frame [$v read]\n    set oldGray [::cv::cvtColor $frame $::cv::COLOR_BGR2GRAY]\n    set emptymask [::cv::Mat::Mat 0 0 $::cv::CV_8U]\n    set p0 [::cv::goodFeaturesToTrack $oldGray 100 0.3 7 $emptymask 7 0 0.04]\n\n    # Create a mask image for drawing purposes\n    set mask [::cv::Mat::Mat [$frame rows] [$frame cols] [$frame type] [list 0 0 0 0]]\n\n    $emptymask close\n    $frame close\n\n    while {[$v isOpened]==1} {\n        try {\n            set term [::cv::TermCriteria [expr $::cv::EPS | $::cv::COUNT] 10 0.03]\n            set frame [$v read]\n            set frameGray [::cv::cvtColor $frame $::cv::COLOR_BGR2GRAY]\n\n            set result [::cv::calcOpticalFlowPyrLK $oldGray $frameGray $p0 15 15 2 $term]\n            set p1 [lindex $result 0]\n            set status [lindex $result 1]\n            set err [lindex $result 2]\n\n            for {set i 0} {$i \u003c [$p1 rows]} {incr i} {\n                for {set j 0} {$j \u003c [$p1 cols]} {incr j} {\n                    set oldx [expr int([$p0 at [list $i $j] 0])]\n                    set oldy [expr int([$p0 at [list $i $j] 1])]\n                    set x [expr int([$p1 at [list $i $j] 0])]\n                    set y [expr int([$p1 at [list $i $j] 1])]\n\n                    if {[$status at [list $i $j] 0]==1} {\n                        ::cv::line $mask $x $y $oldx $oldy [lindex $colors $i] 2\n                        ::cv::circle $frame $x $y 5 [lindex $colors $i] -1\n                    }\n                }\n            }\n            set frame2 [::cv::add $frame $mask]\n\n            ::cv::imshow \"Frame\" $frame2\n\n            $err close\n            $status close\n            $p0 close\n            $oldGray close\n\n            set p0 $p1\n            set oldGray $frameGray\n\n            $frame close\n            $frame2 close\n            $term close\n        } on error {em} {\n            break\n        }\n\n        set key [::cv::waitKey 10]\n        if {$key==[scan \"q\" %c] || $key == 27} {\n            break\n        }\n    }\n    $p1 close\n    $frameGray close\n    $v close\n    ::cv::destroyAllWindows\n\nDense Optical Flow Example -\n\n    package require opencv\n\n    # The example file can be downloaded from:\n    # https://github.com/opencv/opencv/blob/master/samples/data/vtest.avi\n\n    set filename \"vtest.avi\"\n    set v [::cv::VideoCapture file $filename]\n    if {[$v isOpened]==0} {\n        puts \"Open Video file $filename failed.\"\n        exit\n    }\n\n    set frame [$v read]\n    set oldGray [::cv::cvtColor $frame $::cv::COLOR_BGR2GRAY]\n    $frame close\n\n    while {[$v isOpened]==1} {\n        try {\n            set frame [$v read]\n            set frameGray [::cv::cvtColor $frame $::cv::COLOR_BGR2GRAY]\n\n            set flow [cv::calcOpticalFlowFarneback $oldGray $frameGray 0.5 3 15 3 5 1.2 0]\n            set flowlist [cv::split $flow]\n            set uvalue [lindex $flowlist 0]\n            set vvalue [lindex $flowlist 1]\n\n            set result [cv::cartToPolar $uvalue $vvalue 1]\n            set mag [lindex $result 0]\n            set ang [lindex $result 1]\n\n            set hsv0 [$ang multiply [expr ((1.0 / 360.0) * (180.0 / 255.0))]]\n            set hsv1 [::cv::Mat::ones [$frame rows] [$frame cols] $::cv::CV_32F]\n            set hsv2 [cv::normalize $mag 0 1 $::cv::NORM_MINMAX]\n            set hsv [::cv::merge [list $hsv0 $hsv1 $hsv2]]\n\n            set hsv8 [$hsv convertTo $::cv::CV_8U 255.0 0]\n            set frame2 [::cv::cvtColor $hsv8 $::cv::COLOR_HSV2BGR]\n            ::cv::imshow \"Frame\" $frame2\n\n            $flow close\n            $uvalue close\n            $vvalue close\n            $mag close\n            $ang close\n            $hsv0 close\n            $hsv1 close\n            $hsv2 close\n            $hsv close\n            $hsv8 close\n            $oldGray close\n\n            set oldGray $frameGray\n\n            $frame close\n            $frame2 close\n        } on error {em} {\n            break\n        }\n\n        set key [::cv::waitKey 10]\n        if {$key==[scan \"q\" %c] || $key == 27} {\n            break\n        }\n    }\n    $frameGray close\n    $v close\n    ::cv::destroyAllWindows\n\nBelow is a selectROI example -\n\n    package require opencv\n\n    if {$argc != 1} {\n        exit\n    }\n\n    set filename [lindex $argv 0]\n\n    try {\n        set img [::cv::imread $filename $::cv::IMREAD_COLOR]\n\n        set rect [::cv::selectROI $img]\n        set x [lindex $rect 0]\n        set y [lindex $rect 1]\n        set width [lindex $rect 2]\n        set height [lindex $rect 3]\n\n        # Create a mask for the ROI\n        set mask [::cv::Mat::zeros [$img rows] [$img cols] [$img type]]\n        ::cv::rectangle $mask $x $y [expr $x+$width] [expr $y+$height] [list 255 255 255 0] -1\n\n        set img2 [::cv::colorChange $img $mask 2.0 0.5 0.5]\n\n        ::cv::namedWindow \"Display Result\" $::cv::WINDOW_AUTOSIZE\n        ::cv::imshow \"Display Result\" $img2\n        ::cv::waitKey 0\n        ::cv::destroyAllWindows\n\n        $img close\n        $mask close\n        $img2 close\n    } on error {em} {\n        puts $em\n    }\n\nBelow is a setMouseCallback test -\n\n    package require opencv\n\n    if {$argc != 1} {\n        exit\n    }\n\n    proc drawit {event x y flags} {\n        if {$event == $::cv::EVENT_LBUTTONUP} {\n            set scalar [list 0 0 255 0]\n            ::cv::circle $::img $x $y 25 $scalar 3 $::cv::LINE_8 0\n            ::cv::imshow \"Display Image\" $::img\n        }\n    }\n\n    set filename [lindex $argv 0]\n\n    try {\n        set img [::cv::imread $filename $::cv::IMREAD_COLOR]\n        ::cv::namedWindow \"Display Image\" $::cv::WINDOW_AUTOSIZE\n        ::cv::setMouseCallback \"Display Image\" drawit\n        ::cv::imshow \"Display Image\" $img\n        ::cv::waitKey 0\n        ::cv::destroyAllWindows\n\n        $img close\n    } on error {em} {\n        puts $em\n    }\n\nBelow is a createTrackbar test -\n\n    package require opencv\n\n    if {$argc != 1} {\n        exit\n    }\n\n    proc changeit {value} {\n        set img2 [::cv::Sobel $::img 1 0 $value 1.0 0.0 $::cv::BORDER_DEFAULT]\n        ::cv::imshow \"Display Image\" $img2\n        $img2 close\n    }\n\n    set filename [lindex $argv 0]\n\n    try {\n        set img [::cv::imread $filename $::cv::IMREAD_COLOR]\n        ::cv::namedWindow \"Display Image\" $::cv::WINDOW_AUTOSIZE\n        ::cv::createTrackbar \"Trackbar1\" \"Display Image\" 3 21 changeit\n        changeit 3\n\n        ::cv::waitKey 0\n        ::cv::destroyAllWindows\n\n        $img close\n    } on error {em} {\n        puts $em\n    }\n\nContours test -\n\n    package require opencv\n\n    if {$argc != 1} {\n        exit\n    }\n\n    set filename [lindex $argv 0]\n\n    try {\n        set image1 [::cv::imread $filename]\n        set image2 [::cv::cvtColor $image1 $::cv::COLOR_RGB2GRAY]\n        set image3 [::cv::threshold $image2 20 255 $::cv::THRESH_BINARY]\n        set contours [::cv::findContours $image3 $::cv::RETR_EXTERNAL $::cv::CHAIN_APPROX_SIMPLE]\n\n        ::cv::namedWindow \"Display Image\" $::cv::WINDOW_AUTOSIZE\n        ::cv::imshow \"Display Image\" $image1\n\n        ::cv::namedWindow \"Display Image 2\" $::cv::WINDOW_AUTOSIZE\n        ::cv::imshow \"Display Image 2\" $image3\n\n        set length [llength $contours]\n        set max 0\n        set maxindex 0\n        set bounding_rect [list]\n        set mycircle [list]\n        set myrect [list]\n        set myellipse [list]\n        set isellipse 1\n        for {set i 0} {$i \u003c $length} {incr i} {\n            set value [::cv::contourArea [lindex $contours $i] 0]\n            if {$value \u003e $max} {\n                set max $value\n                set maxindex $i\n                set contour [lindex $contours $i]\n                set bounding_rect [::cv::boundingRect $contour]\n                set mycircle [::cv::minEnclosingCircle $contour]\n\n                if {[catch {set myellipse [::cv::fitEllipse $contour]}]} {\n                    set myrect [::cv::minAreaRect $contour]\n                    set isellipse 0\n                }\n            }\n        }\n\n        ::cv::drawContours $image1 $contours -1 [list 255 0 0 0] -1 $::cv::LINE_8 2 0 0\n\n        set x1 [lindex $bounding_rect 0]\n        set y1 [lindex $bounding_rect 1]\n        set x2 [expr $x1 + [lindex $bounding_rect 2]]\n        set y2 [expr $y1 + [lindex $bounding_rect 3]]\n        set color [list 255 255 0 0]\n        ::cv::rectangle $image1 $x1 $y1 $x2 $y2 $color 1\n\n        set x1 [lindex $mycircle 0]\n        set y1 [lindex $mycircle 1]\n        set r [lindex $mycircle 2]\n        set color [list 0 255 255 0]\n        ::cv::circle $image1 $x1 $y1 $r $color 1\n\n        set color [list 255 0 255 0]\n        if {$isellipse} {\n            set x1 [lindex $myellipse 0]\n            set y1 [lindex $myellipse 1]\n            set w [expr [lindex $myellipse 2]/2]\n            set h [expr [lindex $myellipse 3]/2]\n            set r [lindex $myellipse 4]\n\n            ::cv::ellipse $image1 $x1 $y1 $w $h $r 0 360 $color 3\n        } else {\n            set box [::cv::boxPoints $myrect]\n            ::cv::drawContours $image1 [list $box] -1 $color 3 $::cv::LINE_8 2 0 0\n        }\n\n        ::cv::namedWindow \"Display Image 3\" $::cv::WINDOW_AUTOSIZE\n        ::cv::imshow \"Display Image 3\" $image1\n        ::cv::waitKey 0\n        ::cv::destroyAllWindows\n\n        $image3 close\n        $image2 close\n        $image1 close\n    } on error {em} {\n        puts $em\n    }\n\nConvex Hull test -\n\n    package require opencv\n\n    proc mysortproc {c1 c2} {\n        set value1 [::cv::contourArea $c1 0]\n        set value2 [::cv::contourArea $c2 0]\n\n        if {$value1 \u003e $value2} {\n            return -1\n        } elseif {$value1 \u003c $value2} {\n            return 1\n        } else {\n            return 0\n        }\n    }\n\n    if {$argc != 1} {\n        exit\n    }\n\n    set filename [lindex $argv 0]\n\n    try {\n        set image1 [::cv::imread $filename]\n\n        set skinColorUpper [list 15 204 153 0]\n        set skinColorLower [list 0 25 13 0]\n\n        # Try to filter\n        set hlsimage [cv::cvtColor $image1 $::cv::COLOR_BGR2HLS]\n        set rangeMask [cv::inRange $hlsimage $skinColorLower $skinColorUpper]\n        set blurred [cv::blur $rangeMask 10 10]\n        set image2 [::cv::threshold $blurred 200 255 $::cv::THRESH_BINARY]\n\n        $hlsimage close\n        $rangeMask close\n        $blurred close\n\n        set contours [::cv::findContours $image2 $::cv::RETR_EXTERNAL $::cv::CHAIN_APPROX_SIMPLE]\n        set scontours [lsort -command mysortproc $contours]\n        set contour [lindex $scontours 0]\n\n        set hull [cv::convexHull $contour 0 1]\n        for {set i 0} {$i \u003c [llength $hull]} {incr i 2} {\n            set x [lindex $hull $i]\n            set y [lindex $hull [expr $i + 1]]\n            cv::circle $image1 $x $y 5 [list 255 0 0 0] 3\n        }\n\n        ::cv::drawContours $image1 [list $hull] -1 [list 0 255 0 0] 1 $::cv::LINE_AA 2 0 0\n\n        set hull [cv::convexHull $contour 0 0]\n        set defects [::cv::convexityDefects $contour $hull]\n        foreach d $defects {\n            set startx [lindex $contour [expr [lindex $d 0] * 2]]\n            set starty [lindex $contour [expr [lindex $d 0] * 2 + 1]]\n            set endx [lindex $contour [expr [lindex $d 1] * 2]]\n            set endy [lindex $contour [expr [lindex $d 1] * 2 + 1]]\n            set farx [lindex $contour [expr [lindex $d 2] * 2]]\n            set fary [lindex $contour [expr [lindex $d 2] * 2 + 1]]\n\n            set depth [expr [lindex $d 3]/256]\n\n            cv::line $image1 $startx $starty $farx $fary [list 0 0 255 0] 2\n            cv::line $image1 $endx $endy $farx $fary [list 0 0 255 0] 2\n            cv::circle $image1 $farx $fary 5 [list 255 255 0 0] 3\n        }\n\n        ::cv::namedWindow \"Image\" $::cv::WINDOW_AUTOSIZE\n        ::cv::imshow \"Image\" $image1\n        ::cv::namedWindow \"Check\" $::cv::WINDOW_AUTOSIZE\n        ::cv::imshow \"Check\" $image2\n\n        ::cv::waitKey 0\n        ::cv::destroyAllWindows\n\n        $image2 close\n        $image1 close\n    } on error {em} {\n        puts $em\n    }\n\nGeneralizedHoughBallard test -\n\n    package require opencv\n\n    try {\n        #\n        # Download files from:\n        # https://github.com/opencv/opencv/tree/master/samples/data\n        #\n        set img [::cv::imread \"pic1.png\" 0]\n        set templ [::cv::imread \"templ.png\" 0]\n\n        set hough [::cv::GeneralizedHoughBallard]\n        $hough setMinDist 100\n        $hough setLevels  360\n        $hough setDp 2\n        $hough setVotesThreshold 50\n        $hough setTemplate $templ\n        set result [$hough detect $img]\n        set pos [lindex $result 0]\n        set votes [lindex $result 1]\n\n        set img2 [::cv::cvtColor $img $::cv::COLOR_GRAY2BGR]\n        for {set i 0} {$i \u003c [$pos rows]} {incr i} {\n            for {set j 0} {$j \u003c [$pos cols]} {incr j} {\n                set x [expr int([$pos at [list $i $j] 0])]\n                set y [expr int([$pos at [list $i $j] 1])]\n                set scale [$pos at [list $i $j] 2]\n                set angle [$pos at [list $i $j] 3]\n\n                set h [expr int($scale * [$templ rows])]\n                set w [expr int($scale * [$templ cols])]\n\n                set rect [list $x $y $w $h $angle]\n                set box [::cv::boxPoints $rect]\n\n                set color [list 0 0 255 0]\n                ::cv::drawContours $img2 [list $box] -1 $color 3\n            }\n        }\n\n        $pos close\n        $votes close\n        $hough close\n        $templ close\n        $img close\n\n        ::cv::namedWindow \"Display Image\" $::cv::WINDOW_AUTOSIZE\n        ::cv::imshow \"Display Image\" $img2\n        ::cv::waitKey 0\n        ::cv::destroyAllWindows\n\n        $img2 close\n    } on error {em} {\n        puts $em\n    }\n\nAGAST Algorithm for Corner Detection -\n\n    package require opencv\n\n    #\n    # From https://github.com/opencv/opencv/tree/master/samples/data\n    #\n    set filename1 \"blox.jpg\"\n\n    try {\n        set img1 [::cv::imread $filename1 0]\n\n        set agast [::cv::AgastFeatureDetector]\n        set kp1 [$agast detect $img1]\n\n        set kpoint1 [::cv::drawKeypoints $img1 $kp1 None [list 255 0 0 0] \\\n                    $::cv::DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS]\n\n        ::cv::namedWindow \"Display Image\" $::cv::WINDOW_AUTOSIZE\n        ::cv::imshow \"Display Image\" $kpoint1\n        ::cv::waitKey 0\n        ::cv::destroyAllWindows\n\n        $kpoint1 close\n        $img1 close\n    } on error {em} {\n        puts $em\n    }\n\nBrute-Force Matching with ORB Descriptors -\n\n    package require opencv\n\n    proc mysortproc {x y} {\n        set distance1 [lindex $x 3]\n        set distance2 [lindex $y 3]\n\n        if {$distance1 \u003e $distance2} {\n            return 1\n        } elseif {$distance1 \u003c $distance2} {\n            return -1\n        } else {\n            return 0\n        }\n    }\n\n    #\n    # From https://github.com/opencv/opencv/tree/master/samples/data\n    #\n    set filename1 \"box.png\"\n    set filename2 \"box_in_scene.png\"\n\n    try {\n        set img1 [::cv::imread $filename1 0]\n        set img2 [::cv::imread $filename2 0]\n\n        set orb [::cv::ORB]\n\n        set result1 [$orb detectAndCompute $img1]\n        set result2 [$orb detectAndCompute $img2]\n        set kp1 [lindex $result1 0]\n        set d1 [lindex $result1 1]\n        set kp2 [lindex $result2 0]\n        set d2 [lindex $result2 1]\n\n        set bmatcher [::cv::BFMatcher $::cv::NORM_HAMMING 1]\n        set match [$bmatcher match $d1 $d2]\n        set match [lsort -command mysortproc $match]\n        set matches [lrange $match 0 10]\n\n        set mcolor [list 255 0 0 0]\n        set scolor [list 0 0 255 0]\n        set match1 [::cv::drawMatches $img1 $kp1 $img2 $kp2 $matches None \\\n                    $mcolor $scolor $::cv::DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS]\n\n        $d1 close\n        $d2 close\n        $orb close\n        $bmatcher close\n\n        ::cv::namedWindow \"Display Image\" $::cv::WINDOW_AUTOSIZE\n        ::cv::imshow \"Display Image\" $match1\n        ::cv::waitKey 0\n        ::cv::destroyAllWindows\n\n        $match1 close\n        $img1 close\n        $img2 close\n    } on error {em} {\n        puts $em\n    }\n\nFlann-based descriptor matcher with BRISK Descriptors -\n\n    package require opencv\n\n    proc mysortproc {x y} {\n        set distance1 [lindex $x 3]\n        set distance2 [lindex $y 3]\n\n        if {$distance1 \u003e $distance2} {\n            return 1\n        } elseif {$distance1 \u003c $distance2} {\n            return -1\n        } else {\n            return 0\n        }\n    }\n\n    #\n    # From https://github.com/opencv/opencv/tree/master/samples/data\n    #\n    set filename1 \"box.png\"\n    set filename2 \"box_in_scene.png\"\n\n    try {\n        set img1 [::cv::imread $filename1 0]\n        set img2 [::cv::imread $filename2 0]\n\n        set brisk [::cv::BRISK]\n\n        set result1 [$brisk detectAndCompute $img1]\n        set result2 [$brisk detectAndCompute $img2]\n        set kp1 [lindex $result1 0]\n        set d1 [lindex $result1 1]\n        set kp2 [lindex $result2 0]\n        set d2 [lindex $result2 1]\n\n        set fmatcher [::cv::FlannBasedMatcher FLANN_INDEX_LSH [list 6 12 1]]\n        set match [$fmatcher match $d1 $d2]\n        set match [lsort -command mysortproc $match]\n        set matches [lrange $match 0 10]\n\n        set mcolor [list 255 0 0 0]\n        set scolor [list 0 0 255 0]\n        set match1 [::cv::drawMatches $img1 $kp1 $img2 $kp2 $matches None \\\n                    $mcolor $scolor $::cv::DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS]\n\n        $d1 close\n        $d2 close\n        $brisk close\n        $fmatcher close\n\n        ::cv::namedWindow \"Display Image\" $::cv::WINDOW_AUTOSIZE\n        ::cv::imshow \"Display Image\" $match1\n        ::cv::waitKey 0\n        ::cv::destroyAllWindows\n\n        $match1 close\n        $img1 close\n        $img2 close\n    } on error {em} {\n        puts $em\n    }\n\nBrute-Force Matching with ORB Descriptors and Ratio Test -\n\n    package require opencv\n\n    #\n    # From https://github.com/opencv/opencv/tree/master/samples/data\n    #\n    set filename1 \"box.png\"\n    set filename2 \"box_in_scene.png\"\n\n    try {\n        set img1 [::cv::imread $filename1 0]\n        set img2 [::cv::imread $filename2 0]\n\n        set orb [::cv::ORB]\n        $orb setWTA_K 3\n\n        set result1 [$orb detectAndCompute $img1]\n        set result2 [$orb detectAndCompute $img2]\n        set kp1 [lindex $result1 0]\n        set d1 [lindex $result1 1]\n        set kp2 [lindex $result2 0]\n        set d2 [lindex $result2 1]\n\n        set bmatcher [::cv::BFMatcher $::cv::NORM_HAMMING 0]\n        set matches [$bmatcher knnMatch $d1 $d2 2]\n\n        # Apply ratio test\n        set good [list]\n        foreach match $matches {\n            foreach {m n} $match {\n                set mdistance [lindex $m 3]\n                set ndistance [lindex $n 3]\n                if {$mdistance \u003c [expr 0.7 * $ndistance]} {\n                    lappend good $m\n                }\n            }\n        }\n\n        set mcolor [list 255 0 0 0]\n        set scolor [list 0 0 255 0]\n        set match1 [::cv::drawMatches $img1 $kp1 $img2 $kp2 $good None \\\n                    $mcolor $scolor $::cv::DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS]\n\n        $d1 close\n        $d2 close\n        $orb close\n        $bmatcher close\n\n        ::cv::namedWindow \"Display Image\" $::cv::WINDOW_AUTOSIZE\n        ::cv::imshow \"Display Image\" $match1\n        ::cv::waitKey 0\n        ::cv::destroyAllWindows\n\n        $match1 close\n        $img1 close\n        $img2 close\n    } on error {em} {\n        puts $em\n    }\n\nFlann-based descriptor matcher with AKAZE Descriptors and Ratio Test -\n\n    package require opencv\n\n    #\n    # From https://github.com/opencv/opencv/tree/master/samples/data\n    #\n    set filename1 \"box.png\"\n    set filename2 \"box_in_scene.png\"\n\n    try {\n        set img1 [::cv::imread $filename1 0]\n        set img2 [::cv::imread $filename2 0]\n\n        set akaze [::cv::AKAZE]\n\n        set result1 [$akaze detectAndCompute $img1]\n        set result2 [$akaze detectAndCompute $img2]\n        set kp1 [lindex $result1 0]\n        set d1 [lindex $result1 1]\n        set kp2 [lindex $result2 0]\n        set d2 [li","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fray2501%2Ftcl-opencv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fray2501%2Ftcl-opencv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fray2501%2Ftcl-opencv/lists"}