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

請問一下該怎麼塗色

尚未結案
光光
一般會員


發表:19
回覆:19
積分:7
註冊:2004-10-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-15 21:35:10 IP:61.221.xxx.xxx 未訂閱
各位....本人想請問一下....底下有一張圖....圖中有一個類式 橢圓的圖案,橢圓內有黑色(pixel=0)跟白色(pixel=255),那麼該怎麼把 橢圓內白色的區域塗成黑色...... 謝謝各位.... 光光留......
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-16 04:36:20 IP:219.68.xxx.xxx 未訂閱
光光您好...我寫一下演算法..
for(j=0;j<圖高;j++){
   for(i=0;i<圖寬;i++){  //從左邊找
      if(圖[i,j]==黑色){
         LEFT=i;  //找到左邊的界線點
         break;
      }
   }
   for(i=圖寬-1;i>=0;i--){
      if(圖[i,j]==黑色{
         RIGHT=i; //找到右邊的界線點
         break;
      }
   }
   for(i=LEFT;i<=RIGHT;i++){
      圖[i,j]==黑色;  //從剛剛找到的界線點..從LEFT~RIGHT..中間均填入黑色即可
   }
} 
GOOD LUCK <> <> <> < > <> < class="code"> =程式是一種藝術 也是訓練自己的分析規劃= =是段落分明 或是雜亂無章= =是一言以敝 或是廢話連篇= =是一目了然 或是艱深難懂= 體會這份藝術 您會了解另一份喜悅與成就
光光
一般會員


發表:19
回覆:19
積分:7
註冊:2004-10-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-16 20:38:42 IP:61.221.xxx.xxx 未訂閱
請問一下....我程式寫完做執行怎麼發生錯誤 ...發生錯誤訊息如下: 我把程式把po上去
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Graphics::TBitmap *TheBitmap, *TempBitmap;
TempBitmap = new Graphics::TBitmap();
TempBitmap =Image1->Picture->Bitmap;
TempBitmap->PixelFormat = pf8bit;
Byte *ptr1;
int w,h,i,j,LEFT,RIGHT;
w=Image1->Width;
h=Image1->Height;
for(j=0;j=0;i--)
   {
      if(ptr1[i,j]==0)
      {
         RIGHT=i; 
         break;
      }
   }
   for(i=LEFT;i<=RIGHT;i++)
   {
      ptr1[i,j]==0;  
   }
}
}
謝謝各位...光光留...
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-16 23:21:03 IP:219.68.xxx.xxx 未訂閱
光光您好..您的錯誤並不是出在程式邏輯..而是如何讀圖.. 我看您的 Byte *ptr1; 沒有任何讀圖動作!? 僅僅宣告而已..難怪會參考到無效位址..您可以參考以下兩個函式..將圖檔轉換成矩陣.. 做運算後再轉出..     
 
//-------影像轉到矩陣儲存------------------------------------------------------
void image_to_array(TImage * Image1, int *f){
  int x, y;
  int h = Image1->Picture->Height;
  int w = Image1->Picture->Width;
  Byte *ptr;
  for(y = 0; y < h; y++)  {
    ptr = (Byte *) Image1->Picture->Bitmap->ScanLine[y];
    for(x = 0; x < w * 3; x = x + 3)    {
      f[x + 3 * w * y] = (int)ptr[x];   // 將圖片的pixel依序填入 陣列
      f[x + 1 + 3 * w * y] = (int)ptr[x + 1];
      f[x + 2 + 3 * w * y] = (int)ptr[x + 2];
    }
  }
}    //-------矩陣轉到影像------------------------------------------------------
void array_to_image(int *g, TImage * Image2){
  int x, y;  Byte *ptr;
  int h = Image2->Picture->Height;
  int w = Image2->Picture->Width;
  for(y = 0; y < h; y++)  {
    ptr = (Byte *) Image2->Picture->Bitmap->ScanLine[y];
    // 取得圖片第 y    // 軸的起始位置
    for(x = 0; x < w * 3; x = x + 3)    {
      ptr[x + 2] = (Byte) g[x + 3 * w * y];
     // 將陣列的pixel依序填入圖片
      ptr[x + 1] = (Byte) g[(x + 1) + 3 * w * y];
      ptr[x] = (Byte) g[(x + 2) + 3 * w * y];
    }
  }
}
< >
    =程式是一種藝術 也是訓練自己的分析規劃=
=是段落分明 或是雜亂無章=
=是一言以敝 或是廢話連篇=
=是一目了然 或是艱深難懂=
體會這份藝術 您會了解另一份喜悅與成就
光光
一般會員


