kmesnblack
一般會員
發表:3 回覆:3 積分:1 註冊:2005-07-02
發送簡訊給我
|
#include
#pragma hdrstop
#include
#include
#include
#include "Unit1.h"
#include <math.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
HWND hWndC,hWndD; // handle for capture video
CAPTUREPARMS cap_setup;
TClipboard *pCB;
Graphics::TBitmap *picc;
int count = 0;
int chopixel,chomax,chomin,senstive=20; //chose pixel from image1
byte pixel2[320][240];//多值化矩陣(共6值..背景0 h1~h5(1~5)=6)
void __fastcall rgb2hsi(int Pixel,int& h1,float& s1,float& i1);
//=============================================
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
char szDeviceName[80];
char szDeviceVersion[80];
for (int wIndex=0;wIndex<10;wIndex )
{
if(capGetDriverDescription(wIndex, szDeviceName, sizeof(szDeviceName), szDeviceVersion, sizeof(szDeviceVersion)))
cbDriverList->Items->Add(szDeviceName);
}
btPreview->Enabled = false; hWndC = capCreateCaptureWindow("擷取視窗", WS_CHILD | WS_VISIBLE, 0, 0, 320, 240, Form1->Panel1->Handle, 1);
//The capCreateCaptureWindow function creates a capture window if (!hWndC)
ShowMessage("capCreateCaptureWindow initialized failed");
}
//---------------------------------------------------------------------------
LRESULT CALLBACK fpVideoCallback(HWND hWndC,LPVIDEOHDR lpVHdr)
{
char *a = (char *)lpVHdr->lpData;
picc = Form1->Image1->Picture->Bitmap; if(!picc->Empty)
{
picc->PixelFormat = pf32bit;
for (int Row=0; Row <=239 ; Row )
{
RGBQUAD *Pixel = (RGBQUAD *) picc->ScanLine[Row];
for (int Col=0; Col <320; Col , Pixel )
{ Pixel->rgbBlue = (BYTE) (*a );
Pixel->rgbGreen = (BYTE) (*a );
Pixel->rgbRed = (BYTE) (*a ); //Byte 1 個位元組 0 到 255
}
}
Form1->Image1->Invalidate();
}
count ;
return 0;
} //--------------------------------------------------------------------------- void __fastcall TForm1::btDriverConnectClick(TObject *Sender)
{
if(btDriverConnect->Caption == "裝置連結" ) // 此時尚未連結
{
capDriverConnect(hWndC,cbDriverList->ItemIndex);
capCaptureGetSetup(hWndC,&cap_setup,sizeof(cap_setup));
cap_setup.fYield = true;
cap_setup.dwRequestMicroSecPerFrame = 66667;
capFileSetCaptureFile(hWndC,"Capture.avi");
btDriverConnect->Caption="中斷連結";
capOverlay(hWndC,true);
btPreview->Enabled = true; }
else // 此時已經連結
{
capCaptureStop(hWndC);
capPreview(hWndC,false);
capDriverDisconnect(hWndC);
btDriverConnect->Caption= "裝置連結";
btPreview->Enabled = false; }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btPreviewClick(TObject *Sender)
{
capPreviewRate(hWndC,10);
capPreview(hWndC,true);
capSetCallbackOnFrame(hWndC,fpVideoCallback
capGrabFrameNoStop(hWndC} 不知為何..image無法正確ㄉ取出影像..但是panel可以....
我ㄉ連結事Microsoft WDM Image Capture (Win32)
不知道跟這有關ㄇ
哪位大大可以解答我ㄉ疑惑...
我可以傳原始檔給你
|
cashyy
高階會員
發表:117 回覆:322 積分:212 註冊:2004-04-30
發送簡訊給我
|
您好!
請問您是要抓取ccd之後,顯示在image上嗎?是的話請參考:
http://delphi.ktop.com.tw/topic.php?topic_id=46092
http://delphi.ktop.com.tw/topic.php?topic_id=46433
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34085
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=54562 發表人 - cashyy 於 2005/07/03 10:07:55 發表人 - cashyy 於 2005/07/03 10:15:44
|
kmesnblack
一般會員
發表:3 回覆:3 積分:1 註冊:2005-07-02
發送簡訊給我
|
那請問大大...
有辦法直接從panel上面取出RGB...
把整各畫面存成一各2維陣列的RGBㄇ
|
taishyang
站務副站長
發表:377 回覆:5490 積分:4563 註冊:2002-10-08
發送簡訊給我
|
您好: PO程式碼的方式請參考版規說明,煩請修改謝謝您的配合
>
|
cashyy
高階會員
發表:117 回覆:322 積分:212 註冊:2004-04-30
發送簡訊給我
|
引言:
那請問大大...
有辦法直接從panel上面取出RGB...
把整各畫面存成一各2維陣列的RGBㄇ
您好!
請在搜尋中輸入:rgb關鍵字就可以找到相關的文章了!
如:
http://delphi.ktop.com.tw/topic.php?topic_id=71904
http://delphi.ktop.com.tw/topic.php?topic_id=68527
|
myli1017
一般會員
發表:6 回覆:5 積分:2 註冊:2005-11-04
發送簡訊給我
|
請問:我也是跟一樓的程是一樣,不過我的錯誤地方如下
Pixel->rgbBlue = (BYTE) (*a++);
Pixel->rgbGreen = (BYTE) (*a++);
Pixel->rgbRed = (BYTE) (*a++);
訊息如下
|
kmesnblack
一般會員
發表:3 回覆:3 積分:1 註冊:2005-07-02
發送簡訊給我
|
引言:
請問:我也是跟一樓的程是一樣,不過我的錯誤地方如下
Pixel->rgbBlue = (BYTE) (*a++);
Pixel->rgbGreen = (BYTE) (*a++);
Pixel->rgbRed = (BYTE) (*a++);
訊息如下 你這個問題因該是你影像格式沒設...所以產生的問題~~
所以條一下因該就okㄌ
|
myli1017
一般會員
發表:6 回覆:5 積分:2 註冊:2005-11-04
發送簡訊給我
|
請問: 去那裡設定呢,我沒設定過
煩請描述一下,謝謝
|
chilly0783
一般會員
發表:10 回覆:6 積分:8 註冊:2005-09-27
發送簡訊給我
|
引言:
請問: 去那裡設定呢,我沒設定過
煩請描述一下,謝謝
picc->PixelFormat = pf24bit;
|