【问题标题】:How to Compare an Image with Database in C++ opencv如何在 C++ opencv 中将图像与数据库进行比较
【发布时间】:2013-12-05 06:20:47
【问题描述】:

这可能已经被问过好几次了。但是我觉得我的有点不一样,因为我对概念的理解不够全面,所以我再次发布。

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

我对模糊聚类完全陌生,非常感谢任何可能有帮助的教程/示例代码。

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

编辑 1:使用他们的 Canny 边缘检测器上传了两个样本静脉图案。

Vein Pattern 1

Vein Pattern 2

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

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

请提出一些比较相同的方法。

【问题讨论】:

  • 你能上传一些示例图片吗?

标签: c++ opencv pattern-matching


【解决方案1】:

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

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

}

您可以通过多种方式比较两个文件;如果您发布一些图片,我可能会进一步指导您。您可以尝试阅读一些 OpenCV 文档和相关论文。 This link 将为您提供功能描述的良好开端..

【讨论】:

  • 由于声誉等级,我无法发布图片 :(
  • 上传它们并分享链接。
  • 请立即查看。在问题本身中添加。
  • 您尝试使用Frangi Vessels 获取图像中的血管图,然后进行某种特征描述以继续进行匹配。
  • 我在 opencv 中执行此操作。是否可以在 opencv 中使用 frangi 容器示例 matlab 代码?这行得通吗?
【解决方案2】:

我用这个函数来计时:

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

【讨论】:

    猜你喜欢
    • 2011-11-04
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 2021-06-02
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    相关资源
    最近更新 更多