opencv2中的GLCM(灰度共生矩阵)
GLCM in opencv2 (Gray-Level Co-occurrence Matrices)
遗留函数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,....——但没有改变:/
最后的帮助是Alexander Shishkov在这里的回答:link1
我确实交换了texture.cpp代码并再次编译了我的openv -framework(在这里解释:link2:即,特别是我重新做了三个步骤的最后一步…)。
做了所有这些,我的glcm-代码执行没有例外,并提供两个数字每个glcm-方法
遗留函数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);
当我在寻找GLCM"在openCV中实现GLCM Haralick特征"时,我发现了这一点,这得到了14个纹理特征中的12个
https://github.com/Abello966/opencv-haralickfeatures相关文章:
- 在 C++ 中将 RGB 更改为灰度
- OpenCV - 如何在灰度图像上应用 Kmeans?
- OpenCV - 如何将灰度转换为彩色(CV_8UC3)?
- C++灰度图像处理
- 如何显示具有 opengl 纹理的灰度图像
- 顺时针旋转 M*N 矩阵 90 度,C++
- C++ Gdi+将图像转换为灰度
- 将 BMP 图像转换为灰度
- 如何使用Canny到32位灰度
- 颜色到灰度转换
- (C++)(Visual Studio) 将高斯模糊滤镜应用于 RGB 中的灰度图像
- 使用 SSE 以最快的速度缩小 8 位灰度图像
- 使用 OpenCV 和 C++将 16 位灰度图像更改为彩色图像
- 有没有办法使用 glDrawPixel 渲染单通道灰度图像?
- goodFeaturesToTrack() 只适用于灰度?
- 如何在OpenCV中减去两个不同尺寸的图像和灰度图像
- 使用 ImageMagick 从像素强度数组创建灰度图像时遇到问题
- OpenCV如何得到GLCM灰度级共现矩阵
- opencv2中的GLCM(灰度共生矩阵)
- 魔鬼库:保存灰度图像在三个矩阵而不是一个