青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

coreBugZJ

此 blog 已棄。

嘗試 OpenCV 攝像頭 與 Windows 消息機制


    OpenCV 的 highgui 提供了簡單的界面,然而在 Windows 下,它并未將消息機制封裝的足夠好,在使用的時候,若不考慮到消息機制,很容易使界面死掉,同時 OpenCV 本身的運轉也會出問題。


    Windows 下,界面的正常運作需要大量的消息傳遞與處理,然而 OpenCV 的函數,幾乎都與消息無關,目前我只知道 cvWaitKey() 會接收并轉發本線程的消息(恕我無知),但只僅限于被調用后的等待時間內,所以并不能完全保證消息機制的正常運作。程序至少需要考慮到主動接收與轉發消息,以確保界面的正常運作。(也許這可以解釋,為什么許多示例程序中都調用了 cvWaitKey() 函數。)


    Windows 下的消息是線程相關的,啟動新線程又會引出更多的問題。


    下面程序從攝像頭獲取輸入,并在窗口中顯示。三個窗口使用一個線程。


    我嘗試過創建新線程,在新線程中使用 highgui 創建窗口,顯示圖像,然而,窗口的大小正確,卻顯示一片灰色(求指教?。。?。

  

 

 

 附源代碼:
由于線程關系,我使用了最樸素的 Win32 API 。
OpenCV 2.1 + VS2010

  1#include "resource.h"
  2#include <Windows.h>
  3#include <highgui.h>
  4
  5
  6#ifdef  _DEBUG
  7/* debug */
  8
  9#pragma comment( lib, "cv210d.lib" )
 10#pragma comment( lib, "cvaux210d.lib" )
 11#pragma comment( lib, "cxcore210d.lib" )
 12#pragma comment( lib, "cxts210d.lib" )
 13#pragma comment( lib, "highgui210d.lib" )
 14#pragma comment( lib, "ml210d.lib" )
 15#pragma comment( lib, "opencv_ffmpeg210d.lib" )
 16
 17
 18#else
 19/* release */
 20
 21#pragma comment( lib, "cv210.lib" )
 22#pragma comment( lib, "cvaux210.lib" )
 23#pragma comment( lib, "cxcore210.lib" )
 24#pragma comment( lib, "cxts210.lib" )
 25#pragma comment( lib, "highgui210.lib" )
 26#pragma comment( lib, "ml210.lib" )
 27#pragma comment( lib, "opencv_ffmpeg210.lib" )
 28
 29
 30#endif
 31
 32
 33HWND  ghDlg  = NULL;
 34INT   gleft  = 0;
 35INT   gright = 0;
 36BOOL  gexit  = FALSE;
 37
 38
 39void DealAllMsg() {
 40        MSG msg;
 41        while ( ::PeekMessage( &msg, NULL, 00, PM_REMOVE ) ) {
 42                if ( ::IsWindow(ghDlg) && ::IsDialogMessage(ghDlg,&msg) ) {
 43                        continue;
 44                }

 45                ::TranslateMessage( &msg );
 46                ::DispatchMessage( &msg );
 47        }

 48}

 49
 50
 51void DelayTime( DWORD delay ) {
 52        DWORD start = ::GetTickCount();
 53        do {
 54                ::DealAllMsg();
 55                ::Sleep( 2 );
 56        }
 while ( (! gexit) && (::GetTickCount() - start < delay) );
 57}

 58
 59
 60INT_PTR  CALLBACK DlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) {
 61        switch ( uMsg ) {
 62        case WM_INITDIALOG : 
 63                ::CheckRadioButton( hDlg, IDC_RADIO1, IDC_RADIO3, IDC_RADIO1+gleft  );
 64                ::CheckRadioButton( hDlg, IDC_RADIO4, IDC_RADIO6, IDC_RADIO4+gright );
 65                return 1;
 66
 67        case WM_COMMAND : 
 68                switch ( LOWORD(wParam) ) {
 69                case IDC_RADIO1 : 
 70                case IDC_RADIO2 : 
 71                case IDC_RADIO3 : 
 72                        gleft = LOWORD(wParam) - IDC_RADIO1;
 73                        ::CheckRadioButton( hDlg, IDC_RADIO1, IDC_RADIO3, IDC_RADIO1+gleft );
 74                        return 1;
 75                case IDC_RADIO4 : 
 76                case IDC_RADIO5 : 
 77                case IDC_RADIO6 : 
 78                        gright = LOWORD(wParam) - IDC_RADIO4;
 79                        ::CheckRadioButton( hDlg, IDC_RADIO4, IDC_RADIO6, IDC_RADIO4+gright );
 80                        return 1;
 81                case IDCANCEL : 
 82                        gexit = TRUE;
 83                        return 1;
 84                }

 85                break;
 86        }

 87        return 0;
 88}

 89
 90
 91INT  WINAPI  WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR szCmd, INT nShow ) {
 92        char  *nameleft  = "左窗口";
 93        char  *nameright = "右窗口";
 94        CvCapture *cap = NULL;
 95        IplImage  *imgleft = NULL, *imgright = NULL;
 96        int i;
 97
 98        cap = ::cvCreateCameraCapture( -1 );
 99        ::DealAllMsg();
100        if ( NULL == cap ) {
101                ::MessageBox( NULL, TEXT("攝像頭錯誤"), TEXT("錯誤"), MB_ICONERROR | MB_OK );
102                return 0;
103        }

104
105        ::cvNamedWindow( nameleft );
106        ::DealAllMsg();
107        ::cvNamedWindow( nameright );
108        ::DealAllMsg();
109
110        ghDlg = ::CreateDialogParam( hInst, MAKEINTRESOURCE(IDD_GARAGE_DIALOG), NULL, DlgProc, 0 );
111        ::ShowWindow( ghDlg, SW_SHOW );
112        ::DealAllMsg();
113
114        for ( ; ; ) {
115                for ( i = 0; i < 1++i ) {
116                        imgleft = ::cvQueryFrame( cap );
117                        ::DealAllMsg();
118                        if ( NULL == imgleft ) {
119                                break;
120                        }

121                }

122                if ( NULL == imgleft ) {
123                        break;
124                }

125
126                switch ( gleft ) {
127                case 0 : 
128                        ::cvShowImage( nameleft, imgleft );
129                        break;
130                case 1 : 
131                        break;
132                case 2 : 
133                        ::cvDestroyWindow( nameleft );
134                        break;
135                }

136                ::DealAllMsg();
137                if ( gexit ) {
138                        break;
139                }

140
141                imgright = imgleft; // imgright = func( imgleft );
142                ::DealAllMsg();
143
144                switch ( gright ) {
145                case 0 : 
146                        ::cvShowImage( nameright, imgright );
147                        break;
148                case 1 : 
149                        break;
150                case 2 : 
151                        ::cvDestroyWindow( nameright );
152                        break;
153                }

154                ::DealAllMsg();
155                if ( gexit ) {
156                        break;
157                }

158        }

159
160        ::DestroyWindow( ghDlg );
161
162        ::cvDestroyWindow( nameright );
163        ::cvDestroyWindow( nameleft );
164
165        ::cvReleaseCapture( &cap );
166
167        return 0;
168}

