1

遗留功能 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,.... - 但没有变化:/

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

4

3 回答 3

3

最终有帮助的是 Alexander Shishkov 在此处发布的答案:link1

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

做完这一切后,我的 glcm 代码毫无例外地执行,并为每个 glcm 方法提供两个数字。

于 2014-07-31T15:04:49.620 回答
1

legacy 函数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);
于 2014-07-22T04:59:40.023 回答
1

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

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

于 2018-05-09T23:25:02.680 回答