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

取出像素的問題??

答題得分者是:taishyang
residue
中階會員


發表:90
回覆:153
積分:53
註冊:2003-07-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-25 01:49:33 IP:203.203.xxx.xxx 未訂閱
不好意思喔!!請問版大如何把呈現在
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-25 08:39:10 IP:61.230.xxx.xxx 未訂閱
引言: 不好意思喔!!請問版大如何把呈現在>< face="Verdana, Arial, Helvetica"> 之前用 DELPHI 寫的, 你自己改成 C 吧!!... < class="code"> procedure TForm1.Button1Click(Sender: TObject); const _iSize=512*512 ; var bmp : TBitmap ; dwLast :DWORD ; Info: PBitmapInfo; InfoSize: Cardinal; Image, OrgImage: PByte; ImageSize: Cardinal; i : integer ; b : byte ; pb : pbyte ; ms : TMemoryStream ; begin ms:=TMemoryStream.Create ; if FileExists('test.raw') then ms.LoadFromFile('test.raw') else begin for i:=0 to _iSize-1 do begin b:=i mod 256 ; ms.Write(b,1) ; end ; ms.SaveToFile('test.raw') ; end ; dwLast:=GetTickCount ; bmp:=TBitmap.Create ; bmp.PixelFormat:=pf24bit ; bmp.Width:=512 ; bmp.Height:=512 ; pb:=ms.Memory ; with bmp do begin GetDIBSizes(Handle, InfoSize, ImageSize); Info := AllocMem(InfoSize); try Image := AllocMem(ImageSize); OrgImage:=Image ; try GetDIB(Handle, Palette, Info^, Image^); for i:=0 to _iSize-1 do begin pbyte(Image)^:=pb^ ; inc(Image) ; pbyte(Image)^:=pb^ ; inc(Image) ; pbyte(Image)^:=pb^ ; inc(Image) ; inc(pb) ; end ; Image:=OrgImage ; /// SetDIBits(canvas.handle,Handle,0,512,Image,info^,DIB_RGB_COLORS); with Info^.bmiHeader do StretchDIBits(canvas.Handle, 0, 0, 511, 511, 0, 0, biWidth, biHeight, Image, Info^, DIB_RGB_COLORS, SRCCOPY); finally FreeMem(Image, ImageSize); end; finally FreeMem(Info, InfoSize); end; end; image1.picture.graphic:=bmp ; bmp.free ; caption:=format('time=%d',[getTickCount-dwLast]) ; end; 其中 Image 存的就是實際的 圖素 . ...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
residue
中階會員


發表:90
回覆:153
積分:53
註冊:2003-07-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-25 08:54:22 IP:203.203.xxx.xxx 未訂閱
感謝aquarius的回應!! 但是
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-25 10:26:36 IP:211.23.xxx.xxx 未訂閱
引言: 感謝aquarius的回應!! 但是>< face="Verdana, Arial, Helvetica"> 關鍵指令只有兩個啦. GetDIBSizes GetDIB 最重要的就是 GetDIB , 將圖形結構拆解為 HEADER 及 PIXELS . 我沒裝 BCB , 你自個查一下 HELP 看看吧!.. :) ...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-25 14:26:20 IP:140.135.xxx.xxx 未訂閱
residue您好:
引言:Image上的二值化影像把像素擷取出來然後以1和0矩陣方式顯現在Label上
顯示在Label上很奇怪吧(資料量那麼大,用Label實在不適合) 我用Memo您參考看看(Label的話就請您自行測試囉) 請先確認Source是二值影像,再試試下面的code
 
for (int y=0;yHeight;y  )
 {
  for (int x=0;xWidth;x  )
  {
   int Pixel=GetRValue(Image1->Canvas->Pixels[x][y]);
   if (Pixel==255)
    Memo1->Lines->Add("1");
   else
    Memo1->Lines->Add("0");
  }
 }
 
順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~ 發表人 -
residue
中階會員


發表:90
回覆:153
積分:53
註冊:2003-07-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-27 00:52:45 IP:203.203.xxx.xxx 未訂閱
感謝版大的熱情指導!! 但小弟心中還有疑惑哪就是 (1)程式執行時Memo是單行顯示但小弟想要多行顯示就像矩陣那樣請問大大應如何修改(翻閱BCB的書本但查不到範例) (2)程式執行時速度有點慢 應如何變快?? 謝謝大大!!
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-07-27 10:15:21 IP:140.135.xxx.xxx 未訂閱
residue您好: 1. 書上找不到範例,您可以自行練習與測試看看,進步比較快喔 2. 您可以自行判斷速度慢的原因為何這樣您就會更了解Memo囉      那試試下面的code(改用StringGrid1顯示速度應該也變快了)
 
for (int y=0;yHeight;y  )
 {
  for (int x=0;xWidth;x  )
  {
   int Pixel=GetRValue(Image1->Canvas->Pixels[x][y]);
   if (Pixel==255)
    StringGrid1->Cells[x][y]="1";
   else
    StringGrid1->Cells[x][y]="0";
  }
 }
P.S:要把Row以及Col的count改成與Image的長與寬相同 順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~ 發表人 -
residue
中階會員


發表:90
回覆:153
積分:53
註冊:2003-07-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-07-29 16:01:24 IP:203.64.xxx.xxx 未訂閱
感謝大大的回應 小弟的問題OK!! 從版大的身上學到許多東西!!
macoy000
一般會員


發表:2
回覆:2
積分:0
註冊:2003-09-25

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-03-02 09:18:47 IP:61.62.xxx.xxx 未訂閱
請問一下,我利用StringGrid1把影像的灰度值取出來後,想把他存成*.txt檔,可是試了半天,都只能將全部灰度值,存成一整行。想請問各位,要如何才能夠將StringGrid上的值,按照他矩陣的排列方式直接純成txt檔呢? 謝謝各位。
fyt003
一般會員


發表:3
回覆:2
積分:1
註冊:2004-06-01

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-07-22 08:58:37 IP:61.218.xxx.xxx 未訂閱
如果不是已經二直化的圖形 例如要呈現出8bit ~~從0~255 要如何修改??
系統時間:2024-05-20 22:25:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!