繁体   English   中英

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

[英]How to Compare an Image with Database in C++ opencv

之前可能已经问过几次了。 但是我觉得我的与众不同,并且由于我对概念缺乏完全的了解,因此我将其再次发布。

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

我是模糊聚类的新手,任何可能会有所帮助的教程/示例代码都将不胜感激。

另外,您能否建议如何比较从照相机捕获的文件与Linux目录中的文件?

编辑1:使用Canny Edge Detector上传了两个样本静脉模式。

静脉图案1

静脉图案2

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

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

请提出一些比较方法。

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

#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文档和相关文章。 此链接将为您提供功能描述的入门。

我将此功能用于计时:

#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; 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM