• 大小: 3KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: C/C++
  • 标签: C++  LBP  

资源简介

C++代码提取LBP特征,一共包括两种方式normal和circle,circle的效果好

资源截图

代码片段和文件信息

#include 
//#include 
#include 

#include 
#include 
#include 

const static int lbpBins = 14;
static float lbpSquare[lbpBins + 1][lbpBins + 1];

using namespace cv;
using namespace std;


void elbp(Mat& src Mat &dst int radius int neighbors)
{

    for(int n=0; n    {
        
        float x = static_cast(-radius * sin(2.0*CV_PI*n/static_cast(neighbors)));
        float y = static_cast(radius * cos(2.0*CV_PI*n/static_cast(neighbors)));
        
        int fx = static_cast(floor(x));
        int fy = static_cast(floor(y));
        int cx = static_cast(ceil(x));
        int cy = static_cast(ceil(y));
        
        float ty = y - fy;
        float tx = x - fx;
        
        float w1 = (1 - tx) * (1 - ty);
        float w2 =      tx  * (1 - ty);
        float w3 = (1 - tx) *      ty;
        float w4 =      tx  *      ty;
        
        for(int i=radius; i < src.rows-radius;i++)
        {
            for(int j=radius;j < src.cols-radius;j++) 
            {
                
                float t = static_cast(w1*src.at(i+fyj+fx) + w2*src.at(i+fyj+cx) + w3*src.at(i+cyj+fx) + w4*src.at(i+cyj+cx));
                
                dst.at(i-radiusj-radius) += ((t > src.at(ij)) || (std::abs(t-src.at(ij)) < std::numeric_limits::epsilon())) << n;
            }
        }
    }
    dst.create(1 lbpBins * lbpBins CV_32FC1);

for (int b = 0; b < lbpBins; b++)
{
for (int c = 0; c < lbpBins; c++)
{

评论

共有 条评论