opencv中16位的矩阵保存成图像,最大灰度值只有32768
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv中16位的矩阵保存成图像,最大灰度值只有32768相关的知识,希望对你有一定的参考价值。
opencv中16位的矩阵保存成图像,最大灰度值只有32768是什么原因?矩阵中最大值是65536,用cvsaveimage保存后,图像就变成15位了的感觉,代码如下,min1 = 1000,max1 = 65536,但是保存下来灰度值最大值就变成32768了
cvSaveImage("123.png",mat_b);
double min1 = 0;
double max1 = 0;
cvMinMaxLoc(mat_b,&min1,&max1);
你是通过什么得到这个数的,看你下面的代码 max1 = 65536 应该没问题追问
在PHOTOSHOP里面打开看的,而且PNG保存出来的图像看起来确实跟FIT的有点不一样
本回答被提问者采纳OpenCV如何获取GLCM灰度共生矩阵
【中文标题】OpenCV如何获取GLCM灰度共生矩阵【英文标题】:OpenCV how to get GLCM gray-level co-occurrence matrix 【发布时间】:2012-04-30 11:42:19 【问题描述】:我正在尝试在 OpenCV 中使用 GLCM(图像中的灰度共现矩阵 (GLCM))提取特征。
在 matlab 中我们有graycomatrix
。我们在 openCV 中是否有任何用于相同目的的功能?如果没有,那么实现它的最佳解决方案是什么?是否有任何可行的示例?
[编辑]
我试过这段代码,但它给出的值与 matlab 结果相比是错误的
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】:有一个类叫CvGLCM:
OpenCV-2.3.1a documentation
不过我没用过。
【讨论】:
我以前用过这个,但没有给出正确的结果,知道为什么吗? 还有什么帮助吗???对我来说解决它真的很重要..我已经用我当前的 GLCM 代码编辑了这个问题,但仍然没有正确的信息。 帮不了你了,我只安装了一个旧版本的 opencv,它没有这个包。我建议你再问一个关于这个问题的编辑部分的问题,人们会更愿意帮助调试代码而不是回答理论问题【参考方案2】:你必须安装 scipy,numpy,skimage。并且 skimage 有模块 skimage.feature 其中包括 skimage.feature.greycomatrix 和 skimage.feature.greycoprops 在那里我们可以计算 ndarray uint8 的 graycoimage 以及 greco 属性instructions
【讨论】:
以上是关于opencv中16位的矩阵保存成图像,最大灰度值只有32768的主要内容,如果未能解决你的问题,请参考以下文章
计算机视觉OpenCV 4高级编程与项目实战(Python版):图像像素统计