AVIファイルからPixcel情報を取得したい – プログラミング – Home

AVIファイルからPixcel情報を取...
 
通知
すべてクリア

AVIファイルからPixcel情報を取得したい


どざえもん
 どざえもん
(@どざえもん)
ゲスト
結合: 16年前
投稿: 1
Topic starter  

現在AVIファイルを一枚一枚取得して、画像処理をさせるプログラムを作成しています
取得した一枚のAVIファイルの表示は出来るのですが、取得した一枚のAVIデータの
輝度情報を取得取得するのはどのようにすればよいのでしょうか?
以下がコードの抜粋になります。
ご指導願います。

LPVOID loadFrame(LPCTSTR lpszAviFilePath, int iIndex) {
PAVIFILE pfAvi;
PAVISTREAM psAvi;
PGETFRAME pgfFrame;
BITMAPINFOHEADER bmiFrame;
LPVOID lpTmp, lpData;

//
if (AVIFileOpen(&pfAvi, lpszAviFilePath, OF_READ, NULL) != 0) {
return NULL;
}
//
ZeroMemory(&bmiFrame, sizeof(BITMAPINFOHEADER));
//
bmiFrame.biSize = sizeof(BITMAPINFOHEADER);
bmiFrame.biPlanes = 1;
bmiFrame.biBitCount = 24;
bmiFrame.biWidth = iAviWidth;
bmiFrame.biHeight = iAviHeight;
//
AVIFileGetStream(pfAvi, &psAvi, streamtypeVIDEO, 0);
//
pgfFrame = AVIStreamGetFrameOpen(psAvi, &bmiFrame);
//
lpTmp = AVIStreamGetFrame(pgfFrame, iIndex);
//
lpData = GlobalAlloc(GPTR,
sizeof(BITMAPINFOHEADER)
+ iAviWidth * iAviHeight * 3);
//
CopyMemory(lpData,
lpTmp,
sizeof(BITMAPINFOHEADER) + iAviWidth * iAviHeight * 3);
AVIStreamGetFrameClose(pgfFrame);
//
AVIStreamRelease(psAvi);
//
AVIFileRelease(pfAvi);
return lpData;
}

//////////////////表示////////////////////////
lpFrame = (LPBYTE)loadFrame(lpszAviFilePath, iAviIndex + 1);

if (lpFrame != NULL) {
//
lpbmiHead = (LPBITMAPINFOHEADER)lpFrame;
lpPixels = lpFrame + lpbmiHead->biSize;
//
iAviIndex++;
//
::InvalidateRgn(hWnd, NULL, FALSE);
}
//
hdc = ::BeginPaint(hWnd,&ps);
   //
if (lpFrame != NULL) {
StretchDIBits(hdc, 5, 5, lpbmiHead->biWidth, lpbmiHead->biHeight,
    0, 0, lpbmiHead->biWidth, lpbmiHead->biHeight,
  lpPixels, (LPBITMAPINFO)lpbmiHead, DIB_RGB_COLORS,
            SRCCOPY);
}
//
::EndPaint(hWnd, &ps);


引用解決済
トピックタグ
しま
 しま
(@しま)
ゲスト
結合: 18年前
投稿: 123
 

無邪気に
> bmiFrame.biBitCount = 24;
> bmiFrame.biWidth = iAviWidth;
> bmiFrame.biHeight = iAviHeight;

としていますが、これでいいという訳が分かりません(知りたいです)

又、同様に
> lpData = GlobalAlloc(GPTR,
> sizeof(BITMAPINFOHEADER)
> + iAviWidth * iAviHeight * 3);
> //
> CopyMemory(lpData,
> lpTmp,
> sizeof(BITMAPINFOHEADER) + iAviWidth * iAviHeight * 3);

と iAviWidth * iAviHeight * 3 を用いていますが、これもこれで良いというわけが
知りたいですね

ところで輝度情報とは具体的に何を指していますか?
HSV/HSB HSL YCbCr/YPbr などいろいろな方式があります
Google などで 輝度 rgb と検索してみてください


返信引用
wclrp ( 'o')
 wclrp ( 'o')
(@wclrp ( 'o'))
ゲスト
結合: 18年前
投稿: 287
 

StretchDIBits,DIB_RGB_COLORSで表示できてるってことは
AVIファイルからPixcel情報を取得できたってことじゃん。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました