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

ScanLine與Assign(pBitmap)兩者所顯示的圖像怎會不同???

答題得分者是:taishyang
vega_chun
一般會員


發表:5
回覆:7
積分:2
註冊:2006-12-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-12-28 18:06:16 IP:218.168.xxx.xxx 訂閱
[ code xxxx ]
Graphics::TBitmap *pBitmap;
unsigned char *pImage, *pImgData;
if (pointer != -1)
{
pImgData = (unsigned char *)pointer;
for (int i = 0; i < (int)g_Height; i )
{
pImage = (unsigned char *)pBitmap->ScanLine[i];
memcpy(pImage, pImgData, g_Width*(g_bColor ? 3 : 1));
pImgData = g_Width * (g_bColor ? 3 : 1);
for (int x = 0; x < (int)g_Width; x )
{
if (pImage[x] > Threshold)
pImage[x] = 255;
else
pImage[x] = 0;
}
}

FormMain->ImageWindow->Picture->Assign(pBitmap);
}
[/code ]

這是影像擷取卡的一部份程式
我利用這一行『FormMain->ImageWindow->Picture->Assign(pBitmap); 』來繪出影像
繪出的影像是正確的
影像的資料應該是在pImage裡面對吧?
我直接拿pImage來畫圖
方法為:
[ code xxxx ]
int k = 0;
for (int i = 0; i < 640; i )
{
for (int j = 0; j < 480; j )
{
FormMain->Image1->Canvas->Pixels[i][j] = TColor(RGB(pImage[k], pImage[k], pImage[k]));
k ;
}
}
[/code ]
如此畫出來的影像是錯的,也跟上面之前畫的不一樣
請教可能是什麼問題呢?
感謝
編輯記錄
vega_chun 重新編輯於 2007-12-28 18:12:58, 註解 無‧
taishyang
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-12-29 09:55:27 IP:122.124.xxx.xxx 訂閱
是PixelFormat的關係嗎?
vega_chun
一般會員


發表:5
回覆:7
積分:2
註冊:2006-12-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-01-02 08:47:57 IP:218.168.xxx.xxx 訂閱

===================引 用 taishyang 文 章===================
是PixelFormat的關係嗎?


我有指定單色與彩色的PixelFormat了
所以應與此無關
謝謝

有朋友是跟我說『pBitmap
pImage, pImageImage的起始位置
所以我再試試看了
還是說有其他可能的答案
謝謝
poaivy
中階會員


發表:40
回覆:78
積分:53
註冊:2004-08-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-01-15 17:43:02 IP:140.117.xxx.xxx 訂閱
試看看把 pImage[k] , K每次累加3
因為你問題沒有很明確的說.. 圖片錯了 錯在哪裡??



vega_chun
一般會員


發表:5
回覆:7
積分:2
註冊:2006-12-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-01-24 13:53:27 IP:61.216.xxx.xxx 訂閱
 圖片如下

左上是我第一段程式碼所繪之圖形
左下是第二段程式碼所繪之圖形


編輯記錄
vega_chun 重新編輯於 2008-01-24 14:00:43, 註解 無‧
vega_chun 重新編輯於 2008-01-24 14:01:57, 註解 無‧
vega_chun
一般會員


發表:5
回覆:7
積分:2
註冊:2006-12-20

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-01-24 14:55:08 IP:61.216.xxx.xxx 訂閱
後來把PixelFormat設成pf32bit(原本設pf24bit)
在記憶體中每四個取值(只取前三個第四個不取)
就OK了
在猜想是不是因為Image元件是pf24bit的原因
系統時間:2024-05-08 2:35:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!