如何算出一個image的投影總量 |
尚未結案
|
imjoshua
一般會員 發表:36 回覆:21 積分:11 註冊:2005-03-16 發送簡訊給我 |
我的圖是256*256的經爬之前的文章已可顯示出黑色投影量,請問我要用累加的方式從圖0~255顯示出一張圖的總投影量顯示在如Label1上應如何改比較好呢?謝謝!
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// 統計水平與垂直方向的投影量
long ProjectV[256] = {0};
long ProjectH[256] = {0};
long Vmax = 0, Hmax = 0;
Byte *ptr; for(int row = 0; row < 256; row++)
{
ptr = (Byte *)Image1->Picture->Bitmap->ScanLine[row];
for(int col = 0; col < 256; col++)
{
if(ptr[col*3] == 0)//黑點
{
ProjectV[col]++; // 垂直方向投影的數量+1
ProjectH[row]++; // 水平方向投影的數量+1
if(ProjectV[col] > Vmax) Vmax = ProjectV[col]; // 統計垂直投影最大值
if(ProjectH[row] > Hmax) Hmax = ProjectH[row]; // 統計水平投影最大值
}
}
}
}
參考資料 http://delphi.ktop.com.tw/topic.php?topic_id=58197 打擾您保貴的閱讀時間在此跟您說聲抱歉!! 發表人 - imjoshua 於 2005/05/08 17:25:49 發表人 - imjoshua 於 2005/05/08 22:36:40
------
joshua |
snake720105
一般會員 發表:7 回覆:12 積分:3 註冊:2005-02-16 發送簡訊給我 |
|
smilebye
一般會員 發表:21 回覆:33 積分:10 註冊:2004-01-18 發送簡訊給我 |
引言: 我的圖是256*256的經爬之前的文章已可顯示出黑色投影量,請問我要用累加的方式從圖0~255顯示出一張圖的總投影量該如何做呢?謝謝! void __fastcall TForm1::Button1Click(TObject *Sender) { // 統計水平與垂直方向的投影量 long ProjectV[256] = {0}; long ProjectH[256] = {0}; long Vmax = 0, Hmax = 0; Byte *ptr; for(int row = 0; row < 256; row++) { ptr = (Byte *)Image1->Picture->Bitmap->ScanLine[row]; for(int col = 0; col < 256; col++) { if(ptr[col*3] == 0)//黑點 { ProjectV[col]++; // 垂直方向投影的數量+1 ProjectH[row]++; // 水平方向投影的數量+1 if(ProjectV[col] > Vmax) Vmax = ProjectV[col]; // 統計垂直投影最大值 if(ProjectH[row] > Hmax) Hmax = ProjectH[row]; // 統計水平投影最大值 } } } } 參考資料 http://delphi.ktop.com.tw/topic.php?topic_id=58197從圖0~255顯示出一張圖的總投影量???不懂你問的意思 程式
------
我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷! |
imjoshua
一般會員 發表:36 回覆:21 積分:11 註冊:2005-03-16 發送簡訊給我 |
您好,就好像
這張圖橫軸代表座標位置,縱軸代表黑色像素個數;這是一張256*256的圖
我想算出投影量的總total(並不是最大值哦這張圖最大值由圖得知應是62左右..) 可以這樣改嗎?
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// 統計水平與垂直方向的投影量
long ProjectV[256] = {0};
long ProjectH[256] = {0};
long Vmax = 0, Hmax = 0;
long sumtotal = 0 ;//我新加的
Byte *ptr; for(int row = 0; row < 256; row++)
{
ptr = (Byte *)Image1->Picture->Bitmap->ScanLine[row]; for(int col = 0; col < 256; col++)
{
if(ptr[col*3] == 0)
{
ProjectV[col]++; // 垂直方向投影的數量+1
sumtotal += ProjectV[col];//這樣算這張圖的垂直投影總值嗎?
ProjectH[row]++; // 水平方向投影的數量+1
if(ProjectV[col] > Vmax) Vmax = ProjectV[col]; // 統計垂直投影最大值
if(ProjectH[row] > Hmax) Hmax = ProjectH[row]; // 統計水平投影最大值
Edit1->Text = sumtotal ;//把值放在Edit測試
} }
}
//垂直投影曲線
TLineSeries* Series1 = new TLineSeries(this);
Series1->ParentChart = Chart1;
for(int col = 0; col < 256; col++)
Series1->AddXY(col, ProjectV[col], "", clRed);
} 打擾您保貴的閱讀時間在此跟您說聲抱歉!! 發表人 - imjoshua 於 2005/05/23 12:32:31 發表人 - imjoshua 於 2005/05/23 12:39:14
------
joshua |
smilebye
一般會員 發表:21 回覆:33 積分:10 註冊:2004-01-18 發送簡訊給我 |
引言: TLineSeries* Series1 = new TLineSeries(this); Series1->ParentChart = Chart1; for(int col = 0; col < 256; col ) Series1->AddXY(col, ProjectV[col], "", clRed);imjoshua您好: int sum = 0; for(int col = 0; col < 256; col ) sum = ProjectV[col]; //將每一行的投影量加總不知道是不是你要的 程式
------
我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷! |
Fm
初階會員 發表:19 回覆:66 積分:37 註冊:2003-10-15 發送簡訊給我 |
imjoshua你好
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=63079
//新手上路,請多包涵。 /*青青子矜,悠悠我心。但為君故,沈吟至今。*/.. ...沒看到累加.....但是以經po了,無法拿掉... 發表人 - |
imjoshua
一般會員 發表:36 回覆:21 積分:11 註冊:2005-03-16 發送簡訊給我 |
smilebye 您好: 如果跟您講的一樣;其實小弟上面修改後的程式應就不需做更動了嗎? 如果沒錯的話就會如下圖:
< src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=22507217&CC=503363">
但是奇怪的是我用全黑色的圖去做測試竟然總影量高達8421376會不會太誇張@@"應該是256(黑色投影量)*256(座標位置)=65536 如下圖才是...
但小弟只是改了Edit1->Text = sumtotal /128.5;//把值放在Edit測試至於為什麼要乘128.5小弟也不知道原因只是這樣測剛好可以變65536的值…是瞎貓碰上死耗子嗎? 打擾您保貴的閱讀時間在此跟您說聲抱歉!!
------
joshua |
smilebye
一般會員 發表:21 回覆:33 積分:10 註冊:2004-01-18 發送簡訊給我 |
imjoshua您好: 改成這樣試試
void __fastcall TForm1::Button1Click(TObject *Sender) { long ProjectV[256]={0}; long ProjectH[256]={0}; long Vmax = 0, Hmax = 0; long sumtotal = 0; Byte *ptr; for(int row=0;row<256;row ) { ptr = (Byte*)Image1->Picture->Bitmap->ScanLine[row]; for(int col=0;col<256;col ) { if(ptr[col*3]==0) { //ProjectV[col] ; sumtotal ; if(ProjectV[col]> Vmax) Vmax = ProjectV[col]; if(ProjectH[row]> Hmax) Hmax = ProjectH[row]; } } } ShowMessage(sumtotal); }大家好...我是程式設計的肉腳 還請多幫忙唷~ 發表人 - smilebye 於 2005/05/27 00:50:39
------
我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷! |
imjoshua
一般會員 發表:36 回覆:21 積分:11 註冊:2005-03-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |