Legacy support
Overview
// namespaces namespace NcvCTprep; // typedefs typedef short Ncv16s; typedef unsigned short Ncv16u; typedef float Ncv32f; typedef int Ncv32s; typedef unsigned int Ncv32u; typedef double Ncv64f; typedef long long Ncv64s; typedef unsigned long long Ncv64u; typedef signed char Ncv8s; typedef unsigned char Ncv8u; typedef bool NcvBool; typedef void NCVDebugOutputHandler(const cv::String &msg); typedef Ncv32u NCVStatus; typedef struct _NcvTimer* NcvTimer; typedef Ncv32f Ncv32f_a; typedef Ncv32u Ncv32u_a; // enums enum { @180::NCV_SUCCESS, @180::NCV_UNKNOWN_ERROR, @180::NCV_CUDA_ERROR, @180::NCV_NPP_ERROR, @180::NCV_FILE_ERROR, @180::NCV_NULL_PTR, @180::NCV_INCONSISTENT_INPUT, @180::NCV_TEXTURE_BIND_ERROR, @180::NCV_DIMENSIONS_INVALID, @180::NCV_INVALID_ROI, @180::NCV_INVALID_STEP, @180::NCV_INVALID_SCALE, @180::NCV_ALLOCATOR_NOT_INITIALIZED, @180::NCV_ALLOCATOR_BAD_ALLOC, @180::NCV_ALLOCATOR_BAD_DEALLOC, @180::NCV_ALLOCATOR_INSUFFICIENT_CAPACITY, @180::NCV_ALLOCATOR_DEALLOC_ORDER, @180::NCV_ALLOCATOR_BAD_REUSE, @180::NCV_MEM_COPY_ERROR, @180::NCV_MEM_RESIDENCE_ERROR, @180::NCV_MEM_INSUFFICIENT_CAPACITY, @180::NCV_HAAR_INVALID_PIXEL_STEP, @180::NCV_HAAR_TOO_MANY_FEATURES_IN_CLASSIFIER, @180::NCV_HAAR_TOO_MANY_FEATURES_IN_CASCADE, @180::NCV_HAAR_TOO_LARGE_FEATURES, @180::NCV_HAAR_XML_LOADING_EXCEPTION, @180::NCV_NOIMPL_HAAR_TILTED_FEATURES, @180::NCV_NOT_IMPLEMENTED, @180::NCV_WARNING_HAAR_DETECTIONS_VECTOR_OVERFLOW, @180::NPPST_SUCCESS = NCV_SUCCESS, @180::NPPST_ERROR, @180::NPPST_CUDA_KERNEL_EXECUTION_ERROR, @180::NPPST_NULL_POINTER_ERROR, @180::NPPST_TEXTURE_BIND_ERROR, @180::NPPST_MEMCPY_ERROR, @180::NPPST_MEM_ALLOC_ERR, @180::NPPST_MEMFREE_ERR, @180::NPPST_INVALID_ROI, @180::NPPST_INVALID_STEP, @180::NPPST_INVALID_SCALE, @180::NPPST_MEM_INSUFFICIENT_BUFFER, @180::NPPST_MEM_RESIDENCE_ERROR, @180::NPPST_MEM_INTERNAL_ERROR, @180::NCV_LAST_STATUS, }; enum { @181::NCVPipeObjDet_Default = 0x000, @181::NCVPipeObjDet_UseFairImageScaling = 0x001, @181::NCVPipeObjDet_FindLargestObject = 0x002, @181::NCVPipeObjDet_VisualizeInPlace = 0x004, }; enum NCVMemoryType; // structs struct cv::cuda::FGDParams; struct HaarClassifierCascadeDescriptor; struct HaarClassifierNode128; struct HaarClassifierNodeDescriptor32; struct HaarFeature64; struct HaarFeatureDescriptor32; struct HaarStage64; struct NCVBroxOpticalFlowDescriptor; struct NCVMemPtr; struct NCVMemSegment; struct NcvPoint2D32s; struct NcvPoint2D32u; struct NcvRect32s; struct NcvRect32u; struct NcvRect8u; struct NcvSize32s; struct NcvSize32u; // classes class cv::cuda::BackgroundSubtractorFGD; class cv::cuda::BackgroundSubtractorGMG; class cv::cuda::FastOpticalFlowBM; class INCVMemAllocator; class cv::cuda::ImagePyramid; template <class T> class NCVMatrix; template <class T> class NCVMatrixAlloc; template <class T> class NCVMatrixReuse; class NCVMemNativeAllocator; class NCVMemStackAllocator; template <class T> class NCVVector; template <class T> class NCVVectorAlloc; template <class T> class NCVVectorReuse; // global variables const Ncv32u K_LOG2_WARP_SIZE; const Ncv32u K_WARP_SIZE; // global functions void cv::cuda::calcOpticalFlowBM( const GpuMat& prev, const GpuMat& curr, Size block_size, Size shift_size, Size max_range, bool use_previous, GpuMat& velx, GpuMat& vely, GpuMat& buf, Stream& stream = Stream::Null() ); void cv::cuda::connectivityMask( const GpuMat& image, GpuMat& mask, const cv::Scalar& lo, const cv::Scalar& hi, Stream& stream = Stream::Null() ); Ptr<cuda::BackgroundSubtractorFGD> cv::cuda::createBackgroundSubtractorFGD(const FGDParams& params = FGDParams()); Ptr<cuda::BackgroundSubtractorGMG> cv::cuda::createBackgroundSubtractorGMG( int initializationFrames = 120, double decisionThreshold = 0.8 ); Ptr<ImagePyramid> cv::cuda::createImagePyramid( InputArray img, int nLayers = -1, Stream& stream = Stream::Null() ); void cv::cuda::createOpticalFlowNeedleMap( const GpuMat& u, const GpuMat& v, GpuMat& vertex, GpuMat& colors ); void cv::cuda::graphcut( GpuMat& terminals, GpuMat& leftTransp, GpuMat& rightTransp, GpuMat& top, GpuMat& bottom, GpuMat& labels, GpuMat& buf, Stream& stream = Stream::Null() ); void cv::cuda::graphcut( GpuMat& terminals, GpuMat& leftTransp, GpuMat& rightTransp, GpuMat& top, GpuMat& topLeft, GpuMat& topRight, GpuMat& bottom, GpuMat& bottomLeft, GpuMat& bottomRight, GpuMat& labels, GpuMat& buf, Stream& stream = Stream::Null() ); void cv::cuda::interpolateFrames( const GpuMat& frame0, const GpuMat& frame1, const GpuMat& fu, const GpuMat& fv, const GpuMat& bu, const GpuMat& bv, float pos, GpuMat& newFrame, GpuMat& buf, Stream& stream = Stream::Null() ); void cv::cuda::labelComponents( const GpuMat& mask, GpuMat& components, int flags = 0, Stream& stream = Stream::Null() ); void cv::cuda::projectPoints( const GpuMat& src, const Mat& rvec, const Mat& tvec, const Mat& camera_mat, const Mat& dist_coef, GpuMat& dst, Stream& stream = Stream::Null() ); void cv::cuda::solvePnPRansac( const Mat& object, const Mat& image, const Mat& camera_mat, const Mat& dist_coef, Mat& rvec, Mat& tvec, bool use_extrinsic_guess = false, int num_iters = 100, float max_dist = 8.0, int min_inlier_count = 100, std::vector<int>* inliers = NULL ); void cv::cuda::transformPoints( const GpuMat& src, const Mat& rvec, const Mat& tvec, GpuMat& dst, Stream& stream = Stream::Null() ); Ncv32u alignUp( Ncv32u what, Ncv32u alignment ); NCVStatus memSegCopyHelper( void* dst, NCVMemoryType dstType, const void* src, NCVMemoryType srcType, size_t sz, cudaStream_t cuStream ); NCVStatus memSegCopyHelper2D( void* dst, Ncv32u dstPitch, NCVMemoryType dstType, const void* src, Ncv32u srcPitch, NCVMemoryType srcType, Ncv32u widthbytes, Ncv32u height, cudaStream_t cuStream ); void ncvDebugOutput(const cv::String& msg); NCVStatus ncvDrawRects_32u_device( Ncv32u* d_dst, Ncv32u dstStride, Ncv32u dstWidth, Ncv32u dstHeight, NcvRect32u* d_rects, Ncv32u numRects, Ncv32u color, cudaStream_t cuStream ); NCVStatus ncvDrawRects_32u_host( Ncv32u* h_dst, Ncv32u dstStride, Ncv32u dstWidth, Ncv32u dstHeight, NcvRect32u* h_rects, Ncv32u numRects, Ncv32u color ); NCVStatus ncvDrawRects_8u_device( Ncv8u* d_dst, Ncv32u dstStride, Ncv32u dstWidth, Ncv32u dstHeight, NcvRect32u* d_rects, Ncv32u numRects, Ncv8u color, cudaStream_t cuStream ); NCVStatus ncvDrawRects_8u_host( Ncv8u* h_dst, Ncv32u dstStride, Ncv32u dstWidth, Ncv32u dstHeight, NcvRect32u* h_rects, Ncv32u numRects, Ncv8u color ); double ncvEndQueryTimerMs(NcvTimer t); double ncvEndQueryTimerUs(NcvTimer t); NCVStatus ncvGroupRectangles_host( NCVVector<NcvRect32u>& hypotheses, Ncv32u& numHypotheses, Ncv32u minNeighbors, Ncv32f intersectEps, NCVVector<Ncv32u>* hypothesesWeights ); void ncvSetDebugOutputHandler(NCVDebugOutputHandler* func); NcvTimer ncvStartTimer(void); NCVStatus NCVBroxOpticalFlow( const NCVBroxOpticalFlowDescriptor desc, INCVMemAllocator& gpu_mem_allocator, const NCVMatrix<Ncv32f>& frame0, const NCVMatrix<Ncv32f>& frame1, NCVMatrix<Ncv32f>& u, NCVMatrix<Ncv32f>& v, cudaStream_t stream ); NCV_CT_ASSERT(sizeof(HaarFeature64) = =8); NCV_CT_ASSERT(sizeof(HaarFeatureDescriptor32) = =4); NCV_CT_ASSERT(sizeof(HaarClassifierNodeDescriptor32) = =4); NCV_CT_ASSERT(sizeof(HaarClassifierNode128) = =16); NCV_CT_ASSERT(sizeof(HaarStage64) = =8); NCVStatus ncvApplyHaarClassifierCascade_device( NCVMatrix<Ncv32u>& d_integralImage, NCVMatrix<Ncv32f>& d_weights, NCVMatrixAlloc<Ncv32u>& d_pixelMask, Ncv32u& numDetections, HaarClassifierCascadeDescriptor& haar, NCVVector<HaarStage64>& h_HaarStages, NCVVector<HaarStage64>& d_HaarStages, NCVVector<HaarClassifierNode128>& d_HaarNodes, NCVVector<HaarFeature64>& d_HaarFeatures, NcvBool bMaskElements, NcvSize32u anchorsRoi, Ncv32u pixelStep, Ncv32f scaleArea, INCVMemAllocator& gpuAllocator, INCVMemAllocator& cpuAllocator, cudaDeviceProp& devProp, cudaStream_t cuStream ); NCVStatus ncvApplyHaarClassifierCascade_host( NCVMatrix<Ncv32u>& h_integralImage, NCVMatrix<Ncv32f>& h_weights, NCVMatrixAlloc<Ncv32u>& h_pixelMask, Ncv32u& numDetections, HaarClassifierCascadeDescriptor& haar, NCVVector<HaarStage64>& h_HaarStages, NCVVector<HaarClassifierNode128>& h_HaarNodes, NCVVector<HaarFeature64>& h_HaarFeatures, NcvBool bMaskElements, NcvSize32u anchorsRoi, Ncv32u pixelStep, Ncv32f scaleArea ); NCVStatus ncvDetectObjectsMultiScale_device( NCVMatrix<Ncv8u>& d_srcImg, NcvSize32u srcRoi, NCVVector<NcvRect32u>& d_dstRects, Ncv32u& dstNumRects, HaarClassifierCascadeDescriptor& haar, NCVVector<HaarStage64>& h_HaarStages, NCVVector<HaarStage64>& d_HaarStages, NCVVector<HaarClassifierNode128>& d_HaarNodes, NCVVector<HaarFeature64>& d_HaarFeatures, NcvSize32u minObjSize, Ncv32u minNeighbors, Ncv32f scaleStep, Ncv32u pixelStep, Ncv32u flags, INCVMemAllocator& gpuAllocator, INCVMemAllocator& cpuAllocator, cudaDeviceProp& devProp, cudaStream_t cuStream ); NCVStatus ncvGrowDetectionsVector_device( NCVVector<Ncv32u>& pixelMask, Ncv32u numPixelMaskDetections, NCVVector<NcvRect32u>& hypotheses, Ncv32u& totalDetections, Ncv32u totalMaxDetections, Ncv32u rectWidth, Ncv32u rectHeight, Ncv32f curScale, cudaStream_t cuStream ); NCVStatus ncvGrowDetectionsVector_host( NCVVector<Ncv32u>& pixelMask, Ncv32u numPixelMaskDetections, NCVVector<NcvRect32u>& hypotheses, Ncv32u& totalDetections, Ncv32u totalMaxDetections, Ncv32u rectWidth, Ncv32u rectHeight, Ncv32f curScale ); NCVStatus ncvHaarGetClassifierSize( const cv::String& filename, Ncv32u& numStages, Ncv32u& numNodes, Ncv32u& numFeatures ); NCVStatus ncvHaarLoadFromFile_host( const cv::String& filename, HaarClassifierCascadeDescriptor& haar, NCVVector<HaarStage64>& h_HaarStages, NCVVector<HaarClassifierNode128>& h_HaarNodes, NCVVector<HaarFeature64>& h_HaarFeatures ); NCVStatus ncvHaarStoreNVBIN_host( const cv::String& filename, HaarClassifierCascadeDescriptor haar, NCVVector<HaarStage64>& h_HaarStages, NCVVector<HaarClassifierNode128>& h_HaarNodes, NCVVector<HaarFeature64>& h_HaarFeatures ); // macros #define CLAMP( \ x, \ a, \ b \ ) #define CLAMP_0_255(x) #define CLAMP_BOTTOM( \ x, \ a \ ) #define CLAMP_TOP( \ x, \ a \ ) #define HAAR_STDDEV_BORDER #define NCV_CT_ASSERT(X) #define NCV_CT_PREP_PASTE( \ a, \ b \ ) #define NCV_CT_PREP_PASTE_AUX( \ a, \ b \ ) #define NCV_RESET_SKIP_COND(x) #define NCV_SET_SKIP_COND(x) #define NCV_SKIP_COND_BEGIN #define NCV_SKIP_COND_END #define OBJDET_MASK_ELEMENT_INVALID_32U #define RECT_SIMILARITY_PROPORTION #define SQR(x) #define SUB_BEGIN( \ type, \ name \ ) #define SUB_CALL(name) #define SUB_END(name) #define ncvAssertCUDALastErrorReturn(errCode) #define ncvAssertCUDAReturn( \ cudacall, \ errCode \ ) #define ncvAssertPrintCheck( \ pred, \ msg \ ) #define ncvAssertPrintReturn( \ pred, \ msg, \ err \ ) #define ncvAssertReturn( \ pred, \ err \ ) #define ncvAssertReturnNcvStat(ncvOp) #define ncvSafeMatAlloc( \ name, \ type, \ alloc, \ width, \ height, \ err \ )
Detailed Documentation
Enum Values
NPPST_SUCCESS
Successful operation (same as NPP_NO_ERROR)
NPPST_ERROR
Unknown error.
NPPST_CUDA_KERNEL_EXECUTION_ERROR
CUDA kernel execution error.
NPPST_NULL_POINTER_ERROR
NULL pointer argument error.
NPPST_TEXTURE_BIND_ERROR
CUDA texture binding error or non-zero offset returned.
NPPST_MEMCPY_ERROR
CUDA memory copy error.
NPPST_MEM_ALLOC_ERR
CUDA memory allocation error.
NPPST_MEMFREE_ERR
CUDA memory deallocation error.
NPPST_INVALID_ROI
Invalid region of interest argument.
NPPST_INVALID_STEP
Invalid image lines step argument (check sign, alignment, relation to image width)
NPPST_INVALID_SCALE
Invalid scale parameter passed.
NPPST_MEM_INSUFFICIENT_BUFFER
Insufficient user-allocated buffer.
NPPST_MEM_RESIDENCE_ERROR
Memory residence error detected (check if pointers should be device or pinned)
NPPST_MEM_INTERNAL_ERROR
Internal memory management error.
NCV_LAST_STATUS
Marker to continue error numeration in other files.
Global Functions
void cv::cuda::calcOpticalFlowBM( const GpuMat& prev, const GpuMat& curr, Size block_size, Size shift_size, Size max_range, bool use_previous, GpuMat& velx, GpuMat& vely, GpuMat& buf, Stream& stream = Stream::Null() )
Calculates optical flow for 2 images using block matching algorithm */.
void cv::cuda::connectivityMask( const GpuMat& image, GpuMat& mask, const cv::Scalar& lo, const cv::Scalar& hi, Stream& stream = Stream::Null() )
compute mask for Generalized Flood fill componetns labeling.
Ptr<cuda::BackgroundSubtractorFGD> cv::cuda::createBackgroundSubtractorFGD(const FGDParams& params = FGDParams())
Creates FGD Background Subtractor.
Parameters:
params | Algorithm ‘s parameters. See [47] for explanation. |
Ptr<cuda::BackgroundSubtractorGMG> cv::cuda::createBackgroundSubtractorGMG( int initializationFrames = 120, double decisionThreshold = 0.8 )
Creates GMG Background Subtractor.
Parameters:
initializationFrames | Number of frames of video to use to initialize histograms. |
decisionThreshold | Value above which pixel is determined to be FG. |
void cv::cuda::graphcut( GpuMat& terminals, GpuMat& leftTransp, GpuMat& rightTransp, GpuMat& top, GpuMat& bottom, GpuMat& labels, GpuMat& buf, Stream& stream = Stream::Null() )
performs labeling via graph cuts of a 2D regular 4-connected graph.
void cv::cuda::graphcut( GpuMat& terminals, GpuMat& leftTransp, GpuMat& rightTransp, GpuMat& top, GpuMat& topLeft, GpuMat& topRight, GpuMat& bottom, GpuMat& bottomLeft, GpuMat& bottomRight, GpuMat& labels, GpuMat& buf, Stream& stream = Stream::Null() )
performs labeling via graph cuts of a 2D regular 8-connected graph.
void cv::cuda::interpolateFrames( const GpuMat& frame0, const GpuMat& frame1, const GpuMat& fu, const GpuMat& fv, const GpuMat& bu, const GpuMat& bv, float pos, GpuMat& newFrame, GpuMat& buf, Stream& stream = Stream::Null() )
Interpolates frames (images) using provided optical flow (displacement field).
Parameters:
frame0 | First frame (32-bit floating point images, single channel). |
frame1 | Second frame. Must have the same type and size as frame0 . |
fu | Forward horizontal displacement. |
fv | Forward vertical displacement. |
bu | Backward horizontal displacement. |
bv | Backward vertical displacement. |
pos | New frame position. |
newFrame | Output image. |
buf | Temporary buffer, will have width x 6*height size, CV_32FC1 type and contain 6 GpuMat : occlusion masks for first frame, occlusion masks for second, interpolated forward horizontal flow, interpolated forward vertical flow, interpolated backward horizontal flow, interpolated backward vertical flow. |
stream | Stream for the asynchronous version. |
void cv::cuda::labelComponents( const GpuMat& mask, GpuMat& components, int flags = 0, Stream& stream = Stream::Null() )
performs connected componnents labeling.
void cv::cuda::solvePnPRansac( const Mat& object, const Mat& image, const Mat& camera_mat, const Mat& dist_coef, Mat& rvec, Mat& tvec, bool use_extrinsic_guess = false, int num_iters = 100, float max_dist = 8.0, int min_inlier_count = 100, std::vector<int>* inliers = NULL )
Finds the object pose from 3D-2D point correspondences.
Parameters:
object | Single-row matrix of object points. |
image | Single-row matrix of image points. |
camera_mat | 3x3 matrix of intrinsic camera parameters. |
dist_coef | Distortion coefficients. See undistortPoints for details. |
rvec | Output 3D rotation vector. |
tvec | Output 3D translation vector. |
use_extrinsic_guess | Flag to indicate that the function must use rvec and tvec as an initial transformation guess. It is not supported for now. |
num_iters | Maximum number of RANSAC iterations. |
max_dist | Euclidean distance threshold to detect whether point is inlier or not. |
min_inlier_count | Flag to indicate that the function must stop if greater or equal number of inliers is achieved. It is not supported for now. |
inliers | Output vector of inlier indices. |
Ncv32u alignUp( Ncv32u what, Ncv32u alignment )
Calculates the aligned top bound value
NCVStatus memSegCopyHelper( void* dst, NCVMemoryType dstType, const void* src, NCVMemoryType srcType, size_t sz, cudaStream_t cuStream )
Copy dispatchers
NCVStatus ncvGroupRectangles_host( NCVVector<NcvRect32u>& hypotheses, Ncv32u& numHypotheses, Ncv32u minNeighbors, Ncv32f intersectEps, NCVVector<Ncv32u>* hypothesesWeights )
Operations with rectangles
NCVStatus NCVBroxOpticalFlow( const NCVBroxOpticalFlowDescriptor desc, INCVMemAllocator& gpu_mem_allocator, const NCVMatrix<Ncv32f>& frame0, const NCVMatrix<Ncv32f>& frame1, NCVMatrix<Ncv32f>& u, NCVMatrix<Ncv32f>& v, cudaStream_t stream )
Compute optical flow.
Based on method by Brox et al [2004]
Parameters:
desc | model and solver parameters |
gpu_mem_allocator | GPU memory allocator |
frame0 | source frame |
frame1 | frame to track |
u | flow horizontal component (along x axis) |
v | flow vertical component (along y axis) |
stream |
Returns:
computation status
Macros
#define NCV_CT_ASSERT(X)
Performs compile-time assertion of a condition on the file scope
#define NCV_CT_PREP_PASTE( \ a, \ b \ )
Concatenation macro.
#define NCV_CT_PREP_PASTE_AUX( \ a, \ b \ )
Concatenation indirection macro.