久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

        手機(jī)站
        千鋒教育

        千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

        千鋒教育

        掃一掃進(jìn)入千鋒手機(jī)站

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

        關(guān)注千鋒學(xué)習(xí)站小程序
        隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

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

        waitkey函數(shù)詳解

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

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

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

        int waitKey(int delay)
        

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

        waitkey函數(shù)的調(diào)用非常簡(jiǎn)單,只需要將想要等待的時(shí)間以毫秒為單位作為參數(shù)傳遞給該函數(shù)即可。如果在等待過(guò)程中用戶沒(méi)有按下任何鍵,waitkey函數(shù)會(huì)在超時(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ù)的注意事項(xiàng)

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

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

        int main()
        {
            VideoCapture cap(0); // 打開(kāi)攝像頭
            if (!cap.isOpened()) // 如果攝像頭未正常打開(kāi),則結(jié)束程序
                return -1;
            namedWindow("video", CV_WINDOW_NORMAL); // 建立一個(gè)名為"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、實(shí)現(xiàn)按下s鍵保存當(dāng)前幀圖像

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

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

        int main()
        {
            vector files; // 用于存儲(chǔ)視頻流文件名的向量
            files.push_back("./video/video1.mp4");
            files.push_back("./video/video2.mp4");
            files.push_back("./video/video3.mp4");
            int index = 0; // 當(dāng)前視頻流的索引
            VideoCapture cap(files[index]); // 打開(kāi)第一個(gè)視頻流
            if (!cap.isOpened()) // 如果視頻流未正常打開(kāi),則結(jié)束程序
                return -1;
            namedWindow("video", CV_WINDOW_NORMAL); // 建立一個(gè)名為"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ù)字鍵,則切換到對(duì)應(yīng)的視頻流
                {
                    index = key - '1';
                    cap.release(); // 釋放當(dāng)前視頻流
                    cap.open(files[index]); // 打開(kāi)新的視頻流
                }
            }
            destroyWindow("video"); // 銷毀窗口
            return 0;
        }
        

        4、實(shí)現(xiàn)打開(kāi)多個(gè)攝像頭并顯示在不同的窗口中

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

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

        一、什么是set+eSet+e是一種在編程中廣泛應(yīng)用的數(shù)據(jù)結(jié)構(gòu),也被稱為集合。簡(jiǎn)單來(lái)說(shuō),集合就是一組互不相同的元素。在編程中,Set+e通常用于存儲(chǔ)...詳情>>

        2023-11-21 17:27:06
        實(shí)卡接碼短信平臺(tái)及其應(yīng)用

        一、平臺(tái)介紹實(shí)卡接碼短信平臺(tái)是一種可以自動(dòng)處理短信驗(yàn)證碼的平臺(tái)。該平臺(tái)主要由短信接口、卡池管理、卡池調(diào)度、號(hào)碼顯匿、號(hào)碼推送等模塊組成...詳情>>

        2023-11-21 16:43:54
        Nginx日志格式詳解

        一、Nginx日志格式Nginx是一款高性能的HTTP和反向代理服務(wù)器,它采用默認(rèn)的日志格式記錄所有請(qǐng)求和響應(yīng)。Nginx日志格式由以下幾個(gè)部分組成:log...詳情>>

        2023-11-21 16:15:06
        銀行卡號(hào)正則表達(dá)式詳解

        一、銀行卡號(hào)正則校驗(yàn)銀行卡號(hào)是我們?nèi)粘I钪薪?jīng)常接觸到的一個(gè)數(shù)字串,如何驗(yàn)證銀行卡號(hào)的正確性呢?通過(guò)正則表達(dá)式來(lái)實(shí)現(xiàn)正則校驗(yàn)是最直接有...詳情>>

        2023-11-21 16:04:18
        Swift數(shù)組截取詳解

        一、基本概念1、Swift數(shù)組//定義一個(gè)包含整型數(shù)據(jù)的數(shù)組var arr: Array = [120, 130, 140, 150, 160]2、ArraySlice數(shù)組片段A詳情>>

        2023-11-21 16:00:41
        磐石市| 朝阳区| 台东县| 大足县| 汝南县| 余江县| 郴州市| 罗城| 长葛市| 屯门区| 浮山县| 江源县| 迭部县| 遵化市| 巩义市| 太仓市| 新民市| 张家川| 石嘴山市| 鄱阳县| 法库县| 周口市| 兴宁市| 武清区| 塔城市| 多伦县| 涡阳县| 津南区| 南岸区| 嘉黎县| 云安县| 定襄县| 周口市| 伽师县| 芦溪县| 青阳县| 炎陵县| 七台河市| 和林格尔县| 大同县| 晴隆县|