91aaa在线国内观看,亚洲AV午夜福利精品一区二区,久久偷拍人视频,久久播这里有免费视播

<strong id="fvuar"></strong>

  • <sub id="fvuar"><dl id="fvuar"><em id="fvuar"></em></dl></sub>

    1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

      手機站
      千鋒教育

      千鋒學習站 | 隨時隨地免費學

      千鋒教育

      掃一掃進入千鋒手機站

      領(lǐng)取全套視頻
      千鋒教育

      關(guān)注千鋒學習站小程序
      隨時隨地免費學習課程

      當前位置:首頁  >  技術(shù)干貨  > waitkey函數(shù)詳解

      waitkey函數(shù)詳解

      來源:千鋒教育
      發(fā)布人:xqq
      時間: 2023-11-21 15:31:53 1700551913

      一、waitkey函數(shù)是什么

      waitkey函數(shù)是openCV庫中一個非常重要的函數(shù),它的主要作用是等待用戶按下某個鍵,同時它還會返回該按鍵的ASCII碼值。在圖像處理的過程中,waitkey函數(shù)通常用來實現(xiàn)按鍵控制,比如實現(xiàn)按Esc鍵退出程序。

      int waitKey(int delay)
      

      二、waitkey函數(shù)的調(diào)用方法

      waitkey函數(shù)的調(diào)用非常簡單,只需要將想要等待的時間以毫秒為單位作為參數(shù)傳遞給該函數(shù)即可。如果在等待過程中用戶沒有按下任何鍵,waitkey函數(shù)會在超時后返回-1。

      例如:

      char key = 0;
      while(key != 27) // 27是ASCII碼中的Esc鍵
      {
          Mat frame;
          cap >> frame; // 讀取一幀圖像
          imshow("video", frame); // 在窗口中顯示該幀圖像
          key = waitKey(30); // 等待30毫秒,如果用戶按下任意鍵則返回該鍵的ASCII碼值
      }
      

      三、waitkey函數(shù)的注意事項

      四、waitkey函數(shù)的實例

      1、實現(xiàn)按Esc鍵退出程序

      int main()
      {
          VideoCapture cap(0); // 打開攝像頭
          if (!cap.isOpened()) // 如果攝像頭未正常打開,則結(jié)束程序
              return -1;
          namedWindow("video", CV_WINDOW_NORMAL); // 建立一個名為"video"的窗口
          char key = 0;
          while(key != 27) // 27是ASCII碼中的Esc鍵
          {
              Mat frame;
              cap >> frame; // 讀取一幀圖像
              imshow("video", frame); // 在窗口中顯示該幀圖像
              key = waitKey(30); // 等待30毫秒,如果用戶按下任意鍵則返回該鍵的ASCII碼值
          }
          destroyWindow("video"); // 銷毀窗口
          return 0;
      }
      

      2、實現(xiàn)按下s鍵保存當前幀圖像

      int main()
      {
          VideoCapture cap(0); // 打開攝像頭
          if (!cap.isOpened()) // 如果攝像頭未正常打開,則結(jié)束程序
              return -1;
          namedWindow("video", CV_WINDOW_NORMAL); // 建立一個名為"video"的窗口
          char key = 0;
          int count = 0; // 用于保存圖像的計數(shù)器
          while(key != 27) // 27是ASCII碼中的Esc鍵
          {
              Mat frame;
              cap >> frame; // 讀取一幀圖像
              imshow("video", frame); // 在窗口中顯示該幀圖像
              key = waitKey(30); // 等待30毫秒,如果用戶按下任意鍵則返回該鍵的ASCII碼值
              if (key == 's') // 如果用戶按下s鍵,則保存當前幀圖像
              {
                  String savePath = format("./image/frame_%d.jpg", count++);
                  imwrite(savePath, frame);
                  cout << "Save image " << savePath << " successfully!" << endl;
              }
          }
          destroyWindow("video"); // 銷毀窗口
          return 0;
      }
      

      3、實現(xiàn)通過按下數(shù)字鍵來切換視頻流

      int main()
      {
          vector files; // 用于存儲視頻流文件名的向量
          files.push_back("./video/video1.mp4");
          files.push_back("./video/video2.mp4");
          files.push_back("./video/video3.mp4");
          int index = 0; // 當前視頻流的索引
          VideoCapture cap(files[index]); // 打開第一個視頻流
          if (!cap.isOpened()) // 如果視頻流未正常打開,則結(jié)束程序
              return -1;
          namedWindow("video", CV_WINDOW_NORMAL); // 建立一個名為"video"的窗口
          char key = 0;
          while(key != 27) // 27是ASCII碼中的Esc鍵
          {
              Mat frame;
              cap >> frame; // 讀取一幀圖像
              imshow("video", frame); // 在窗口中顯示該幀圖像
              key = waitKey(30); // 等待30毫秒,如果用戶按下任意鍵則返回該鍵的ASCII碼值
              if (key >= '1' && key <= '3') // 如果用戶按下數(shù)字鍵,則切換到對應的視頻流
              {
                  index = key - '1';
                  cap.release(); // 釋放當前視頻流
                  cap.open(files[index]); // 打開新的視頻流
              }
          }
          destroyWindow("video"); // 銷毀窗口
          return 0;
      }
      

      4、實現(xiàn)打開多個攝像頭并顯示在不同的窗口中

      int main()
      {
          VideoCapture cap1(0); // 打開第一個攝像頭
          if (!cap1.isOpened()) // 如果攝像頭未正常打開,則結(jié)束程序
              return -1;
          VideoCapture cap2(1); // 打開第二個攝像頭
          if (!cap2.isOpened()) // 如果攝像頭未正常打開,則結(jié)束程序
              return -1;
          namedWindow("video1", CV_WINDOW_NORMAL); // 建立一個名為"video1"的窗口
          namedWindow("video2", CV_WINDOW_NORMAL); // 建立一個名為"video2"的窗口
          char key = 0;
          while(key != 27) // 27是ASCII碼中的Esc鍵
          {
              Mat frame1, frame2;
              cap1 >> frame1; // 讀取第一個攝像頭的一幀圖像
              cap2 >> frame2; // 讀取第二個攝像頭的一幀圖像
              imshow("video1", frame1); // 在"video1"窗口中顯示第一個攝像頭的幀圖像
              imshow("video2", frame2); // 在"video2"窗口中顯示第二個攝像頭的幀圖像
              key = waitKey(30); // 等待30毫秒,如果用戶按下任意鍵則返回該鍵的ASCII碼值
          }
          destroyWindow("video1"); // 銷毀"video1"窗口
          destroyWindow("video2"); // 銷毀"video2"窗口
          return 0;
      }
      

      聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
      10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
      請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
      免費領(lǐng)取
      今日已有369人領(lǐng)取成功
      劉同學 138****2860 剛剛成功領(lǐng)取
      王同學 131****2015 剛剛成功領(lǐng)取
      張同學 133****4652 剛剛成功領(lǐng)取
      李同學 135****8607 剛剛成功領(lǐng)取
      楊同學 132****5667 剛剛成功領(lǐng)取
      岳同學 134****6652 剛剛成功領(lǐng)取
      梁同學 157****2950 剛剛成功領(lǐng)取
      劉同學 189****1015 剛剛成功領(lǐng)取
      張同學 155****4678 剛剛成功領(lǐng)取
      鄒同學 139****2907 剛剛成功領(lǐng)取
      董同學 138****2867 剛剛成功領(lǐng)取
      周同學 136****3602 剛剛成功領(lǐng)取
      相關(guān)推薦HOT