高分求助图象分析问题!!如果回答出来可以再加分。 我呀知道扫描一下然后统计一下了。逐个取像素吧。 但是我不会这个算法呀,说以下怎么样 for(i= 0; i< bm.bmhight(); i++) for(j=0;j < ...;j++) { if(......) zh++;}其中if里的语句怎么写? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 找到bmp的文件格式,就可以逐个读取颜色值,读取的同时统计,应当不会很困难的。一般来说介绍图像处理算法的书会有。 我建议你还是研究一下,BMP的图象格式.这个很简单,但是写起来有点长. RGB(101,100,99) RGB(220,10,100)算不算在RGB(100,100,100)和 RGB(150,100,100)之间,好象你没有确定要统计的范围,R G B都是从 0-255之间变化的 你的要求不明确 chenhq(chenhq), 我的要求不是说的那么明白,但是我的意思是明白的。就算是统计RGB(100,100,100)好了。 下面过程是计算图像的直方图的,就是统计灰度图像中256种灰度出现的几率,修改以下就和你用void CMainDoc::DoHistogram(HDIB hdib){ register short i; int c; static DWORD maxh=0; DWORD dwLen; BYTE *ptr; BITMAPINFOHEADER bi; static int maxc=0,minc=256; if( hdib == 0 ) return; for (i=0;i<256;i++) hist[i]=0; dwLen = GlobalSize (hdib); DibInfo (hdib, &bi); ptr = (BYTE *)GlobalLock(hdib); ptr += (DWORD)bi.biSize + PaletteSize((LPSTR)&bi); dwLen = dwLen - (DWORD)bi.biSize - PaletteSize((LPSTR)&bi); while (dwLen--) { c = *ptr ; if(c>255) c = 255; if (c>maxc) maxc = c; else if (c<minc) minc = c; hist[c]++; if (maxh<hist[c]) maxh=hist[c]; ptr++; } GlobalUnlock(hdib); if(histwind != NULL) { ::ShowWindow(histwind,SW_HIDE ); ::ShowWindow(histwind,SW_SHOW ); } return ;} 这个很简单了256色以下的图象是需要用调色板的.查找调色板,获得RGB值16位色有555,565两种模式0123456789abcdef 555模式时 01234位乘8得到r色 56789这五位乘8得到g色 abcde这五位乘8得到b色565模式 01234位乘8得到r色 56789a这6位乘4得到g色 bcdef这五位乘8得到b色24位色时候,一个字节表示一种色彩向量32位的时候,也是一样怎么写就不么我教了把. florist2000(善良的石头) 我是那种超级菜的,我还是不明白,你可以写一下代码么。就256位图。 florist2000(善良的石头) 我是那种超级菜的,我还是不明白,你可以写一下代码么。就256位图。 函数与进程 VC++利用WINPCAP编程的问题 clistctrl排序问题 在vs2005项目使用typelib添加了excel 12的类,添加了这些类后编译时出现了很多错误,怎么解决? fseek的问题,是不是bug... 做过网吧更新系统的哥们来,有钱赚哦 怎么取网络的时间? 对话框与属性页之间的消息传递 grid控件到底如何用啊(哎,菜鸟问题,实在是没办法,谢谢各位了) 我做的数据库程序为什么UPDATE出错 谁能提供acsII和unicode的,以及utf-8和unicode的转换表啊? 请问如何得到图标资源的句柄HICON?
一般来说介绍图像处理算法的书会有。
这个很简单,但是写起来有点长.
RGB(100,100,100)和 RGB(150,100,100)之间,好象你没有确定要统计的范围,R G B都是从 0-255之间变化的
你的要求不明确
void CMainDoc::DoHistogram(HDIB hdib)
{
register short i;
int c;
static DWORD maxh=0;
DWORD dwLen;
BYTE *ptr;
BITMAPINFOHEADER bi;
static int maxc=0,minc=256;
if( hdib == 0 )
return;
for (i=0;i<256;i++)
hist[i]=0;
dwLen = GlobalSize (hdib);
DibInfo (hdib, &bi);
ptr = (BYTE *)GlobalLock(hdib);
ptr += (DWORD)bi.biSize + PaletteSize((LPSTR)&bi);
dwLen = dwLen - (DWORD)bi.biSize - PaletteSize((LPSTR)&bi);
while (dwLen--)
{
c = *ptr ;
if(c>255)
c = 255;
if (c>maxc)
maxc = c;
else if (c<minc)
minc = c;
hist[c]++;
if (maxh<hist[c])
maxh=hist[c];
ptr++;
}
GlobalUnlock(hdib);
if(histwind != NULL)
{
::ShowWindow(histwind,SW_HIDE );
::ShowWindow(histwind,SW_SHOW );
}
return ;
}
555模式时 01234位乘8得到r色
56789这五位乘8得到g色
abcde这五位乘8得到b色565模式
01234位乘8得到r色
56789a这6位乘4得到g色
bcdef这五位乘8得到b色24位色时候,一个字节表示一种色彩向量
32位的时候,也是一样怎么写就不么我教了把.