residue
中階會員
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表:90 回覆:153 積分:53 註冊:2003-07-02
發送簡訊給我
|
不好意思喔!! ![]() 請問版大如何把呈現在
|
aquarius
資深會員
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表:3 回覆:347 積分:330 註冊:2003-05-21
發送簡訊給我
|
引言:
不好意思喔!! 請問版大如何把呈現在>>< 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
中階會員
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表:90 回覆:153 積分:53 註冊:2003-07-02
發送簡訊給我
|
感謝aquarius的回應!! ![]()
但是
|
aquarius
資深會員
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表:3 回覆:347 積分:330 註冊:2003-05-21
發送簡訊給我
|
引言:
感謝aquarius的回應!!
但是>>< face="Verdana, Arial, Helvetica"> 關鍵指令只有兩個啦. GetDIBSizes
GetDIB 最重要的就是 GetDIB , 將圖形結構拆解為 HEADER 及 PIXELS .
我沒裝 BCB , 你自個查一下 HELP 看看吧!.. :) ...Aquarius
------ 水瓶男的blog: http://791909.blogspot.com
|
taishyang
站務副站長
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](http://delphi.ktop.com.tw/download.php?download=upload/462c1ab02cd1c_Pic.jpg) 發表:377 回覆:5490 積分:4563 註冊:2002-10-08
發送簡訊給我
|
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
中階會員
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表:90 回覆:153 積分:53 註冊:2003-07-02
發送簡訊給我
|
感謝版大的熱情指導!!
但小弟心中還有疑惑哪就是
(1)程式執行時Memo是單行顯示但小弟想要多行顯示就像矩陣那樣請問大大應如何修改(翻閱BCB的書本但查不到範例)
(2)程式執行時速度有點慢 應如何變快?? 謝謝大大!!
|
taishyang
站務副站長
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](http://delphi.ktop.com.tw/download.php?download=upload/462c1ab02cd1c_Pic.jpg) 發表:377 回覆:5490 積分:4563 註冊:2002-10-08
發送簡訊給我
|
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
中階會員
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表:90 回覆:153 積分:53 註冊:2003-07-02
發送簡訊給我
|
感謝大大的回應 小弟的問題OK!!
從版大的身上學到許多東西!!
|
macoy000
一般會員
![](./myimg/board/mystar_empty.gif)
![](images/icon_photo_none.gif) 發表:2 回覆:2 積分:0 註冊:2003-09-25
發送簡訊給我
|
請問一下,我利用StringGrid1把影像的灰度值取出來後,想把他存成*.txt檔,可是試了半天,都只能將全部灰度值,存成一整行。想請問各位,要如何才能夠將StringGrid上的值,按照他矩陣的排列方式直接純成txt檔呢? 謝謝各位。
|
fyt003
一般會員
![](./myimg/board/mystar_empty.gif)
![](images/icon_photo_none.gif) 發表:3 回覆:2 積分:1 註冊:2004-06-01
發送簡訊給我
|
如果不是已經二直化的圖形
例如要呈現出8bit ~~從0~255
要如何修改??
|