• 締切済み

Win32apiでUSBカメラ映像取得のメッセージ

見ていただきありがとうございます。 USBカメラ映像を取得したときWin32apiのswitch(msg){}で特定の処理を行いたいのですが、 USBカメラ映像取得時に発生されるメッセージがわかりません。 インターネット上で探してみるとIDM_USBを使用している方もいるようなのですが、ヘッダファイルの処理などがよくわからず、なし崩し状態になっています。 どなたかご鞭撻のほどよろしくお願いします。

  • alrai
  • お礼率66% (12/18)

みんなの回答

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

>USBカメラ映像を取得したときWin32apiのswitch(msg){}で特定の処理を行いたいのですが、 >USBカメラ映像取得時に発生されるメッセージがわかりません。 そもそもメッセージ投げるものなのか? という疑問が……。 DirectShowでごりごり制御するか、OpenCVで取得するか…ということになるかと思われますが……。 http://imagingsolution.blog107.fc2.com/blog-entry-208.html 「usbカメラ 画像 取り込み」で検索してとりあえず見つけたページ。 まぁ、それぞれのライブラリなどがメッセージを飛ばす。ということはあるかも知れません。 その場合はそちらのライブラリのリファレンスを参照するべきでしょう。

関連するQ&A

  • C言語win32api、エディットボックスから文字列を取得しメッセージ

    C言語win32api、エディットボックスから文字列を取得しメッセージボックスへ出力 質問1 エディットボックスからフォーカスが外れると その中の文字列を取得しメッセージボックスに出力したいのですが 思った通りに出力されません。 フォーカスが外れるとメッセージボックス自体は出てくるのですが エディットボックスに入力した文字列が出力されません。 いろいろ試したんですが文字化けしたり文字列自体が表示されなかったします。 取得と出力の方法を教えていただけませんでしょうか。 kwt[3]=CreateWindowEx(WS_EX_CLIENTEDGE,TEXT("EDIT"), NULL , WS_CHILD | WS_VISIBLE | WS_BORDER |ES_LEFT | ES_AUTOHSCROLL , 90 , 85 , 110 , 25 , hAdd ,(HMENU)EDIT_ID02 ,((LPCREATESTRUCT)(lp))->hInstance , NULL); LPSTR testtex=NULL; LRESULT CALLBACK SubProc(HWND hWnd,UINT msg,WPARAM wp,LPARAM lp) { LPSTR testtex=NULL; switch(msg) { case WM_COMMAND: switch(LOWORD(wp)) { case EDIT_ID02: if(HIWORD(wp)==EN_KILLFOCUS) //フォーカスが外れたら次の処理をする。 { strText = (LPSTR)malloc(GetWindowTextLength(hwnd) + 2); //文字数分のメモリを確保 if(testtex) //testtexがゼロでなければ次の処理をする { GetWindowText(hwnd , testtex , GetWindowTextLength(hwnd) + 2); //エディットのテキストを取得。問題個所 MessageBox(hwnd , testtex , TEXT("") , MB_OK); //取得したテキストをメッセージボックスで出力。問題個所 } free(strText); //メモリを解放 return 0; } return 0; } return 0; } return (CallWindowProc(SubP1, hWnd, msg, wp, lp)); } 質問2 エディットボックスに0~9と「.」(ドット)のみを入力できるようにしたいのですが ウインドウスタイルでES_NUMBERを指定すると「.」が入力できなくなってしまいます。 どのように回避したらいいのでしょうか。 質問3 win32apiとは直接関係ありませんが、たとえば計算結果が1000億を超えるような場合 int型とかの変数ではとても入りきれません。 こういった場合どのようにするのでしょう。

  • win32apiでの動画出力

    win32apiとopenCVを使った動画出力プログラムを作りたいのですが, フリーズしてしまいます. 詳しい方,力を貸してください. 以下にプログラムを載せます. LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { int x, y; int id; int c; char* szWndName = "camera capture"; CvCapture* capture; // IplImage* img; switch (msg) { case WM_CREATE: hDC = GetDC( hWnd ); return DefWindowProc(hWnd, msg, wParam, lParam); case WM_COMMAND: switch(LOWORD(wParam)){ case IDM_END: SendMessage(hWnd, WM_CLOSE, 0, 0L); break; case IDM_USB: capture = cvCaptureFromCAM(0); if(capture == NULL){ MessageBox(hWnd, (LPCTSTR)TEXT("Not camera"), (LPCTSTR)TEXT("Test"), MB_OK); return -1; } while(1){ img = cvQueryFrame(capture); bmpData = (LPDWORD)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, img->width * img->height * 4); iplTobmp(img, bmpInfo, bmpData); StretchDIBits( hDC, 0, 0, img->width, img->height, 0, 0, img->width, img->height, bmpData, &bmpInfo, DIB_RGB_COLORS, SRCCOPY); } ReleaseDC(hWnd, hDC); cvReleaseCapture(&capture); return 0; break; } break; case WM_LBUTTONDOWN: // マウスカーソルが移動したときに送られてくる // 移動先の座標を取得 x = LOWORD( lParam ); y = HIWORD( lParam ); // 座標をテキストファイルに書き込む _ftprintf( g_fp, _T("(%d %d)\n"), x, y ); return 0; case WM_CLOSE: id = MessageBox(hWnd, TEXT("Close?"), TEXT("Close"), MB_OKCANCEL | MB_ICONQUESTION); if(id == IDOK) DestroyWindow(hWnd); return (0L); case WM_DESTROY: PostQuitMessage(0); break; default: return(DefWindowProc(hWnd, msg, wParam, lParam)); } return (0L); }

  • コンソールアプリケーションでのWIN32 APIメッセージ処理

    コンソールアプリケーションでのWIN32 APIメッセージ処理 VisualStdio.NET 2005のC++で作成しているコンソールアプリケーションで、 PostMessageでメッセージを送信しているのに、PeekMessageで検出できません。 下のプログラムに誤った点があるのでしょうか? 尚、ウィンドウハンドルの確認部分はパスしますが、 PostMessageとPeekMessageの引数hWndをNULLに置き換えるとメッセージの検出はできるので、 やはり、ウィンドウハンドルに問題があるのかもしれません。 #include <windows.h> #include <stdio.h> void main( void ) {   char OldTitle[1024], NewTitle[1024];   char WindowText[1024], ConsoleTitle[1024];   HWND hWnd;   MSG Msg;   /*** ウィンドウハンドルの取得 ***/   GetConsoleTitle( OldTitle, 1024 );   wsprintf( NewTitle, "%d/%d", GetTickCount(), GetCurrentProcessId());   SetConsoleTitle( NewTitle );   Sleep(40);   hWnd = FindWindow( NULL, NewTitle );   SetConsoleTitle( OldTitle );   /*** ウィンドウハンドルの確認 ***/   GetWindowText( hWnd, WindowText, 1024 );   GetConsoleTitle( ConsoleTitle, 1024 );   if ( strcmp( WindowText, ConsoleTitle ) != 0 ){     printf( "ウィンドウハンドルが不正です" );     return;   }   /*** メッセージの送信と検出 ***/   PostMessage( hWnd, 1050, 0, 0 );   do{     while ( PeekMessage( &Msg, hWnd, 0, 0, PM_REMOVE )){       printf( "メッセージを検出しました" );       return;     }   } while( 1 ); }

  • Win32 APIに関する質問

    Win32 APIでwidowsプログラミングをしているのですが、 メニューを開きとあるダイアログを開きボタン(これを押すとエディットから、入力されている文字列を取得する) を押すとエディットに入力されている、文字列をメッセージボックスに表示するはずなんですが (Messengerはその問題のボタンがついているプログラム) 「Messenger が原因で USER.EXEにエラーが発生しました。Messenger は終了します」 と出てそのプログラム(Messenger)が、終了させられてしまいます。 GetDlgText()というAPIが原因だと言う所までは分かりましたが、そこからさきがまったく分かりません このバグの解決方法を教えてください ↓がソースです(結構長いのでダイアログのコールバックだけ書きます) BOOL CALLBACK Dialog_RoomOption(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp){ int error; LPTSTR s; HWND edit_RoomAbout; switch(msg){ case WM_INITDIALOG: SetDlgItemText(hwnd,EID_PASSWORDEDIT,"パスワードを入力してください"); return TRUE; case WM_COMMAND: switch(LOWORD(wp)){ case BID_CREATE: GetDlgItemText(hwnd,EID_PASSWORDEDIT,RoomPassword,sizeof(RoomPassword)); MessageBox(hwnd,RoomPassword,TEXT("TESTTEST"),MB_OK); EndDialog(hwnd,BID_CREATE); return TRUE; } break; case WM_CLOSE: EndDialog(hwnd,NULL); return TRUE; } return FALSE; }

  • Win32APIを始めたのですが・・・。

    Window Handleについての質問です。Win32APIではCreateWindow()でチェックボックスを作ることが出来るのですが、 C++でプログラミングしていたところ、困ったことになりました。 まず、クラスのメンバーとしてHWND m_Hwndを宣言し、メンバー関数(CreateChk())において m_Hwnd = CreateWindow(...)とし、WM_CREATEのメッセージ処理内で関数CreateChk()を呼び出して チェックボックスを作るようにしたのですが、WM_CREATEのメッセージ処理を終えると同時にm_Hwndの内容が意味を持たないものに 変わってしまい、チェックボックスの状態を利用することが出来ません。 変数の寿命に関係したものだとは思うのですが、クラスを用いたオブジェクト指向プログラミングも始めたばかりでよくわかりません。 どなたか対処方法をご存知でないでしょうか?

  • C言語とWin32APIで全角かなの文字を取得する方法について。

    いつも、お世話になっております。 小生、只今、WinXPSP3上でC言語とWin32APIを使い、BCC5.5.1でコンパイルしながら、Windowsプログラミングを勉強しています。 今回、ご質問させて頂きたい内容は、 クライアント領域において、全角かなの文字を取得する方法についてです。 自分自身で考えてみたのですが、WM_CHARメッセージの箇所を工夫して利用し、文字を取得する方法と、エディットコントロールにて文字を取得する方法です。 自分自身、WM_CHARメッセージを最近、勉強し始めたところなので、 出来ればWM_CHARメッセージを使用し、処理してみたいのですが。。。 以上です。 お忙しい中、本当に申し訳ございませんが、先輩方アドバイス宜しくお願いします。

  • usbカメラのデータ→rca映像端子に変換する方法について

    大学の研究で高速の画像処理をするためにUSBカメラで取り込んだデータを"画像処理装置 IP7500EB"で処理しようとしています. (http://www.hitachi-hec.co.jp/product/seihin/ganin/7500/7500.html) しかし,画像処理装置の入力がRCA映像端子のみの対応となっているので,USBカメラで取り込んだ情報をRCA映像端子に変換するコネクタを探しています. どなたか知ってらしたら教えて下さい. お願いします.

  • 事故・防犯カメラ映像の著作権など

    交通事故の一部始終を録画していた防犯カメラの映像を、防犯カメラ設置店(コンビニ)より保険会社を通して入手しました。 写っているのは、当方と加害者車両です。 この場合、この映像の著作権は誰にあるのでしょうか? また、例えば防犯カメラ映像に手を加え、車両のナンバーが特定できないように処理しても、私が第三者に映像を見せる事は、プライバシーの問題など含め 何らかの罪に問われますか?

  • カメラからの映像を表示するプログラムを自作したい

    ビデオカメラやCCDからの映像をリアルタイムにパソコン(OS:windows)に表示するプログラム(C++)を自作したいと思っています. 用途は,ラジコンやロボットにカメラをつけてその映像を見ながら操縦する.というものです. (後に,とらえた映像に画像処理を行いたいので自作したいと考えています.) C++やwindouws APIの基本的なプログラミングスキルは有していると前提で構いません.このようなプログラムを勉強して自作していく上で,参考となる書籍やキーワードなどの情報がありましたら教えて頂きたく,何卒よろしくお願い申し上げます.

  • C#でUSBカメラを使うには?

    C#でUSBカメラを使うには? C#でUSBカメラの画像を毎フレーム取得し,画像処理をしたいのですが,どうすればできるでしょうか? 自分で調べてたところ,DirectShow.netを使えばできるそうなんですが,他に方法ってないんでしょうか? DirectShow.netって公式のライブラリじゃないですよね? なにかしら,公式で手段を提供していないのでしょうか? WPFとかでも構いません. なにかしら,情報をお持ちの方がおられましたら,アドバイスよろしくお願いします.