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

為什麼影像處理後無法顯示在Image上

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


發表:8
回覆:3
積分:2
註冊:2007-10-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-12-19 16:02:41 IP:140.116.xxx.xxx 訂閱
想請問各位,為什麼每次按CapImage的按鈕,都會跳出這個錯誤訊息?先謝謝大家~



[code cpp]
HWND hCapWnd1;
HWND hCapWnd2;
TForm1 *Form1;
unsigned char source[240][320][3];
int i, j, k;
Byte *ptr;
LPVIDEOHDR CaptureData;
LRESULT CALLBACK FrameCallBack( HWND hCapWnd1, Longint lpvhdr )
{
// To get capture data
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)
{
capSetCallbackOnFrame(hCapWnd1,&FrameCallBack);
for(i=0;i<Form1->Panel1->Height;i )
{
ptr=(Byte *) Image1->Picture->Bitmap->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->Refresh();
}

[/code]
------
程式新新新新新手
編輯記錄
paul22235d 重新編輯於 2007-12-19 16:05:03, 註解 無‧
taishyang
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-12-19 16:09:41 IP:122.124.xxx.xxx 訂閱
請用[scan line index out of range]當關鍵字搜尋 ^_^
paul22235d
一般會員


發表:8
回覆:3
積分:2
註冊:2007-10-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-12-20 11:49:21 IP:140.116.xxx.xxx 訂閱
謝謝,已經不會跳出錯誤視窗了,但是Image全都是黑的,也有加PiexlFormat,請問一下,程式上還有盲點嗎?
新加進去的

[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]
------
程式新新新新新手
編輯記錄
paul22235d 重新編輯於 2007-12-20 11:50:27, 註解 無‧
paul22235d 重新編輯於 2007-12-20 11:51:47, 註解 無‧
paul22235d 重新編輯於 2007-12-20 11:53:13, 註解 無‧
taishyang
站務副站長


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-12-20 11:57:20 IP:122.124.xxx.xxx 訂閱
看看像素值是不是都是0, 假如都是0自然就是黑色的
假如都為0是不合理的話,那再檢查為什麼都會是0
這問題自己trace程式不就知道了嗎 ^_^
paul22235d
一般會員


發表:8
回覆:3
積分:2
註冊:2007-10-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-12-20 15:46:22 IP:140.116.xxx.xxx 訂閱
謝謝你,問題已經解決了
------
程式新新新新新手
系統時間:2024-04-30 2:45:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!