【问题标题】:GLCM in opencv2 (Gray-Level Co-occurrence Matrices)opencv2 中的 GLCM(灰度共现矩阵)
【发布时间】:2014-07-21 22:30:28
【问题描述】:

遗留功能 GLCM 尚未在 opencv2 中执行。我使用以下代码:

#import <opencv2/legacy.hpp>

cv::Mat inputIm = [in_image CVMat];
cv::Mat grayIm = [in_image CVGrayscaleMat];

// cv::cvtColor(inputIm, grayIm, cv::COLOR_RGB2GRAY);

// here I get an error: "no matching function..." !!!
CvGLCM* glcm = cvCreateGLCM(grayIm, 1, NULL, 4, CV_GLCM_OPTIMIZATION_LUT);

cvCreateGLCMDescriptors(glcm, CV_GLCMDESC_OPTIMIZATION_ALLOWDOUBLENEST);
double d = cvGetGLCMDescriptor(glcm, 0, CV_GLCMDESC_HOMOGENITY );
double a = 1; double *ave = &a;
double s = 1; double *sd = &s;
cvGetGLCMDescriptorStatistics(glcm, CV_GLCMDESC_ENERGY, ave, sd);

NSLog(@"ave = %f sd = %f", *ave, *sd);

我已经尝试使用命名空间 cv::CvGLCM* glcm = cv::cvCreateGLCM(grayIm,.... - 但没有改变:/

非常感谢您对此的任何帮助!

【问题讨论】:

    标签: c++ opencv glcm


    【解决方案1】:

    Alexander Shishkov 在此处发布的答案最终起到了帮助作用:link1

    我确实交换了 texture.cpp 代码并再次编译了我的 opencv 框架(在此解释:link2:即特别是我重新做了这三个步骤中的最后一步......)。

    完成所有这些后,我的 glcm 代码毫无例外地执行,并且每个 glcm 方法提供两个数字。

    【讨论】:

      【解决方案2】:

      旧版函数cvCreateGLCM 将旧版IplImage* 作为其输入,因此您需要先转换您的cv::Mat 图像。

      试试这个:

      // your input image
      cv::Mat grayIm = [in_image CVGrayscaleMat];
      
      // create a legacy image
      IplImage pGray = grayIm;
      
      // call function
      CvGLCM* glcm = cvCreateGLCM(&pGray, 1, NULL, 4, CV_GLCM_OPTIMIZATION_LUT);
      

      【讨论】:

      • 现在效果好一点了,谢谢!但不知何故 cvCreateGLCM 仍然带来错误:“EXC_BAD_ACCESS (code=1), address=0xdbF31e8”。知道我还缺少什么吗?
      【解决方案3】:

      我在寻找 GLCM“openCV 中 GLCM Haralick 特征的实现”时发现了这个,它得到了 14 个纹理特征中的 12 个

      https://github.com/Abello966/opencv-haralickfeatures

      【讨论】:

      • 不鼓励作为答案链接到外部区域,因为不能保证答案永远存在。请在您的回复正文中提供答案的详细信息,并附上代码的外部链接,但您的答案需要独立存在。我无法评论您的回答是否直接解决了这个问题,因为我对域领域一无所知。
      • 这是一个第三方库的链接,Alan :使用第三方库会使问题变得毫无意义,有利于 - 大概 - 更好测试的部分的代码。 --- 另一方面,OP 自己接受的答案描述了(1)修复 OpenCV 中的代码 - 损坏 - 根据链接到但未在此处解释的建议(2)用这个固定的源代码重新编译 OpenCV。
      猜你喜欢
      • 2019-12-01
      • 1970-01-01
      • 2016-11-12
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多