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

影像處理後顯示在Image上 圖片有問題

答題得分者是:dominicx
GN00291313
一般會員


發表:5
回覆:5
積分:2
註冊:2009-04-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-04-30 03:28:34 IP:140.135.xxx.xxx 訂閱
這是之前有人發貼http://delphi.ktop.com.tw/board.php?cid=168&fid=921&tid=91802拿來用,發現圖片呈像怪怪= =a
不知道有人知道怎麼修正嗎? 我已經收尋其他貼似乎沒有答案.....



[code cpp]
unsigned char source[240][320][3];
int i, j, k;
Byte *ptr;
LPVIDEOHDR CaptureData;
LRESULT CALLBACK FrameCallBack( HWND hCapWnd1, Longint lpvhdr )
{
CaptureData=LPVIDEOHDR(lpvhdr);
ptr=CaptureData->lpData;
for(k=0,i=Form1->Panel1->Height-1;i>=0;i--)
{
for(j=0;j<Form1->Panel1->Width;j )
{
source[i][j][0]=ptr[k 2];
source[i][j][1]=ptr[k 1];
source[i][j][2]=ptr[k];
k =3;
}
}
capSetCallbackOnFrame(hCapWnd1, NULL);
return 0;
}

void __fastcall TForm1::CapImageClick(TObject *Sender)
{

Graphics::TBitmap *BMP1 = new Graphics::TBitmap(); //新加進去的
BMP1->PixelFormat = pf24bit; //新加進去的
BMP1->Width = Panel1->Width; //新加進去的
BMP1->Height = Panel1->Height; //新加進去的

capSetCallbackOnFrame(hCapWnd1,&FrameCallBack);
for(i=0;i<Form1->Panel1->Height;i )
{
ptr=(Byte *) BMP1->ScanLine[i];
for(k=0,j=0;j<Form1->Panel1->Width;j )
{
ptr[k 2]=source[i][j][0];
ptr[k 1]=source[i][j][1];
ptr[k]=source[i][j][2];
k =3;
}
}
Image1->Picture->Assign(BMP1);
}

[/code]
編輯記錄
GN00291313 重新編輯於 2009-04-30 03:30:43, 註解 無‧
GN00291313 重新編輯於 2009-04-30 03:33:03, 註解 無‧
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-04-30 16:20:16 IP:163.28.xxx.xxx 訂閱
因為 Image1 與 Panel1 size 不一樣吧..
Image1->Align = alClient;
------
FPGA驗證, FPGA開發平台, http://smims.com
GN00291313
一般會員


發表:5
回覆:5
積分:2
註冊:2009-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-05-01 03:05:19 IP:140.135.xxx.xxx 訂閱
感謝ikk的寶貴意見!! 
--------------------------------------------------------
因為 Image1 與 Panel1 size 不一樣吧..
Image1->Align = alClient;
--------------------------------------------------------

我試過,可惜還是不行!!

istillloving
高階會員


發表:33
回覆:182
積分:183
註冊:2008-10-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-05-19 11:00:46 IP:140.127.xxx.xxx 訂閱
會不會是for loop 的順序跟影像儲存的順序有誤呢?
------
恩...
dominicx
一般會員


發表:6
回覆:10
積分:13
註冊:2007-05-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-05-21 16:03:33 IP:222.156.xxx.xxx 訂閱
37~39行改成

ptr[k 2]=source[j][i][0];
ptr[k 1]=source[j][i][1];
ptr[k]=source[j][i][2];

試看看
GN00291313
一般會員


發表:5
回覆:5
積分:2
註冊:2009-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-07-10 15:30:17 IP:140.135.xxx.xxx 訂閱

===================引 用 dominicx 文 章===================
37~39行改成

ptr[k 2]=source[j][i][0];
ptr[k 1]=source[j][i][1];
ptr[k]=source[j][i][2];

試看看
-------------------------------------------------------------------------------------------
感謝大大提供寶貴意見,不過畫面一樣(影像變向而已) 謝謝^^
http://webmail.stut.edu.tw/49312092/p.JPG
GN00291313
一般會員


發表:5
回覆:5
積分:2
註冊:2009-04-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-07-11 02:49:47 IP:163.28.xxx.xxx 訂閱

===================引 用 Ktop_Robot 文 章===================
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。
-------------------------------------------------------------------------------------------------------------------------
影像問題尚未解決,><

istillloving
高階會員


發表:33
回覆:182
積分:183
註冊:2008-10-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-08-02 11:15:49 IP:218.169.xxx.xxx 訂閱
你沒把程式碼全部貼出來吧......
說真的看不懂你在寫啥.....

尤其forloop 怎麼k的初始位子不一樣



[code cpp]
for(k=0,i=Form1->Panel1->Height-1;i>=0;i--)
{
for(j=0;j<Form1->Panel1->Width;j )
{

}
}
[/code]

[code cpp]
for(i=0;i<Form1->Panel1->Height;i )
{
ptr=(Byte *) BMP1->ScanLine[i];
for(k=0,j=0;j<Form1->Panel1->Width;j )
{

}
}
[/code]




而且你最後載入BMP1

[code cpp]
Image1->Picture->Assign(BMP1);
[/code]

但是沒看到BMP1有讀取任何東西阿......

你這問題八成是旗標位子弄錯 給個完整程式碼看看吧

多了解ScanLine[i]; 和 k 在做啥吧


===================引 用 GN00291313 文 章===================
這是之前有人發貼http://delphi.ktop.com.tw/board.php?cid=168&fid=921&tid=91802拿來用,發現圖片呈像怪怪= =a
不知道有人知道怎麼修正嗎? 我已經收尋其他貼似乎沒有答案.....



[code cpp]
unsigned char source[240][320][3];
int i, j, k;
Byte *ptr;
LPVIDEOHDR CaptureData;
LRESULT CALLBACK FrameCallBack( HWND hCapWnd1, Longint lpvhdr )
{
CaptureData=LPVIDEOHDR(lpvhdr);
ptr=CaptureData->lpData;
for(k=0,i=Form1->Panel1->Height-1;i>=0;i--)
{
for(j=0;j

[/code]
------
恩...
編輯記錄
istillloving 重新編輯於 2009-08-02 11:17:34, 註解 無‧
istillloving 重新編輯於 2009-08-02 11:19:03, 註解 無‧
istillloving 重新編輯於 2009-08-02 11:20:10, 註解 無‧
istillloving 重新編輯於 2009-08-02 11:22:05, 註解 無‧
系統時間:2024-04-16 15:51:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!