169

 

 1//{{NO_DEPENDENCIES}}
 2// Microsoft Visual C++ generated include file.
 3// Used by Garage.rc
 4//
 5#define IDD_GARAGE_DIALOG               101
 6#define IDC_RADIO1                      1001
 7#define IDC_RADIO2                      1002
 8#define IDC_RADIO3                      1003
 9#define IDC_RADIO4                      1004
10#define IDC_RADIO5                      1005
11#define IDC_RADIO6                      1006
12
13
14// Next default values for new objects
15// 
16#ifdef APSTUDIO_INVOKED
17#ifndef APSTUDIO_READONLY_SYMBOLS
18#define _APS_NEXT_RESOURCE_VALUE        102
19#define _APS_NEXT_COMMAND_VALUE         40001
20#define _APS_NEXT_CONTROL_VALUE         1007
21#define _APS_NEXT_SYMED_VALUE           101
22#endif
23#endif
24

 

  1// Microsoft Visual C++ generated resource script.
  2//
  3#include "resource.h"
  4
  5#define APSTUDIO_READONLY_SYMBOLS
  6/////////////////////////////////////////////////////////////////////////////
  7//
  8// Generated from the TEXTINCLUDE 2 resource.
  9//
 10#include "afxres.h"
 11
 12/////////////////////////////////////////////////////////////////////////////
 13#undef APSTUDIO_READONLY_SYMBOLS
 14
 15/////////////////////////////////////////////////////////////////////////////
 16// Chinese (Simplified, PRC) resources
 17
 18#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
 19LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
 20
 21#ifdef APSTUDIO_INVOKED
 22/////////////////////////////////////////////////////////////////////////////
 23//
 24// TEXTINCLUDE
 25//
 26
 271 TEXTINCLUDE 
 28BEGIN
 29    "resource.h\0"
 30END
 31
 322 TEXTINCLUDE 
 33BEGIN
 34    "#include ""afxres.h""\r\n"
 35    "\0"
 36END
 37
 383 TEXTINCLUDE 
 39BEGIN
 40    "\r\n"
 41    "\0"
 42END
 43
 44#endif    // APSTUDIO_INVOKED
 45
 46
 47/////////////////////////////////////////////////////////////////////////////
 48//
 49// Dialog
 50//
 51
 52IDD_GARAGE_DIALOG DIALOGEX 00266156
 53STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME
 54EXSTYLE WS_EX_APPWINDOW
 55CAPTION "OpenCV 攝像頭 - 嘗試"
 56FONT 8"MS Shell Dlg"000x1
 57BEGIN
 58    DEFPUSHBUTTON   "退出",IDCANCEL,209,135,50,14
 59    CONTROL         "播放",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON | WS_GROUP,40,40,32,10
 60    CONTROL         "暫停",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,40,65,32,10
 61    CONTROL         "關閉",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,40,90,32,10
 62    CONTROL         "播放",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON | WS_GROUP,185,40,32,10
 63    CONTROL         "暫停",IDC_RADIO5,"Button",BS_AUTORADIOBUTTON,185,65,32,10
 64    CONTROL         "關閉",IDC_RADIO6,"Button",BS_AUTORADIOBUTTON,185,90,32,10
 65    GROUPBOX        "左窗口",IDC_STATIC,23,20,65,86
 66    GROUPBOX        "右窗口",IDC_STATIC,168,20,65,86
 67END
 68
 69
 70/////////////////////////////////////////////////////////////////////////////
 71//
 72// DESIGNINFO
 73//
 74
 75#ifdef APSTUDIO_INVOKED
 76GUIDELINES DESIGNINFO
 77BEGIN
 78    IDD_GARAGE_DIALOG, DIALOG
 79    BEGIN
 80        LEFTMARGIN, 7
 81        RIGHTMARGIN, 259
 82        TOPMARGIN, 7
 83        BOTTOMMARGIN, 149
 84    END
 85END
 86#endif    // APSTUDIO_INVOKED
 87
 88#endif    // Chinese (Simplified, PRC) resources
 89/////////////////////////////////////////////////////////////////////////////
 90
 91
 92
 93#ifndef APSTUDIO_INVOKED
 94/////////////////////////////////////////////////////////////////////////////
 95//
 96// Generated from the TEXTINCLUDE 3 resource.
 97//
 98
 99
100/////////////////////////////////////////////////////////////////////////////
101#endif    // not APSTUDIO_INVOKED
102
103



 

posted on 2011-11-06 17:59 coreBugZJ 閱讀(2233) 評論(0)  編輯 收藏 引用 所屬分類: VideoImage 、Windows

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            黄色成人av网| 91久久在线视频| 91久久嫩草影院一区二区| 狂野欧美激情性xxxx欧美| 午夜在线视频一区二区区别| 国产精品毛片a∨一区二区三区| 国产性猛交xxxx免费看久久| 久久精品国产免费看久久精品| 午夜影院日韩| 亚洲国产日韩精品| 亚洲人成77777在线观看网| 国产精品xvideos88| 亚洲韩日在线| 免费黄网站欧美| 影音先锋久久精品| 一区二区高清视频在线观看| 国产精品一区二区三区四区五区| 亚洲国产婷婷香蕉久久久久久99| 亚洲欧美网站| 久久久久国产精品麻豆ai换脸| 欧美自拍偷拍午夜视频| 亚洲午夜免费福利视频| 欧美亚洲视频| 久久久精品久久久久| 在线一区免费观看| 性色av香蕉一区二区| 亚洲特级片在线| 欧美日韩免费一区二区三区视频 | 日韩视频中文字幕| 亚洲成色777777在线观看影院| 欧美超级免费视 在线| 国产婷婷色综合av蜜臀av| 亚洲综合视频在线| 久久久伊人欧美| 亚洲成人在线视频网站| 久久精品视频免费播放| 亚洲私人影院| 在线视频免费在线观看一区二区| 性8sex亚洲区入口| 亚洲综合欧美日韩| 国产伦精品一区二区三区四区免费 | 亚洲精品一区中文| 久久久久综合一区二区三区| 欧美日韩国产成人在线| 99亚洲精品| 亚洲视频一区在线| 久久久久久午夜| 亚洲第一区在线观看| 国内久久精品| 久久婷婷国产麻豆91天堂| 亚洲日本va在线观看| 亚洲欧美精品一区| 亚洲美女网站| 亚洲国产精品热久久| 在线成人av| 美腿丝袜亚洲色图| 老牛嫩草一区二区三区日本| 亚洲美女电影在线| 欧美黄在线观看| 久久夜色撩人精品| 亚洲国产精品va| 亚洲另类在线视频| 国产精品久久亚洲7777| 免费日韩一区二区| 国产精品尤物| 日韩视频精品| 国产在线欧美日韩| 亚洲精品一二| 亚洲精品欧美极品| 欧美一区二区在线看| 亚洲精品亚洲人成人网| 亚洲高清久久网| 国产精品一区二区三区观看| 亚洲精品中文字幕在线观看| 在线播放国产一区中文字幕剧情欧美 | 亚洲国产成人tv| 亚洲免费视频观看| 精品91免费| 亚洲精品少妇30p| 欧美中文字幕在线观看| 久久久久久999| 亚洲视频在线观看视频| 亚洲国产视频一区| 亚洲精品网址在线观看| 免费日韩成人| 黄色精品网站| 久久国产欧美| 免费视频最近日韩| 在线日韩欧美视频| 亚洲精品久久久久久久久久久久久| 一区二区免费在线观看| 欧美中文字幕第一页| 久久成人av少妇免费| 91久久久亚洲精品| 亚洲综合丁香| 国产精品久久午夜| 亚洲国产日韩欧美综合久久| 久久美女性网| 亚洲精品欧美精品| 欧美一级久久久久久久大片| 老色批av在线精品| 国产人妖伪娘一区91| 最近中文字幕日韩精品 | 欧美一区1区三区3区公司| 亚洲欧美日韩精品在线| 欧美成人a视频| 亚洲欧美在线磁力| 欧美小视频在线观看| 亚洲精品在线观看免费| 性做久久久久久| 国产精品一区=区| 亚洲精选一区二区| 麻豆av一区二区三区| 欧美在线关看| 免费欧美在线| 亚洲国产精品精华液网站| 亚洲乱码国产乱码精品精天堂 | 欧美黄色免费网站| 亚洲国产高清aⅴ视频| 亚洲三级观看| 国产日韩欧美日韩| 欧美成年人视频网站欧美| 精品999久久久| 久久精品视频99| 亚洲一区二区综合| 亚洲欧美99| 亚洲区国产区| 欧美精品一区二区三区高清aⅴ| 亚洲国产精品久久久久| 蜜桃av综合| 国产日本欧美一区二区| 91久久精品一区| 正在播放欧美视频| 欧美激情一区二区三区在线视频观看| 亚洲欧美成人网| 国产精品一区视频| 欧美人与禽性xxxxx杂性| 裸体一区二区三区| 免费av成人在线| 久久精品视频在线| 久久久久国产精品厨房| 免费观看成人www动漫视频| 久久亚洲春色中文字幕久久久| 韩日精品视频| 国产精品久久久久久久午夜片| 夜夜嗨av一区二区三区| 亚洲一区二区在线视频| 老妇喷水一区二区三区| 美女精品在线| 亚洲国内自拍| 久久香蕉国产线看观看av| 中文一区二区| 国产精品亚洲综合久久| 久久精品日韩| 你懂的国产精品| 久久影音先锋| 性做久久久久久免费观看欧美| 欧美三级午夜理伦三级中文幕| 老司机免费视频一区二区| 久久国产免费看| 亚洲欧美在线高清| 亚洲精品偷拍| 国产精品美女久久福利网站| 麻豆freexxxx性91精品| 99re热这里只有精品视频| 亚洲国产高清视频| 欧美性大战久久久久久久| 久久激情视频久久| 老司机67194精品线观看| 亚洲免费观看| 免费不卡在线视频| 欧美一区二区福利在线| 亚洲国产第一| 欧美一区二视频| 精品动漫一区| 久久久视频精品| 中国av一区| 日韩视频免费大全中文字幕| 亚洲福利视频一区| 猛男gaygay欧美视频| 小黄鸭视频精品导航| 亚洲精品午夜精品| 国产欧美一区二区三区久久| 欧美精品在线播放| 欧美大片在线观看一区| 亚洲性感美女99在线| 一本色道**综合亚洲精品蜜桃冫| 欧美福利精品| 久久裸体艺术| 欧美一区二区大片| 国产精品99久久99久久久二8| 99av国产精品欲麻豆| 亚洲午夜视频在线| 国产精品99久久久久久久女警| 亚洲毛片在线看| 亚洲狼人精品一区二区三区| 国产精品三区www17con| 激情综合色综合久久综合| 亚洲精品视频在线播放| 亚洲人www|