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

影像處理BCB

 
h46382002
一般會員


發表:2
回覆:1
積分:0
註冊:2006-12-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-03-05 22:33:18 IP:140.116.xxx.xxx 訂閱
請問有人可以大概告訴我~~ 這段程式碼有哪段是用攝影機抓照片且一秒抓幾張的是哪段呢? 或者是根本沒有這段~~ 這段程式碼大概是做什麼用的 謝謝大家~~幫我解決一下問題 <textarea class="cpp" rows="10" cols="60" name="code"> extern String FilePath; extern bool StartCapture; extern "C" AM_MEDIA_TYPE g_StillMediaType; class SampleGrabberCallback : public ISampleGrabberCB { public: //static SYSTEMTIME st; //--計算系統時間 // Fake referance counting. STDMETHODIMP_(ULONG) AddRef() { return 1; } STDMETHODIMP_(ULONG) Release() { return 2; } STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject) { if (NULL == ppvObject) return E_POINTER; if (riid == __uuidof(IUnknown)) { *ppvObject = static_cast(this); return S_OK; } if (riid == __uuidof(ISampleGrabberCB)) { *ppvObject = static_cast(this); return S_OK; } return E_NOTIMPL; } STDMETHODIMP SampleCB(double Time, IMediaSample *pSample) { return E_NOTIMPL; } STDMETHODIMP BufferCB(double Time, BYTE *pBuffer, long BufferLen) { static int kk = 1; if( !StartCapture ) { kk = 1; return S_OK; } if ((g_StillMediaType.majortype != MEDIATYPE_Video) || // (g_StillMediaType.subtype != MEDIASUBTYPE_RGB24) || (g_StillMediaType.formattype != FORMAT_VideoInfo) || (g_StillMediaType.cbFormat < sizeof(VIDEOINFOHEADER)) || (g_StillMediaType.pbFormat == NULL)) { return VFW_E_INVALIDMEDIATYPE; } String count; count = FormatFloat("#000",kk) ".bmp"; kk ; VIDEOINFOHEADER *pVideoHeader = (VIDEOINFOHEADER*)g_StillMediaType.pbFormat; if(pVideoHeader==NULL) return E_FAIL; BITMAPINFO BitmapInfo; ZeroMemory(&BitmapInfo, sizeof(BitmapInfo)); CopyMemory(&BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader), sizeof(BITMAPINFOHEADER)); HBITMAP hBitmap; hBitmap = ::CreateDIBitmap(::GetDC(NULL), &(pVideoHeader->bmiHeader), CBM_INIT, pBuffer, &BitmapInfo, DIB_RGB_COLORS); if(hBitmap==NULL) return E_FAIL; BITMAP bitmap; Graphics::TBitmap *Bitmap1=new Graphics::TBitmap(); Bitmap1->Handle=hBitmap; Bitmap1->PixelFormat = pf24bit; // 調整影像 PixelFormat // 取得 Bmp 的 Width & Height GetObject(hBitmap,sizeof(BITMAP),&bitmap); Bitmap1->SaveToFile(count); delete Bitmap1; return S_OK; } }; </textarea>
------
林映辰
jasbeing
一般會員


發表:6
回覆:19
積分:5
註冊:2002-08-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-03-08 01:18:38 IP:211.76.xxx.xxx 訂閱
沒有這段
這只有部分程式
只有開始存影像部分
h46382002
一般會員


發表:2
回覆:1
積分:0
註冊:2006-12-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-03-12 15:54:35 IP:140.116.xxx.xxx 訂閱
<textarea class="cpp" rows="10" cols="60" name="code"> 請在此區域輸入程式碼 </textarea>
extern String FilePath; extern bool StartCapture; extern "C" AM_MEDIA_TYPE g_StillMediaType; class SampleGrabberCallback : public ISampleGrabberCB { public: //static SYSTEMTIME st; //--計算系統時間 // Fake referance counting. STDMETHODIMP_(ULONG) AddRef() { return 1; } STDMETHODIMP_(ULONG) Release() { return 2; } STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject) { if (NULL == ppvObject) return E_POINTER; if (riid == __uuidof(IUnknown)) { *ppvObject = static_cast(this); return S_OK; } if (riid == __uuidof(ISampleGrabberCB)) { *ppvObject = static_cast(this); return S_OK; } return E_NOTIMPL; } STDMETHODIMP SampleCB(double Time, IMediaSample *pSample) { return E_NOTIMPL; } STDMETHODIMP BufferCB(double Time, BYTE *pBuffer, long BufferLen) { static int kk = 1; if( !StartCapture ) { kk = 1; return S_OK; } if ((g_StillMediaType.majortype != MEDIATYPE_Video) || // (g_StillMediaType.subtype != MEDIASUBTYPE_RGB24) || (g_StillMediaType.formattype != FORMAT_VideoInfo) || (g_StillMediaType.cbFormat < sizeof(VIDEOINFOHEADER)) || (g_StillMediaType.pbFormat == NULL)) { return VFW_E_INVALIDMEDIATYPE; } String count; count = FilePath "\\" FormatFloat("#000",kk) ".bmp"; kk ; VIDEOINFOHEADER *pVideoHeader = (VIDEOINFOHEADER*)g_StillMediaType.pbFormat; if(pVideoHeader==NULL) return E_FAIL; BITMAPINFO BitmapInfo; ZeroMemory(&BitmapInfo, sizeof(BitmapInfo)); CopyMemory(&BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader), sizeof(BITMAPINFOHEADER)); HBITMAP hBitmap; hBitmap = ::CreateDIBitmap(::GetDC(NULL), &(pVideoHeader->bmiHeader), CBM_INIT, pBuffer, &BitmapInfo, DIB_RGB_COLORS); if(hBitmap==NULL) return E_FAIL; BITMAP bitmap; Graphics::TBitmap *Bitmap1=new Graphics::TBitmap(); Bitmap1->Handle=hBitmap; Bitmap1->PixelFormat = pf24bit; // 調整影像 PixelFormat // 取得 Bmp 的 Width & Height GetObject(hBitmap,sizeof(BITMAP),&bitmap); Bitmap1->SaveToFile(count); delete Bitmap1; return S_OK; } }; 不好意思唷! 我上次研究了許久應該是這個副程式裡面的Buffer那段式嗎?,請問有人可以回答我之前問的問題嗎? 感謝下面的好心人~~多謝您 ===================引 用 文 章===================
沒有這段
這只有部分程式
只有開始存影像部分
------
林映辰
系統時間:2024-04-30 2:20:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!