作者hsiang915 (嘿嘿嘿)
看板NTUE-CS99
标题[课业]影像处理-BCB版(GRAY+Historgram)
时间Mon Dec 22 09:50:37 2008
物件用到的有Image1、Button1、TChart*1
Image1内嵌大头照,Button为彩转灰、显示Historgram的按钮,
TChart是统计图表,由於语言是BCB所以其他版本的C大概只能参考逻辑了,
Button内的程式码:
void __fastcall TForm1::Button4Click(TObject *Sender)
{
//============统计图设定=============
int Height,Width,x,y,gray;
Height = Image1->Height; //图的宽高值是从IMG1物件自己抓取
Width = Image1->Width;
unsigned char grayinfo2[256]={0}; //用以存放灰阶值的阵列
Chart2->Legend->Visible=false;//关闭图例
Chart2->Title->Text->Clear(); //清空标题
Chart2->Title->Text->Add("灰阶平均分布");//设定标题
Chart2->LeftAxis->Automatic=false;//不要自动设定 这部分 自己Try一下 就知道在干嘛罗!!
Chart2->LeftAxis->AutomaticMinimum=false;
Chart2->LeftAxis->AutomaticMaximum=true;
Chart2->LeftAxis->Minimum=0;//设定 从0开始
Chart2->BottomAxis->Automatic=false;
Chart2->BottomAxis->AutomaticMinimum=false;
Chart2->BottomAxis->AutomaticMaximum=false;
Chart2->BottomAxis->Maximum=255;//最大到255
Chart2->BottomAxis->Minimum=0;
Chart2->BottomAxis->Increment=5;//<====间距
for(int clc;clc<256;clc++) //清空统计资讯
{
grayinfo2[clc]=0; //清除存放灰阶值的阵列
Series1->Clear(); //清除每一条直方图
}
Height = Image1->Height; //图片的宽高值是从IMG1物件
Width = Image1->Width; //自己判断抓出来的。
{
//-----开始针对每一点作影像转换RGB to Gray
//用老师上课说的方法RGB除3转成灰阶值
for(y=0;y<Height;y++)
for(x=0;x<Width;x++)
{
int r=GetRValue(Image1->Canvas->Pixels[x][y]); //呼叫WINXP的巨集
int g=GetGValue(Image1->Canvas->Pixels[x][y]);
int b=GetBValue(Image1->Canvas->Pixels[x][y]);
int gray=(r+g+b)/3;
Image1->Canvas->Pixels[x][y]=RGB(gray,gray,gray);
//↑将算完的灰阶值存入阵列,原理请参课本P211
grayinfo2[gray]++;
//将灰阶值存到对应的值方图阵列(每次+1)
}
}
//***************下面这段程式在更新 直方图的数据*********************
for(int k=0;k<256;k++)
{
Series1->Add(grayinfo2[k],"",k);//将每条值方图的数据从阵列内逐一带入
}
}
//-----------------------------------
我把程式放在LAB靠近冰箱的那台里面,如果有需要请自行潜入参考。
告退~----------------------------------------
执行档下载位置:
http://www.badongo.com/file/12591067
下载完副档名被改成55的话,请自行改回EXE~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.240.186.117
1F:推 kian3256:酷~!!! 12/22 10:41
2F:推 linjrming:有没有执行档可以借来玩玩看啊 12/22 10:47
※ 编辑: hsiang915 来自: 61.64.66.55 (12/22 19:23)
※ 编辑: hsiang915 来自: 61.64.66.55 (12/22 19:25)