错误C3861:' getGaborKernel':未找到标识符

时间:2015-03-16 13:24:22

标签: c++ opencv

我正在尝试构建以下代码,但由于以下错误而失败

error C3861: 'getGaborKernel': identifier not found

我已经包含了必需的头文件和lib文件。可能是什么问题?

#include "stdafx.h"
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <math.h>


using namespace cv;
using namespace std;

int main(int argc, char* argv[])
{
    Mat in = imread("1.jpg",0);          // load grayscale
    Mat dest;
    Mat src_f;
    in.convertTo(src_f,CV_32F);
    extern ostream cerr;

    int kernel_size = 31;
    double sig = 1, th = 0, lm = 1.0, gm = 0.02, ps = 0;
    cv::Mat kernel = 
    getGaborKernel(cv::Size(kernel_size,kernel_size),sig, th, lm, gm, 
     ps);
    cv::filter2D(src_f, dest, CV_32F, kernel);

    cerr << dest(Rect(30,30,10,10)) << endl; // peek into the data

    Mat viz;
    dest.convertTo(viz,CV_8U,1.0/255.0);     
    imshow("k",kernel);
    imshow("d",viz);
    waitKey();
    return 0;
 }

1 个答案:

答案 0 :(得分:0)

当C ++错过原型时会发出错误。您的来源显然没有包含带有相应原型的头文件,或原型被#ifdef隐藏。

  • 查找您希望它包含getGaborKernel原型的页眉文件。
  • 选中Show includes选项以查看实际包含的头文件。验证第一步中找到的标题是否在列表中。
  • 检查选项Preprocess to a file以查看在处理生成的#ifdef文件中的所有.i后预处理器输出的内容。检查原型不在输出中的原因。

  • 找到问题后取消选中这两个选项。 Preprocess to a file选项获取.obj文件而不是.i非常重要。