全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:813
推到 Plurk!
推到 Facebook!

請教各位高手問題<-請為您的發表文章取一個有意義的的主題名稱

尚未結案
dac
一般會員


發表:14
回覆:24
積分:7
註冊:2005-01-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-21 11:21:45 IP:163.26.xxx.xxx 未訂閱
大家好: 以下是我寫的程式,能否看一下為何不能二值化 //--------------------------------------------------------------
  Graphics::TBitmap* BMP1 = new Graphics::TBitmap();
  BMP1->Assign(Image1->Picture->Bitmap);
  Byte* ptr = NULL;
  pixel_no = 0;
  int region_xi, region_yi, region_xf, region_yf;      
  region_xi = x - 108;
  region_xf = x   108;
  region_yi = y - 92;
  region_yf = y   92;      if(region_xi <= 0)
  {
    region_xi = 0;
  }
  if(region_yi <= 0)
  {
    region_yi = 0;
  }
  if(region_xf >= 337)
  {
    region_xf = 337;
  }
  if(region_yf >= 289)
  {
    region_yf = 289;
  }      for(region_yi; region_yiScanLine[region_yi];        for(region_xi; region_xiPicture->Assign(BMP1);
  delete BMP1;
  return pixel_no;
//------------------------------------------------------------------- 我這個只判斷圖中的一小部份,但改完無法二值化,我檢查過scanline都是255沒辦法動作。請各位高手解惑一下 發表人 - jerrykuo 於 2005/01/21 16:03:47
dac
一般會員


發表:14
回覆:24
積分:7
註冊:2005-01-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-21 11:40:00 IP:163.26.xxx.xxx 未訂閱
抱歉各位高手,我再將CODE重貼,SORRY!! 
 Graphics::TBitmap* BMP1 = new Graphics::TBitmap();
  BMP1->Assign(Image1->Picture->Bitmap);
  Byte* ptr = NULL;
  pixel_no = 0;
  int region_xi, region_yi, region_xf, region_yf;       //i = start_point f = end_point
  region_xi = x - 108;
  region_xf = x   108;
  region_yi = y - 92;
  region_yf = y   92;      if(region_xi <= 0)
  {
    region_xi = 0;
  }
  if(region_yi <= 0)
  {
    region_yi = 0;
  }
  if(region_xf >= 337)
  {
    region_xf = 337;
  }
  if(region_yf >= 289)
  {
    region_yf = 289;
  }      for(region_yi; region_yiScanLine[region_yi];        for(region_xi; region_xiPicture->Assign(BMP1);
  delete BMP1;
  return pixel_no;
}
1666362
初階會員


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-21 14:36:20 IP:61.222.xxx.xxx 未訂閱
BMP1->Assign(Image1->Picture->Bitmap ); BMP1->PixelFormat=pf24bit; ----加入這行試試看 我是新手 多多指教 ^^
TheMoon
中階會員


發表:17
回覆:95
積分:67
註冊:2002-06-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-21 14:44:21 IP:202.39.xxx.xxx 未訂閱
由CODE來看, 應是要在Image中某個矩形區塊內, 尋找純紅色的點, 然後將純紅色點之處標記成白色, 並統計其個數, 其餘點標記成黑色, 對吧? 請問你跑出的結果會發生什麼事?
dac
一般會員


發表:14
回覆:24
積分:7
註冊:2005-01-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-21 14:46:51 IP:163.26.xxx.xxx 未訂閱
各位高手好: 我出來的圖跟原顏色是一樣的。現在我就是沒辦法將他二值化 謝謝高手們解惑
dac
一般會員


發表:14
回覆:24
積分:7
註冊:2005-01-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-21 14:52:30 IP:163.26.xxx.xxx 未訂閱
引言: BMP1->Assign(Image1->Picture->Bitmap ); BMP1->PixelFormat=pf24bit; ----加入這行試試看 我是新手 多多指教 ^^
我加了這一行還無法變成二值化,請教一下還有什麼方式嗎?? 謝謝你
TheMoon
中階會員


發表:17
回覆:95
積分:67
註冊:2002-06-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-01-21 15:15:17 IP:202.39.xxx.xxx 未訂閱
Hello,
我試過您原本的程式碼,
可以得到二值化影像,
請check您程式中的 region_xi, region_yi, region_xf, region_yf 這些值。
(我是用整張圖作, Size為640x480)      for(region_yi=0; region_yi<480; region_yi  )
  {
    ptr = (Byte*) BMP1->ScanLine[region_yi];        for(region_xi=0; region_xi<640; region_xi  )
    {
      if(ptr[region_xi*3 2]==255&&ptr[region_xi*3 1]==0&&ptr[region_xi*3]==0)
      {
        ptr[region_xi*3]=ptr[region_xi*3 1]=ptr[region_xi*3 2]=255;
        pixel_no  ;
      }
      else
      {
        ptr[region_xi*3]=ptr[region_xi*3 1]=ptr[region_xi*3 2]=0;
      }
    }
  }
dac
一般會員


發表:14
回覆:24
積分:7
註冊:2005-01-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-01-21 15:33:29 IP:163.26.xxx.xxx 未訂閱
引言:
Hello,
我試過您原本的程式碼,
可以得到二值化影像,
請check您程式中的 region_xi, region_yi, region_xf, region_yf 這些值。
(我是用整張圖作, Size為640x480)      for(region_yi=0; region_yi<480; region_yi  )
  {
    ptr = (Byte*) BMP1->ScanLine[region_yi];        for(region_xi=0; region_xi<640; region_xi  )
    {
      if(ptr[region_xi*3 2]==255&&ptr[region_xi*3 1]==0&&ptr[region_xi*3]==0)
      {
        ptr[region_xi*3]=ptr[region_xi*3 1]=ptr[region_xi*3 2]=255;
        pixel_no  ;
      }
      else
      {
        ptr[region_xi*3]=ptr[region_xi*3 1]=ptr[region_xi*3 2]=0;
      }
    }
  }
我的範圍只要圖中的一部份做二值化就好了 可否有辦法這樣做
TheMoon
中階會員


發表:17
回覆:95
積分:67
註冊:2002-06-05

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-01-21 15:44:53 IP:202.39.xxx.xxx 未訂閱
引言: 我的範圍只要圖中的一部份做二值化就好了 可否有辦法這樣做
可以, 所以我才要您去確認 region_xi, region_yi, region_xf, region_yf 這些變數的初始值, 如果一開始就是 region_yi>region_yf or region_xi>region_xf 這些情況發生, 會使for迴圈內的程式無法被執行到。
TheMoon
中階會員


發表:17
回覆:95
積分:67
註冊:2002-06-05

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-01-21 15:59:03 IP:202.39.xxx.xxx 未訂閱
以下的code請您參考看看 < class="code"> Graphics::TBitmap* BMP1 = new Graphics::TBitmap(); BMP1->LoadFromFile("N_RGB.bmp"); Byte* ptr = NULL; int pixel_no = 0; int region_xi, region_yi, region_xf, region_yf; int x=100, y=10; int temp_x, temp_y; temp_x = x - 108; region_xf = x 108; temp_y = y - 92; region_yf = y 92; if(temp_x <= 0) { temp_x = 0; } if(temp_y <= 0) { temp_y = 0; } if(region_xf >= 337) { region_xf = 337; } if(region_yf >= 289) { region_yf = 289; } for(region_yi=temp_y; region_yiScanLine[region_yi]; for(region_xi=temp_x; region_xiPicture->Assign(BMP1); delete BMP1;
dac
一般會員


發表:14
回覆:24
積分:7
註冊:2005-01-06

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-01-21 16:02:06 IP:163.26.xxx.xxx 未訂閱
引言:
引言: 我的範圍只要圖中的一部份做二值化就好了 可否有辦法這樣做
可以, 所以我才要您去確認 region_xi, region_yi, region_xf, region_yf 這些變數的初始值, 如果一開始就是 region_yi>region_yf or region_xi>region_xf 這些情況發生, 會使for迴圈內的程式無法被執行到。
如果今天我的圖示337*289我是要217*185然後這個範圍X是69~286 Y是0-92 這樣的情形可以嗎 謝謝你
dac
一般會員


發表:14
回覆:24
積分:7
註冊:2005-01-06

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-01-21 16:17:42 IP:163.26.xxx.xxx 未訂閱
引言:
引言:
引言: 我的範圍只要圖中的一部份做二值化就好了 可否有辦法這樣做
可以, 所以我才要您去確認 region_xi, region_yi, region_xf, region_yf 這些變數的初始值, 如果一開始就是 region_yi>region_yf or region_xi>region_xf 這些情況發生, 會使for迴圈內的程式無法被執行到。
如果今天我的圖示337*289我是要217*185然後這個範圍X是69~286 Y是0-92 這樣的情形可以嗎 謝謝你
我的Y的範圍是0-92 X的範圍是69~286 我有檢查過region_xi...都沒有錯誤 現在就是不知道問題出在哪? 謝謝高手解題
TheMoon
中階會員


發表:17
回覆:95
積分:67
註冊:2002-06-05

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-01-21 17:16:12 IP:202.39.xxx.xxx 未訂閱
引言: 我的Y的範圍是0~92 X的範圍是69~286 我有檢查過region_xi...都沒有錯誤 現在就是不知道問題出在哪? 謝謝高手解題
試試將程式中for迴圈作類似的修改如下:
for(region_yi=temp_y; region_yiScanLine[region_yi];       for(region_xi=temp_x; region_xi
JerryKuo
版主


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

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-01-21 22:24:34 IP:218.168.xxx.xxx 未訂閱
dac你好: 請你儘快將文章標題做適當的更改。
系統時間:2024-05-10 12:32:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!