人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VideoForWindowsを使って,USBカメラからピクセル単位の色情報を取り出したいと思っています.WindowsXP,VisualC++6.0,Win32 Application,USB-CCD

WEBを見ると,
capDriverConnect,capSetCallbackOnFrame,capPreviewRate,capPreview
とし,
LRESULT PASCAL FrameCallback( HWND hWnd, LPVIDEOHDR lpVHdr )
{
memcpy( m_lpData, lpVHdr->lpData, lpVHdr->dwBufferLength );
return TRUE;
}
のようにコールバックすればいいとのことなのですが,
実行時にmemcpyのところで0xC0000005: Access Violationとエラーが発生してしまいます.
カメラ画像は表示されていますし,
capFileSaveDIB( hWndCap,filename)で保存もできています.
lpVHdr->lpDataにデータを入力する関数があるのでしょうか?

ご存知のかたがいらっしゃいましたら,よろしくお願いいたします.

●質問者: rockafeller
●カテゴリ:コンピュータ
✍キーワード:access application C++ CCD Pascal
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● nitscape
●80ポイント

http://www.google.co.jp/

Google

Access Violationは不正なアドレスのメモリにアクセスしたときに出るエラーです。そのためmemcpyに渡しているポインタなり長さのいずれかが変な値になっているのだと思います。

一番ありえる原因はm_lpDataだと思います。どこでメモリを確保しているのでしょうか?(newなどでどのくらいのサイズを取っているのでしょうか?最低でもlpVHdr->dwBufferLengthに書かれているバイト数が必要になります)


参考にならないかもしれませんが私なら以下のようにします。

LRESULT PASCAL FrameCallback( HWND hWnd, LPVIDEOHDR lpVHdr )

{

if(lpVHdr == NULL)

return FALSE;


BYTE* pData;

pData = new BYTE[lpVHdr->dwBufferLength];

if(pData == NULL)

return FALSE;


memcpy(pData,lpVHdr->lpData, lpVHdr->dwBufferLength);


(....pDataのアドレスをどこかに投げるための処理。後で「delete pData;」を実行しないとメモリリークを起こす..)


return TRUE;

}


>lpVHdr->lpDataにデータを入力する関数があるのでしょうか?

これはVFW(Video for Windows)が勝手にデータを代入します。FrameCallback関数を呼び出すところはありませんよね?呼び出すのはVFWが行います。その際にVFWがデータを入れています。


がんばってください。


2 ● SevenS
●10ポイント

http://www.katto.comm.waseda.ac.jp/~katto/Class/GazoTokuron/code...

ビデオキャプチャ

以前VFWを触ったことがありますが、ソースもなくなり、キャプチャ環境がないので力にはなれないかもしれませんが、念の為自分が陥ったミスをいくつか。

・m_lpDataが確保されているか?

・capCaptureSetSetupは呼んだか?

・コールバック内でフォーマットを見て、RGB_24になっているか?

があります。

キャプチャプログラムならばcapOverlayは必要ないでしょうし、おそらく引数や条件式のちょっとした修正で直ると思います。

ソースを見る限り、言語はC++と勝手に判断しますが、m_lpDataをメンバとするクラスがちゃんと構築されているか(またはstatic宣言)も、もしかしたら問題になっているかもしれませんね。

キャプチャだけなら、DirectShowの方が若干楽にできた気もします。環境に問題があるのなら仕方ありませんが、C++との相性もいいので、ご一考下さい。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