Extracting HoG Features using OpenCV

前端 未结 4 542
醉话见心
醉话见心 2020-12-12 11:09

I am trying to extract features using OpenCV\'s HoG API, however I can\'t seem to find the API that allow me to do that.

What I am trying to do is to extract feature

4条回答
  •  一向
    一向 (楼主)
    2020-12-12 12:02

    OpenCV 3 provides some changes to the way GPU algorithms (i.e. CUDA) can be used by the user, see the Transition Guide - CUDA.

    To update the answer from user3398689 to OpenCV 3, here is a snipped code:

    #include 
    #include 
    
    [...]
    
    /* Suppose you load an image in a cv::Mat variable called 'src' */
    
    int img_width  = 320;
    int img_height = 240;
    int block_size = 16;
    int bin_number = 9;
    
    cv::Ptr cuda_hog = cuda::HOG::create(Size(img_width, img_height),
                                                        Size(block_size, block_size),
                                                        Size(block_size/2, block_size/2),
                                                        Size(block_size/2, block_size/2),
                                                        bin_number);
    
    /* The following commands are optional: default values applies */
    cuda_hog->setDescriptorFormat(cuda::HOG::DESCR_FORMAT_COL_BY_COL);
    cuda_hog->setGammaCorrection(true);
    cuda_hog->setWinStride(Size(img_width_, img_height_));
    
    cv::cuda::GpuMat image;
    cv::cuda::GpuMat descriptor;
    
    image.upload(src);
    
    /* May not apply to you */
    /* CUDA HOG works with intensity (1 channel) or BGRA (4 channels) images */
    /* The next function call convert a standard BGR image to BGRA using the GPU */
    cv::cuda::GpuMat image_alpha;
    cuda::cvtColor(image, image_alpha, COLOR_BGR2BGRA, 4);
    
    cuda_hog->compute(image_alpha, descriptor);
    
    cv::Mat dst;
    image_alpha.download(dst);
    

    You can then use the descriptors in 'dst' variable as you prefer like, e.g., as suggested by G453.

提交回复
热议问题