如何在C ++ opencv中将图像与数据库进行比较

时间:2013-11-16 02:10:56

标签: c++ opencv pattern-matching

之前可能已多次询问过这个问题。但我觉得我有点不同,因为我对概念缺乏完整的理解,所以我再次发布它。

我正在研究在Ubuntu上用C ++编写的opencv代码,它可以匹配静脉模式。我拍摄了4张静脉图像。在我的程序中,我想从红外摄像机捕获一个新图像,并将其与图像目录中的图像进行比较。我计划使用模糊C聚类算法进行匹配。我创建了一个用户菜单,其中一个选项是将我的算法与FLANN,SIFT等进行比较。此比较基于所花费的时间。你如何计算计算所需的时间?

我是模糊聚类的新手,非常感谢任何可能有用的教程/示例代码。

另外,您能否建议如何将从摄像头捕获的文件与linux目录中的文件进行比较?

编辑1:使用Canny Edge Detectors上传了两个样本静脉图案。

Vein Pattern 1

Vein Pattern 2

www.i.imgur.com/mvt3kIy.jpg(Canny Edge 1)

www.i.imgur.com/8GwaLTu.jpg(Canny Edge 2)

请建议一些比较相同的方法。

2 个答案:

答案 0 :(得分:0)

计算一组指令之间经过的时间

#include <time>

int main()
{

    // whatever code

    clock_t tstart = clock();

    /// more code and implementations

    cout << "Processing time = " << (double)(clock() - tstart)/(CLOCKS_PER_SEC) << " second(s)" << endl;

}

您可以通过多种方式比较2个文件;如果您发布一些图像,我可能会进一步指导您。您可以尝试阅读一些OpenCV文档和相关文章。 This link将为您提供功能描述的先机。

答案 1 :(得分:0)

我将此功能用于计时:

#include <sys/time.h>
#include <iostream>

inline long getMilliSecs()
{
  timeval t;
  gettimeofday(&t, NULL);
  return t.tv_sec*1000 + t.tv_usec/1000;
}

int main()
{
  long start_time = getMilliSecs();
///
//do stuff;
///
  long end_time = getMilliSecs();
std::cout << ((double)(end_time - start_time))/1000 << " seconds" << std::endl; 
}