如何获取一个小球的平均灰度值啊
怎么获取一个小球的平均灰度值啊?
大家好!我想在一幅图片中识别一个小球,初步设想是把小球分割出来成为一个小图片,再将小球进行灰度化,求取平均灰度值后二值化。对这个想法的可行性有意见的感谢留言啊!
//////////////////////////////////////////////////////////////////
谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢
主要想求教怎么获取平均灰度值啊?
我先定义了int graylevel;打算把平均灰度值赋值给它
在灰度化函数中定义如下
int sum=0;
int nWidth=ds.dsBm.bmWidth; //获取窗口宽度赋值给nWidth
int nHeight=ds.dsBm.bmHeight; //获取窗口高度赋值给nHeight
int nSize=nWidth*nHeight;
for(i=0;i <nColors;i++)///开始灰度化
{
long ISquareSum=pRGB[i].rgbRed*pRGB[i].rgbRed
+pRGB[i].rgbGreen*pRGB[i].rgbGreen
+pRGB[i].rgbBlue*pRGB[i].rgbBlue;
int nGray=(int)sqrt(((doubleISquareSum)/3);
pLP-> palPalEntry[i].peRed=nGray;
pLP-> palPalEntry[i].peGreen=nGray;
pLP-> palPalEntry[i].peBlue=nGray;
pLP-> palPalEntry[i].peFlags=0;
sum=sum+nGray;
}
graylevel=sum/nSize;
这样对不?
//////////////////////////////////////////////////////////////////
谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢
还有我想把graylevel在编辑框里显示出来,用
m_Edit_GrayLevel=_T(graylevel);
UpdateData(false);对不?
这里我挺糊涂的是:_T(graylevel)中的graylevel我定义的是int类型的,一定要是char型的吗?谢谢阿
//////////////////////////////////////////////////////////////////
谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢
------解决方案--------------------
UP,算法不知道。。
有个思路,把RGB格式的先转换为YUV格式,Y就是灰度。。
------解决方案--------------------
平均灰度值:计算方法感觉对。
灰度值的取值范围是:0-255没有其他灰度了
所以char型int型都可以表示灰度,如果类定义中类型那样,就没法说了。
大家好!我想在一幅图片中识别一个小球,初步设想是把小球分割出来成为一个小图片,再将小球进行灰度化,求取平均灰度值后二值化。对这个想法的可行性有意见的感谢留言啊!
//////////////////////////////////////////////////////////////////
谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢
主要想求教怎么获取平均灰度值啊?
我先定义了int graylevel;打算把平均灰度值赋值给它
在灰度化函数中定义如下
int sum=0;
int nWidth=ds.dsBm.bmWidth; //获取窗口宽度赋值给nWidth
int nHeight=ds.dsBm.bmHeight; //获取窗口高度赋值给nHeight
int nSize=nWidth*nHeight;
for(i=0;i <nColors;i++)///开始灰度化
{
long ISquareSum=pRGB[i].rgbRed*pRGB[i].rgbRed
+pRGB[i].rgbGreen*pRGB[i].rgbGreen
+pRGB[i].rgbBlue*pRGB[i].rgbBlue;
int nGray=(int)sqrt(((doubleISquareSum)/3);
pLP-> palPalEntry[i].peRed=nGray;
pLP-> palPalEntry[i].peGreen=nGray;
pLP-> palPalEntry[i].peBlue=nGray;
pLP-> palPalEntry[i].peFlags=0;
sum=sum+nGray;
}
graylevel=sum/nSize;
这样对不?
//////////////////////////////////////////////////////////////////
谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢
还有我想把graylevel在编辑框里显示出来,用
m_Edit_GrayLevel=_T(graylevel);
UpdateData(false);对不?
这里我挺糊涂的是:_T(graylevel)中的graylevel我定义的是int类型的,一定要是char型的吗?谢谢阿
//////////////////////////////////////////////////////////////////
谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢
------解决方案--------------------
UP,算法不知道。。
有个思路,把RGB格式的先转换为YUV格式,Y就是灰度。。
------解决方案--------------------
平均灰度值:计算方法感觉对。
灰度值的取值范围是:0-255没有其他灰度了
所以char型int型都可以表示灰度,如果类定义中类型那样,就没法说了。