線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1490
推到 Plurk!
推到 Facebook!

怎樣在Image上面畫座標??

尚未結案
1666362
初階會員


發表:66
回覆:124
積分:43
註冊:2004-07-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-04 02:53:36 IP:210.192.xxx.xxx 未訂閱
我把一個連續移動物體的每張圖值心 都找出來 那要怎樣化軌跡呢?? 我ㄧ直畫不出來 會一直畫超過我的image 然後看不到 我是新手 多多指教 ^^
1666362
初階會員


發表:66
回覆:124
積分:43
註冊:2004-07-07

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-04 03:03:49 IP:210.192.xxx.xxx 未訂閱
Image3->Stretch = true;
 Form1->Image3->Canvas->Ellipse(int(XX-4),int(YY-4),int(XX 4),int(YY 4));
 delete Bmp; 
//------------------------------------------------------------------ XX,YY 是我出來的值心 再把點畫到Image3上 結果都沒辦法畫在我所拉的form的Image3上範圍內 form上的Image如果拉很大 就可以看到我所畫出來的全部值心 但是我不想拉很大 想要在我拉的範圍內就全部看到 我再把點算出來 畫到Image已經先用 Image3->Stretch = true; 可是還是沒辦法在我自己拉的Image大小內 全部看到 我是新手 多多指教 ^^ 發表人 - 1666362 於 2004/11/04 11:21:33
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-04 12:39:40 IP:140.129.xxx.xxx 未訂閱
1666362 您好: 有個建議您且先試試。 就是您應該將結果畫在Image3->Picture->Bitmap上, Form1->Image3->Picture->Bitmap->Canvas->Ellipse(int(XX-4),int(YY-4),int(XX 4),int(YY 4)); 不過Image3上Bitmap的產生與大小,您要確認一下。 RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
1666362
初階會員


發表:66
回覆:124
積分:43
註冊:2004-07-07

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-04 13:07:40 IP:61.222.xxx.xxx 未訂閱
引言: 1666362 您好: 有個建議您且先試試。 就是您應該將結果畫在Image3->Picture->Bitmap上, Form1->Image3->Picture->Bitmap->Canvas->Ellipse(int(XX-4),int(YY-4),int(XX 4),int(YY 4)); 不過Image3上Bitmap的產生與大小,您要確認一下。 RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
richtop 大大 我把程式碼改成如下 Form1->Image3->Canvas->Pen->Color=TColor(0x000000ff); Image3->Picture->Bitmap; Image3->Stretch = true; Form1->Image3->Picture->Bitmap->Canvas->Ellipse(int(XX-4),int(YY-4),int(XX 4),int(YY 4)); delete Bmp 我去執行一樣發生同樣問題 就是沒辦法畫出我全部的質心 可是從程式碼去看 又看不出哪邊有問題ㄚ =.= 我是新手 多多指教 ^^
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-04 13:59:44 IP:140.129.xxx.xxx 未訂閱
1666362 您好: 可否把比較詳盡的程式碼貼上來,不然很難從這幾行程式碼發現問題所在。 RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
1666362
初階會員


