引言
本篇是以python的视角介绍相关的函数还有自我使用中的一些问题,本想在这篇之前总结一下opencv编译的全过程,但遇到了太多坑,暂时不太想回看做过的笔记,所以这里主要总结python下GPU版本的opencv。
主要函数说明
threshold():二值化,但要指定设定阈值
blendLinear():两幅图片的线形混合
calcHist()
createBoxFilter ():创建一个规范化的2D框过滤器
canny边缘检测
createGaussianFilter():创建一个Gaussian过滤器
createLaplacianFilter():创建一个Laplacian过滤器
createLinearFilter():创建一个线形过滤器
createMorphologyFilter():形态学运算滤波器;腐蚀、开、关等操作
createSolbelFilter():创建一个solbel过滤器
createHougnCirclesDetector():创建一个霍夫原检测器
createMedianFilter():创建一个中值滤波过滤器
createTemplateMatching():模板匹配
cvtColor():颜色空间转换
dft():执行浮点矩阵的正向或逆离散傅里叶变换
drawColorDisp():颜色差异图像
equalizeHist():将灰度图像的直方图均衡化
findMinMax()
findMinMaxLoc()
flip():翻转二维矩阵
merge():用几个单通道矩阵构成一个多通道矩阵
split():将多通道矩阵分离成多个单通道矩阵
getCudaEnabledDeviceCount():获取可用的gpu数目
getDevice():返回由cuda::setDevice或默认初始化的当前设备索引
printCudaDeviceInfo()
resetDevice():显示地销毁和清理与当前进程中当前设备相关的所有资源
setDevice():设置一个device并为当前线程初始化它;如果省略次函数的调用,则在第一次CUDA使用时初始化默认设备
remap():对图像应用一般的几个变换
resize():调整一个图像大小
rotate():在原点(0,0)周围旋转一个图像,然后移动它
sum():返回矩阵元素的和
上述是在cv2.cuda下总结出来的一些可以使用的方法,因为底层是C++,并且python主要调用的是cv2.so文件,如果我们想要看到一个对象到底有什么样的作用还有一系列的使用方式,我们可以利用python的魔法方法__dir__ 与help查看:
$ dir(cv2.cuda)
"""
['ALPHA_ATOP', 'ALPHA_ATOP_PREMUL', 'ALPHA_IN', 'ALPHA_IN_PREMUL', 'ALPHA_OUT', 'ALPHA_OUT_PREMUL', 'ALPHA_OVER', 'ALPHA_OVER_PREMUL', 'ALPHA_PLUS', 'ALPHA_PLUS_PREMUL', 'ALPHA_PREMUL', 'ALPHA_XOR', 'ALPHA_XOR_PREMUL', 'BroxOpticalFlow_create', 'COLOR_BAYER_BG2BGR_MHT', 'COLOR_BAYER_BG2GRAY_MHT', 'COLOR_BAYER_BG2RGB_MHT', 'COLOR_BAYER_GB2BGR_MHT', 'COLOR_BAYER_GB2GRAY_MHT', 'COLOR_BAYER_GB2RGB_MHT', 'COLOR_BAYER_GR2BGR_MHT', 'COLOR_BAYER_GR2GRAY_MHT', 'COLOR_BAYER_GR2RGB_MHT', 'COLOR_BAYER_RG2BGR_MHT', 'COLOR_BAYER_RG2GRAY_MHT', 'COLOR_BAYER_RG2RGB_MHT', 'COLOR_BayerBG2BGR_MHT', 'COLOR_BayerBG2GRAY_MHT', 'COLOR_BayerBG2RGB_MHT', 'COLOR_BayerGB2BGR_MHT', 'COLOR_BayerGB2GRAY_MHT', 'COLOR_BayerGB2RGB_MHT', 'COLOR_BayerGR2BGR_MHT', 'COLOR_BayerGR2GRAY_MHT', 'COLOR_BayerGR2RGB_MHT', 'COLOR_BayerRG2BGR_MHT', 'COLOR_BayerRG2GRAY_MHT', 'COLOR_BayerRG2RGB_MHT', 'CascadeClassifier_create', 'DEVICE_INFO_COMPUTE_MODE_DEFAULT', 'DEVICE_INFO_COMPUTE_MODE_EXCLUSIVE', 'DEVICE_INFO_COMPUTE_MODE_EXCLUSIVE_PROCESS', 'DEVICE_INFO_COMPUTE_MODE_PROHIBITED', 'DYNAMIC_PARALLELISM', 'DensePyrLKOpticalFlow_create', 'DescriptorMatcher_createBFMatcher', 'DeviceInfo_ComputeModeDefault', 'DeviceInfo_ComputeModeExclusive', 'DeviceInfo_ComputeModeExclusiveProcess', 'DeviceInfo_ComputeModeProhibited', 'EVENT_BLOCKING_SYNC', 'EVENT_DEFAULT', 'EVENT_DISABLE_TIMING', 'EVENT_INTERPROCESS', 'Event_BLOCKING_SYNC', 'Event_DEFAULT', 'Event_DISABLE_TIMING', 'Event_INTERPROCESS', 'Event_elapsedTime', 'FEATURE_SET_COMPUTE_10', 'FEATURE_SET_COMPUTE_11', 'FEATURE_SET_COMPUTE_12', 'FEATURE_SET_COMPUTE_13', 'FEATURE_SET_COMPUTE_20', 'FEATURE_SET_COMPUTE_21', 'FEATURE_SET_COMPUTE_30', 'FEATURE_SET_COMPUTE_32', 'FEATURE_SET_COMPUTE_35', 'FEATURE_SET_COMPUTE_50', 'FarnebackOpticalFlow_create', 'FastFeatureDetector_create', 'GLOBAL_ATOMICS', 'GpuMat_defaultAllocator', 'GpuMat_setDefaultAllocator', 'HOG_create', 'HOST_MEM_PAGE_LOCKED', 'HOST_MEM_SHARED', 'HOST_MEM_WRITE_COMBINED', 'HostMem_PAGE_LOCKED', 'HostMem_SHARED', 'HostMem_WRITE_COMBINED', 'NATIVE_DOUBLE', 'NVIDIA_OPTICAL_FLOW_1_0_NV_OF_PERF_LEVEL_FAST', 'NVIDIA_OPTICAL_FLOW_1_0_NV_OF_PERF_LEVEL_MAX', 'NVIDIA_OPTICAL_FLOW_1_0_NV_OF_PERF_LEVEL_MEDIUM', 'NVIDIA_OPTICAL_FLOW_1_0_NV_OF_PERF_LEVEL_SLOW', 'NVIDIA_OPTICAL_FLOW_1_0_NV_OF_PERF_LEVEL_UNDEFINED', 'NvidiaOpticalFlow_1_0_NV_OF_PERF_LEVEL_FAST', 'NvidiaOpticalFlow_1_0_NV_OF_PERF_LEVEL_MAX', 'NvidiaOpticalFlow_1_0_NV_OF_PERF_LEVEL_MEDIUM', 'NvidiaOpticalFlow_1_0_NV_OF_PERF_LEVEL_SLOW', 'NvidiaOpticalFlow_1_0_NV_OF_PERF_LEVEL_UNDEFINED', 'NvidiaOpticalFlow_1_0_create', 'ORB_create', 'OpticalFlowDual_TVL1_create', 'SHARED_ATOMICS', 'SURF_CUDA_ANGLE_ROW', 'SURF_CUDA_HESSIAN_ROW', 'SURF_CUDA_LAPLACIAN_ROW', 'SURF_CUDA_OCTAVE_ROW', 'SURF_CUDA_ROWS_COUNT', 'SURF_CUDA_SIZE_ROW', 'SURF_CUDA_X_ROW', 'SURF_CUDA_Y_ROW', 'SparsePyrLKOpticalFlow_create', 'StereoBeliefPropagation_estimateRecommendedParams', 'StereoConstantSpaceBP_estimateRecommendedParams', 'Stream_Null', 'TargetArchs_has', 'TargetArchs_hasBin', 'TargetArchs_hasEqualOrGreater', 'TargetArchs_hasEqualOrGreaterBin', 'TargetArchs_hasEqualOrGreaterPtx', 'TargetArchs_hasEqualOrLessPtx', 'TargetArchs_hasPtx', 'WARP_SHUFFLE_FUNCTIONS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'absSum', 'absdiff', 'add', 'addWeighted', 'alphaComp', 'bilateralFilter', 'bitwise_and', 'bitwise_not', 'bitwise_or', 'bitwise_xor', 'blendLinear', 'buildWarpAffineMaps', 'buildWarpPerspectiveMaps', 'calcAbsSum', 'calcHist', 'calcNorm', 'calcNormDiff', 'calcSqrSum', 'calcSum', 'cartToPolar', 'compare', 'copyMakeBorder', 'countNonZero', 'createBackgroundSubtractorMOG', 'createBackgroundSubtractorMOG2', 'createBoxFilter', 'createBoxMaxFilter', 'createBoxMinFilter', 'createCLAHE', 'createCannyEdgeDetector', 'createColumnSumFilter', 'createContinuous', 'createConvolution', 'createDFT', 'createDerivFilter', 'createDisparityBilateralFilter', 'createGaussianFilter', 'createGeneralizedHoughBallard', 'createGeneralizedHoughGuil', 'createGoodFeaturesToTrackDetector', 'createHarrisCorner', 'createHoughCirclesDetector', 'createHoughLinesDetector', 'createHoughSegmentDetector', 'createLaplacianFilter', 'createLinearFilter', 'createLookUpTable', 'createMedianFilter', 'createMinEigenValCorner', 'createMorphologyFilter', 'createRowSumFilter', 'createScharrFilter', 'createSeparableLinearFilter', 'createSobelFilter', 'createStereoBM', 'createStereoBeliefPropagation', 'createStereoConstantSpaceBP', 'createTemplateMatching', 'cvtColor', 'demosaicing', 'dft', 'divide', 'drawColorDisp', 'ensureSizeIsEnough', 'equalizeHist', 'evenLevels', 'exp', 'findMinMax', 'findMinMaxLoc', 'flip', 'gammaCorrection', 'gemm', 'getCudaEnabledDeviceCount', 'getDevice', 'histEven', 'histRange', 'integral', 'log', 'magnitude', 'magnitudeSqr', 'max', 'meanShiftFiltering', 'meanShiftProc', 'meanShiftSegmentation', 'meanStdDev', 'merge', 'min', 'minMax', 'minMaxLoc', 'mulAndScaleSpectrums', 'mulSpectrums', 'multiply', 'norm', 'normalize', 'phase', 'polarToCart', 'pow', 'printCudaDeviceInfo', 'printShortCudaDeviceInfo', 'pyrDown', 'pyrUp', 'rectStdDev', 'reduce', 'registerPageLocked', 'remap', 'reprojectImageTo3D', 'resetDevice', 'resize', 'rotate', 'setBufferPoolConfig', 'setBufferPoolUsage', 'setDevice', 'split', 'sqr', 'sqrIntegral', 'sqrSum', 'sqrt', 'subtract', 'sum', 'threshold', 'transpose', 'unregisterPageLocked', 'warpAffine', 'warpPerspective']
"""
$ GPU_mat = cv2.cuda_GpuMat()
$ dir(GPU_mat)
"""
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'adjustROI', 'assignTo', 'channels', 'clone', 'col', 'colRange', 'convertTo', 'copyTo', 'create', 'defaultAllocator', 'depth', 'download', 'elemSize', 'elemSize1', 'empty', 'isContinuous', 'locateROI', 'reshape', 'row', 'rowRange', 'setDefaultAllocator', 'setTo', 'size', 'step', 'step1', 'swap', 'type', 'updateContinuityFlag', 'upload']
"""
$ dir(cv2)
"""
['', 'ACCESS_FAST', 'ACCESS_MASK', 'ACCESS_READ', 'ACCESS_RW', 'ACCESS_WRITE', 'ADAPTIVE_THRESH_GAUSSIAN_C', 'ADAPTIVE_THRESH_MEAN_C', 'AGAST_FEATURE_DETECTOR_AGAST_5_8', 'AGAST_FEATURE_DETECTOR_AGAST_7_12D', 'AGAST_FEATURE_DETECTOR_AGAST_7_12S', 'AGAST_FEATURE_DETECTOR_NONMAX_SUPPRESSION', 'AGAST_FEATURE_DETECTOR_OAST_9_16', 'AGAST_FEATURE_DETECTOR_THRESHOLD', 'AKAZE', 'AKAZE_DESCRIPTOR_KAZE', 'AKAZE_DESCRIPTOR_KAZE_UPRIGHT', 'AKAZE_DESCRIPTOR_MLDB', 'AKAZE_DESCRIPTOR_MLDB_UPRIGHT', 'AKAZE_create', 'AffineTransformer', 'AgastFeatureDetector', 'AgastFeatureDetector_AGAST_5_8', 'AgastFeatureDetector_AGAST_7_12d', 'AgastFeatureDetector_AGAST_7_12s', 'AgastFeatureDetector_NONMAX_SUPPRESSION', 'AgastFeatureDetector_OAST_9_16', 'AgastFeatureDetector_THRESHOLD', 'AgastFeatureDetector_create', 'Algorithm', 'AlignExposures', 'AlignMTB', 'AsyncArray', 'BFMatcher', 'BFMatcher_create', 'BORDER_CONSTANT', 'BORDER_DEFAULT', 'BORDER_ISOLATED', 'BORDER_REFLECT', 'BORDER_REFLECT101', 'BORDER_REFLECT_101', 'BORDER_REPLICATE', 'BORDER_TRANSPARENT', 'BORDER_WRAP', 'BOWImgDescriptorExtractor', 'BOWKMeansTrainer', 'BOWTrainer', 'BRISK', 'BRISK_create', 'BackgroundSubtractor', 'BackgroundSubtractorKNN', 'BackgroundSubtractorMOG2', 'BaseCascadeClassifier', 'CALIB_CB_ACCURACY', 'CALIB_CB_ADAPTIVE_THRESH', 'CALIB_CB_ASYMMETRIC_GRID', 'CALIB_CB_CLUSTERING', 'CALIB_CB_EXHAUSTIVE', 'CALIB_CB_FAST_CHECK', 'CALIB_CB_FILTER_QUADS', 'CALIB_CB_NORMALIZE_IMAGE', 'CALIB_CB_SYMMETRIC_GRID', 'CALIB_FIX_ASPECT_RATIO', 'CALIB_FIX_FOCAL_LENGTH', 'CALIB_FIX_INTRINSIC', 'CALIB_FIX_K1', 'CALIB_FIX_K2', 'CALIB_FIX_K3', 'CALIB_FIX_K4', 'CALIB_FIX_K5', 'CALIB_FIX_K6', 'CALIB_FIX_PRINCIPAL_POINT', 'CALIB_FIX_S1_S2_S3_S4', 'CALIB_FIX_TANGENT_DIST', 'CALIB_FIX_TAUX_TAUY', 'CALIB_HAND_EYE_ANDREFF', 'CALIB_HAND_EYE_DANIILIDIS', 'CALIB_HAND_EYE_HORAUD', 'CALIB_HAND_EYE_PARK', 'CALIB_HAND_EYE_TSAI', 'CALIB_NINTRINSIC', 'CALIB_RATIONAL_MODEL', 'CALIB_SAME_FOCAL_LENGTH', 'CALIB_THIN_PRISM_MODEL', 'CALIB_TILTED_MODEL', 'CALIB_USE_EXTRINSIC_GUESS', 'CALIB_USE_INTRINSIC_GUESS', 'CALIB_USE_LU', 'CALIB_USE_QR', 'CALIB_ZERO_DISPARITY', 'CALIB_ZERO_TANGENT_DIST', 'CAP_ANDROID', 'CAP_ANY', 'CAP_ARAVIS', 'CAP_AVFOUNDATION', 'CAP_CMU1394', 'CAP_DC1394', 'CAP_DSHOW', 'CAP_FFMPEG', 'CAP_FIREWARE', 'CAP_FIREWIRE', 'CAP_GIGANETIX', 'CAP_GPHOTO2', 'CAP_GSTREAMER', 'CAP_IEEE1394', 'CAP_IMAGES', 'CAP_INTELPERC', 'CAP_INTELPERC_DEPTH_GENERATOR', 'CAP_INTELPERC_DEPTH_MAP', 'CAP_INTELPERC_GENERATORS_MASK', 'CAP_INTELPERC_IMAGE', 'CAP_INTELPERC_IMAGE_GENERATOR', 'CAP_INTELPERC_IR_GENERATOR', 'CAP_INTELPERC_IR_MAP', 'CAP_INTELPERC_UVDEPTH_MAP', 'CAP_INTEL_MFX', 'CAP_MSMF', 'CAP_OPENCV_MJPEG', 'CAP_OPENNI', 'CAP_OPENNI2', 'CAP_OPENNI2_ASUS', 'CAP_OPENNI_ASUS', 'CAP_OPENNI_BGR_IMAGE', 'CAP_OPENNI_DEPTH_GENERATOR', 'CAP_OPENNI_DEPTH_GENERATOR_BASELINE', 'CAP_OPENNI_DEPTH_GENERATOR_FOCAL_LENGTH', 'CAP_OPENNI_DEPTH_GENERATOR_PRESENT', 'CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION', 'CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION_ON', 'CAP_OPENNI_DEPTH_MAP', 'CAP_OPENNI_DISPARITY_MAP', 'CAP_OPENNI_DISPARITY_MAP_32F', 'CAP_OPENNI_GENERATORS_MASK', 'CAP_OPENNI_GRAY_IMAGE', 'CAP_OPENNI_IMAGE_GENERATOR', 'CAP_OPENNI_IMAGE_GENERATOR_OUTPUT_MODE', 'CAP_OPENNI_IMAGE_GENERATOR_PRESENT', 'CAP_OPENNI_IR_GENERATOR', 'CAP_OPENNI_IR_GENERATOR_PRESENT', 'CAP_OPENNI_IR_IMAGE', 'CAP_OPENNI_POINT_CLOUD_MAP', 'CAP_OPENNI_QVGA_30HZ', 'CAP_OPENNI_QVGA_60HZ', 'CAP_OPENNI_SXGA_15HZ', 'CAP_OPENNI_SXGA_30HZ', 'CAP_OPENNI_VALID_DEPTH_MASK', 'CAP_OPENNI_VGA_30HZ', 'CAP_PROP_APERTURE', 'CAP_PROP_AUTOFOCUS', 'CAP_PROP_AUTO_EXPOSURE', 'CAP_PROP_AUTO_WB', 'CAP_PROP_BACKEND', 'CAP_PROP_BACKLIGHT', 'CAP_PROP_BRIGHTNESS', 'CAP_PROP_BUFFERSIZE', 'CAP_PROP_CHANNEL', 'CAP_PROP_CONTRAST', 'CAP_PROP_CONVERT_RGB', 'CAP_PROP_DC1394_MAX', 'CAP_PROP_DC1394_MODE_AUTO', 'CAP_PROP_DC1394_MODE_MANUAL', 'CAP_PROP_DC1394_MODE_ONE_PUSH_AUTO', 'CAP_PROP_DC1394_OFF', 'CAP_PROP_EXPOSURE', 'CAP_PROP_EXPOSUREPROGRAM', 'CAP_PROP_FOCUS', 'CAP_PROP_FORMAT', 'CAP_PROP_FOURCC', 'CAP_PROP_FPS', 'CAP_PROP_FRAME_COUNT', 'CAP_PROP_FRAME_HEIGHT', 'CAP_PROP_FRAME_WIDTH', 'CAP_PROP_GAIN', 'CAP_PROP_GAMMA', 'CAP_PROP_GIGA_FRAME_HEIGH_MAX', 'CAP_PROP_GIGA_FRAME_OFFSET_X', 'CAP_PROP_GIGA_FRAME_OFFSET_Y', 'CAP_PROP_GIGA_FRAME_SENS_HEIGH', 'CAP_PROP_GIGA_FRAME_SENS_WIDTH', 'CAP_PROP_GIGA_FRAME_WIDTH_MAX', 'CAP_PROP_GPHOTO2_COLLECT_MSGS', 'CAP_PROP_GPHOTO2_FLUSH_MSGS', 'CAP_PROP_GPHOTO2_PREVIEW', 'CAP_PROP_GPHOTO2_RELOAD_CONFIG', 'CAP_PROP_GPHOTO2_RELOAD_ON_CHANGE', 'CAP_PROP_GPHOTO2_WIDGET_ENUMERATE', 'CAP_PROP_GSTREAMER_QUEUE_LENGTH', 'CAP_PROP_GUID', 'CAP_PROP_HUE', 'CAP_PROP_IMAGES_BASE', 'CAP_PROP_IMAGES_LAST', 'CAP_PROP_INTELPERC_DEPTH_CONFIDENCE_THRESHOLD', 'CAP_PROP_INTELPERC_DEPTH_FOCAL_LENGTH_HORZ', 'CAP_PROP_INTELPERC_DEPTH_FOCAL_LENGTH_VERT', 'CAP_PROP_INTELPERC_DEPTH_LOW_CONFIDENCE_VALUE', 'CAP_PROP_INTELPERC_DEPTH_SATURATION_VALUE', 'CAP_PROP_INTELPERC_PROFILE_COUNT', 'CAP_PROP_INTELPERC_PROFILE_IDX', 'CAP_PROP_IOS_DEVICE_EXPOSURE', 'CAP_PROP_IOS_DEVICE_FLASH', 'CAP_PROP_IOS_DEVICE_FOCUS', 'CAP_PROP_IOS_DEVICE_TORCH', 'CAP_PROP_IOS_DEVICE_WHITEBALANCE', '