發表:19
回覆:19
積分:7
註冊:2004-10-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-17 15:09:45 IP:220.130.xxx.xxx 未訂閱
geniustom你好.....不好意思....可不可以將你整個程式po上來.. 然後我在自己先了解一下.....不懂得在請教你.......麻煩你了... 光光留........
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-11-17 17:16:40 IP:192.192.xxx.xxx 未訂閱
光光您好.. 不知道您是不是已經有能力可以寫出"讀圖"的方法.. 小弟目前沒有灌BCB..只是根據您的問題提出幫助您的演算法..    上面POST的那個FUNCTION..也是我在站內搜尋的文章.. 也只是方便您的需求..所以我並沒有寫這個完整的程式.. 畢竟關於讀圖的CODE及SAMPLE太多了..也請您善用"搜尋"功能.. 至於您POST的演算法我看了是沒錯..所以我再幫您一次吧 < class="code"> void __fastcall TForm1::Button1Click(TObject *Sender) { Graphics::TBitmap *TheBitmap, *TempBitmap; TempBitmap = new Graphics::TBitmap(); TempBitmap =Image1->Picture->Bitmap; TempBitmap->PixelFormat = pf8bit; Byte *ptr1; int w,h,i,j,LEFT,RIGHT; w=Image1->Width; h=Image1->Height; for (int i = 0 ; i <=h-1; i++) { ptr1 = (byte *)Image1->Picture->Bitmap->ScanLine[i]; } for(j=0;j=0;i--) { if(ptr1[i,j]==0) { RIGHT=i; break; } } for(i=LEFT;i<=RIGHT;i++) { ptr1[i,j]==0; } } } 這是我直接打的..沒經過COMPILER..不確定有沒有錯.. 如果您對於讀圖..存圖不瞭解的話..也麻煩您看一下以下文章 > > <> <> < > <> < class="code"> =程式是一種藝術 也是訓練自己的分析規劃= =是段落分明 或是雜亂無章= =是一言以敝 或是廢話連篇= =是一目了然 或是艱深難懂= 體會這份藝術 您會了解另一份喜悅與成就 發表人 - geniustom 於 2004/11/17 17:20:52
光光
一般會員


發表:19
回覆:19
積分:7
註冊:2004-10-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-11-17 19:46:38 IP:163.23.xxx.xxx 未訂閱
geniustom你好.....我已經改成你幫我的程式.... 也已經參考過站內的資料 但是還是不行.....出現一樣的錯誤訊息.... 不知道哪裡出錯..... 謝謝你....光光留...
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-11-21 19:07:25 IP:219.68.xxx.xxx 未訂閱
光光 您好,這幾天我有事忙,所以沒空上KTOP,不知道您的問題解決了沒?? 還是仍然懸疑未解??    今天有時間好好看您的程式,發現您的錯誤還真不少 我還特地為了您安裝 src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=18817260&CC=420840"> 其中
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   int w,h,i,j,LEFT=0,RIGHT=0;
   Byte *ptr1;
   Graphics::TBitmap *TempBitmap = new Graphics::TBitmap();
   TempBitmap->Assign(Image1->Picture->Bitmap);
   Image1->Picture->Bitmap->PixelFormat= pf8bit;
   TempBitmap->PixelFormat = pf8bit;
   w=Image1->Width;
   h=Image1->Height;       for(j = 0;j < h; j++){
      ptr1 = (byte *)TempBitmap->ScanLine[j];
      LEFT=0;
      for(i = 0;i < w;i++){
         if(ptr1[i]==0){
            LEFT=i;
            break;
         }
      }
      RIGHT=0;
      for(i = (w-1);i >= 0;i--){
         if(ptr1[i]==0){
            RIGHT=i;
            break;
         }
      }
      for(i = LEFT;i <= RIGHT;i++){
         ptr1[i]=0;
      }
   }
   Image2->Picture->Assign(TempBitmap);
}
原發文意義不是只在求演算法??,到後來卻變成在求程式了 >< 這樣就行了,試試吧!
< >
    =程式是一種藝術 也是訓練自己的分析規劃=
=是段落分明 或是雜亂無章=
=是一言以敝 或是廢話連篇=
=是一目了然 或是艱深難懂=
體會這份藝術 您會了解另一份喜悅與成就
1666362
初階會員


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-11-21 23:01:21 IP:210.192.xxx.xxx 未訂閱
我再想原本
光光
一般會員


發表:19
回覆:19
積分:7
註冊:2004-10-30

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-11-22 22:31:17 IP:163.23.xxx.xxx 未訂閱
謝謝你的回答......不好意思...那我再請問一下比較難的如果橢圓以外還有黑色那我想只把橢圓內的白色塗黑...請問開怎麼做呢....如下圖 非常謝謝你...光光留...
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-11-22 23:32:14 IP:219.68.xxx.xxx 未訂閱
光光您好,通常做影像處理都是使用"電腦視覺" 而不是向您這樣CASE BY CASE的,您應該要根據你的需求,找出一套法則 讓大部分的情況都得以適用,才是對的吧 這篇文章已經來來回回的討論很多次了,我覺得您應該要先熟悉關於圖檔的操作, 在來實做演算法,所以,我還是跟您說演算法,但是如果有程式的問題,麻煩請自行解決, 或是另立主題 廢話完了,關於您這種> <> <> < > <> < class="code"> =程式是一種藝術 也是訓練自己的分析規劃= =是段落分明 或是雜亂無章= =是一言以敝 或是廢話連篇= =是一目了然 或是艱深難懂= 體會這份藝術 您會了解另一份喜悅與成就
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-12-08 18:32:06 IP:220.135.xxx.xxx 未訂閱
光光你好: 希望你儘量不要一題多問,如有分枝出別的問題,請另闢主題討論,大家應該 會很樂意幫助你。 如果有得到你要的結果,也請你為這主題結案,並且為幫助你的站友 給予答題的獎勵。謝謝你的合作。
系統時間:2024-05-21 1:18:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!