發表:66
回覆:124
積分:43
註冊:2004-07-07

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-11-04 16:26:21 IP:61.222.xxx.xxx 未訂閱
下面是我的程式碼 我把值心算出來以後 顯示 最後要再Image3上面秀出來  
void __fastcall TForm1::XY()
{
 Graphics::TBitmap *Bmp = new Graphics::TBitmap();
 Byte *ptr;
 int r,g,b;
 int i,j,XX,YY;
 int sum=0,X=0,Y=0;
 Bmp->Assign(Image2->Picture->Bitmap);
 Bmp->PixelFormat=pf24bit;     for (int i=0;iHeight;i   )
   {
    ptr=(Byte*)Bmp->ScanLine[i];
  for (int j=0;jWidth; j   )
    {
     b=ptr[j*3];
     g=ptr[j*3 1];
     r=ptr[j*3 2];        if(r==0&&g==0&&b==0&&iHeight&&jWidth)
    {
     sum=sum 1;
     X=X j;
     Y=Y i;
     XX=X/sum;
     YY=Y/sum;
     Form1->Edit3->Text=XX;
     Form1->Edit4->Text=YY;
    }
    }
 }
 Form1->Memo1->SelText ="X= " IntToStr(XX) ","
                        "Y= " IntToStr(YY) " ; ";
 
 Form1->Image3->Canvas->Pen->Color=TColor(0x000000ff);
 Image3->Stretch = true;
 Form1->Image3->Picture->Bitmap->Canvas->Ellipse(int(XX-4),int(YY-4),int(XX 4),int(YY 4));
 delete Bmp;
} 
在Image3上面一值沒辦法完整呈現我所有的點 =.= form 上的Image3 如果拉很大可以 但是要拉的超大 =.= 我是新手 多多指教 ^^
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-11-04 18:20:58 IP:211.76.xxx.xxx 未訂閱
1666362 您好: 看了您的程式碼,除了算質心的部分好像不太對,其他似乎還好。 另外是不是您使用的圖尺寸很大?而您畫的圓有點小,試著放大半徑畫看看,能不能看到這些點。 RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
1666362
初階會員


發表:66
回覆:124
積分:43
註冊:2004-07-07

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-11-04 20:42:39 IP:61.222.xxx.xxx 未訂閱
我圖片之前先二值化了 然後把我要的物體以黑點為有效點 所以我算質心 先判斷是不是有效點 如果是就把X、Y增加累加 最後除上總點數 //------------------------------------------------------- 圖片很大 半徑也放大 但是 就是沒辦法在我Form上的Image完整的全部畫出來 我是新手 多多指教 ^^
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-11-04 21:56:45 IP:211.76.xxx.xxx 未訂閱
1666362 您好:    
for (int i=0;iHeight;i   )
   { ptr=(Byte*)Bmp->ScanLine[i];
     for (int j=0;jWidth; j   )
        { b=ptr[j*3];
          g=ptr[j*3 1];
          r=ptr[j*3 2];
          if (r==0&&g==0&&b==0&&iHeight&&jWidth)
            { sum=sum 1;
              X=X j;
              Y=Y i;
            }
        }
   }
// 我覺得這一段應該移出來才合理,不然算出來的值應該都很小。
XX=X/sum;
YY=Y/sum;
Form1->Edit3->Text=XX;
Form1->Edit4->Text=YY;
// 按理說您已將Image3->Stretch設成true,所以理論上整張圖應該都看得到,也就是說您畫上的點亦然,除非相對來說太小。
不過不知道您到底看到了什麼?所以也不清楚到底怎麼了?
RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
1666362
初階會員


發表:66
回覆:124
積分:43
註冊:2004-07-07

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-11-05 00:32:34 IP:210.192.xxx.xxx 未訂閱
原本的CODE 我去看 XX , YY 的數值 是正常淂沒問題 所以 移不移出去 並沒沒差別 我是新手 多多指教 ^^
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-11-05 01:09:01 IP:211.76.xxx.xxx 未訂閱
1666362 您好: 的確,您的寫法是每找到一點後就重算其質心位置,所以值心的位置一直在變;而我的建議是最後再算,但兩者最後的結果都是一樣。 您的程式應該是用Image2去讀取每一張圖,再將各張圖的質心算出後,畫在Image3上。 可不可以把Image3的結果上傳(可以先縮小),或將程式整個上傳,方便偵錯。這個問題應該可以解決,只是依現在的資料,我無法找出問題點。 RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
1666362
初階會員


發表:66
回覆:124
積分:43
註冊:2004-07-07

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-11-09 12:53:40 IP:61.222.xxx.xxx 未訂閱
我的圖檔是720*480 如果要看到完整的軌跡 我在form上的Image3 也要拉到720*480 如果我在form上的Image3 拉到360*240 那我就會有不部分看不到 不知道大大 有人可以解決這樣的問題嗎? 我是新手 多多指教 ^^
系統時間:2024-06-29 16:46:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!