OpenCV函数参数错误

时间:2014-09-03 18:54:17

标签: c++ eclipse opencv

我正在使用OpenCV模板匹配,我遇到了几个错误而且不知道根本原因是什么。我正在使用Eclipse Juno。

包含错误的示例行:

cv::Mat ref = cv::imread("picture.png");

错误:

Invalid arguments '
Candidates are:
? imread(const ? &, int)
'

根据错误,我想在参数中添加一个整数,但这并没有解决问题。我也尝试将字符串放在一个单独的行上并从中拉出地址,但这也无济于事。

我还得到另一个错误:

C:\Users\User\opencv\build\include/opencv/cv.hpp:50:16: fatal error: 
cv.h: No such file or directory
#include <cv.h>
            ^

编译终止。

这可能是真正的问题。我不明白为什么抛出这个错误,因为该库包含在项目中。我甚至尝试自己包含cv.hcv.hpp(不是整个库的一部分),但这只会造成数十个undefined reference错误。

整个代码:

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv/cv.hpp>
#include <opencv/cv.h>
#include <string.h>

int main()
{
  cv::Mat ref = cv::imread("picture.png");
  cv::Mat tpl = cv::imread("template.png");
  if (ref.empty() || tpl.empty())
    return -1;

  cv::Mat gref, gtpl;
  cv::cvtColor(ref, gref, CV_BGR2GRAY);
  cv::cvtColor(tpl, gtpl, CV_BGR2GRAY);

  cv::Mat res(ref.rows-tpl.rows+1, ref.cols-tpl.cols+1, CV_32FC1);
  cv::matchTemplate(gref, gtpl, res, CV_TM_CCOEFF_NORMED);
  cv::threshold(res, res, 0.8, 1., CV_THRESH_TOZERO);

  while (true)
  {
    double minval, maxval, threshold = 0.8;
    cv::Point minloc, maxloc;
    cv::minMaxLoc(res, &minval, &maxval, &minloc, &maxloc);

    if (maxval >= threshold)
    {
        cv::rectangle(
            ref,
            maxloc,
            cv::Point(maxloc.x + tpl.cols, maxloc.y + tpl.rows),
            CV_RGB(0,255,0), 2
        );
        cv::floodFill(res, maxloc, cv::Scalar(0), 0, cv::Scalar(.1), cv::Scalar(1.));
    }
    else
        break;
  }

  cv::imshow("reference", ref);
  cv::waitKey();
  return 0;
}

0 个答案:

没有答案