问题
I am trying to extract features using GLCM (gray-level co-occurrence matrix (GLCM) from image) in OpenCV.
In matlab we have graycomatrix
. Does we have any function in openCV for the same purpose? If not, then what is the best solution to achieve it and is there any working example?
[EDIT]
I tried this code but it gives wrong values as compare to matlab result any better solution/function exist in OpenCV or am I doing any mistake in GLCM process?
char rawdata[4][4] = { {0, 1, 2, 3},
{1, 1, 2, 3},
{1, 0, 2, 0},
{0, 0,0, 3}};
src->imageData = (char*)(&rawdata);
CvGLCM* glcm;
glcm = cvCreateGLCM(src, 2, NULL,4, CV_GLCM_OPTIMIZATION_NONE);
cvCreateGLCMDescriptors(glcm, CV_GLCMDESC_OPTIMIZATION_ALLOWDOUBLENEST);
for (int step=0; step<4; step++)
{
printf("%.3f,", cvGetGLCMDescriptor(glcm, step, CV_GLCMDESC_CONTRAST));
printf("\n");
}
回答1:
There is a class called CvGLCM:
OpenCV-2.3.1a documentation
I have never used it though.
回答2:
You have to install scipy,numpy,skimage. and skimage has module skimage.feature which include skimage.feature.greycomatrix and skimage.feature.greycoprops there we can calculate greycoimage for ndarray uint8 and also greco properties instructions
来源:https://stackoverflow.com/questions/10383117/opencv-how-to-get-glcm-gray-level-co-occurrence-matrix