被指標搞混了, 請幫幫忙! |
尚未結案
|
tracychen
一般會員 發表:7 回覆:9 積分:3 註冊:2003-08-13 發送簡訊給我 |
請問各位大大: 我在一個Form上加了一個可以load *.tif檔的元件(EBW16Image1)
圖檔是順利load進來了
但我想要讀取影像上每個像素的值並存成.txt檔的部分
卻一直有問題
function GetPixel: void(long, long, long*)
GetPixel(i,j,紀錄像素(i,j)值的陣列的指標)-->應該是這麼說吧!? 不知道是哪裡搞混了?
程式跑的N久的 當在那裡
請各位大大幫忙! 程式如下: void __fastcall TForm1::btnOpenClick(TObject *Sender)
{ if (OpenDialog1->Execute())
{
EBW16Image1->Load((WideString)(OpenDialog1->FileName.c_str()));
}
else
{
ShowMessage("Cannot open the file!");
return;
} w = EBW16Image1->ImageWidth;
h = EBW16Image1->ImageHeight; long *data = (long*)malloc(sizeof(long)*w*h);
for (int i = 0; i < w*h; i++)
data[i] = 0; for (int j = 0; j < h; j++ )
{
for (int i = 0; i < w; i++)
{
EBW16Image1->GetPixel(i,j,&data[j*w+i]);
}
} FILE *out;
out = fopen("D:\test.txt","w+");
for (int i = 0; i < w*h; i++)
fprintf(out, " %d", data[i]);
fclose(out); free(data);
}
|
tracychen
一般會員 發表:7 回覆:9 積分:3 註冊:2003-08-13 發送簡訊給我 |
|
JerryKuo
版主 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
|
tracychen
一般會員 發表:7 回覆:9 積分:3 註冊:2003-08-13 發送簡訊給我 |
|
JerryKuo
版主 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
|
Royce520
高階會員 發表:18 回覆:157 積分:100 註冊:2002-09-13 發送簡訊給我 |
tracychen 你好,
我想你會這段程式碼基本上沒有什麼錯
會花很多時間 是因為有幾個原因: (1) 你要看 *.tif 檔案的大小 通常是十幾二十 MB 的檔案...
所以 檔案全部讀入 就要花不少時間 (2) 要看圖檔的長度與寬度... 如果是 1xxx * 1xxx 的大小,
算算就知道要多少次動作; 因此, GetPixel(...) 這個函數
會被叫用很多次....他很花時間的 (3) 10 bit 理論值是在 0 ~ 1023, 不過資料通常是儲存在依個 WORD
中, 所以他會做一個處理... 那就是 wData << 6 .... 這樣資料
數值就變大了.... 也因此... 你也不需要宣告 long 來存取資料
一般用 WORD 就夠了.... 當然 要看你的 tif 格式囉 *真實的事物最美, 簡單的道理最好, 我能體會的 太少* 發表人 - royce520 於 2003/09/18 23:23:28
------
不要忘記呼吸,不要忘記編程! ∩__∩ |
tracychen
一般會員 發表:7 回覆:9 積分:3 註冊:2003-08-13 發送簡訊給我 |
|
tracychen
一般會員 發表:7 回覆:9 積分:3 註冊:2003-08-13 發送簡訊給我 |
謝謝各位大大的回應!
我的問題已順利解決了!
我不使用GetPixel()
而改用另一個function :GetImagePointer()來得到每個像素的指標
而且效率改善很多 謝謝各位大大的幫助! 程式如下: if (OpenDialog1->Execute())
{
EBW16Image1->Load((WideString)(OpenDialog1->FileName.c_str()));
}
else
{
ShowMessage("Cannot open the file!");
return;
} w = EBW16Image1->ImageWidth;
h = EBW16Image1->ImageHeight; vector
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |