麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

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

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

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

waitkey函數詳解

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

一、waitkey函數是什么

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

int waitKey(int delay)

二、waitkey函數的調用方法

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

例如:

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

三、waitkey函數的注意事項

四、waitkey函數的實例

1、實現按Esc鍵退出程序

int main()
{
    VideoCapture cap(0); // 打開攝像頭
    if (!cap.isOpened()) // 如果攝像頭未正常打開,則結束程序
        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、實現按下s鍵保存當前幀圖像

int main()
{
    VideoCapture cap(0); // 打開攝像頭
    if (!cap.isOpened()) // 如果攝像頭未正常打開,則結束程序
        return -1;
    namedWindow("video", CV_WINDOW_NORMAL); // 建立一個名為"video"的窗口
    char key = 0;
    int count = 0; // 用于保存圖像的計數器
    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、實現通過按下數字鍵來切換視頻流

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()) // 如果視頻流未正常打開,則結束程序
        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') // 如果用戶按下數字鍵,則切換到對應的視頻流
        {
            index = key - '1';
            cap.release(); // 釋放當前視頻流
            cap.open(files[index]); // 打開新的視頻流
        }
    }
    destroyWindow("video"); // 銷毀窗口
    return 0;
}

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

int main()
{
    VideoCapture cap1(0); // 打開第一個攝像頭
    if (!cap1.isOpened()) // 如果攝像頭未正常打開,則結束程序
        return -1;
    VideoCapture cap2(1); // 打開第二個攝像頭
    if (!cap2.isOpened()) // 如果攝像頭未正常打開,則結束程序
        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;
}

聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 免费看的黄色大片| 午夜性影院爽爽爽爽爽爽| 国产免费爽爽视频在线观看| 亚洲一区二区三区在线| 福利视频亚洲| 西西人体高清444rt·wang| 好吊妞最新视频免费观看| 亚洲一区二区影院| 开始疼痛的小小花蕾3| 国产剧情在线播放| 午夜爽视频| 污到流水的视频| 91青青草视频在线观看| 亚洲欧美在线精品一区二区| 人人揉人人捏人人添| 真实国产乱子伦对白视频| 久久国产一区二区三区| 亚洲国产三级在线观看| 久久er99热精品一区二区| 亚洲a在线视频| 亚洲欧美成人一区二区在线电影| 国产经典一区二区三区蜜芽| avtt在线观看| 北条麻妃大战黑人| 激情小说第一页| 大尺度无遮挡h彩漫| 欧美大片在线观看完整版| 小时代1免费观看完整版| 国产刺激视频| 久久一本岛在免费线观看2020| 波多野结衣办公室33分钟| 欧美性猛交xxxx乱大交高清| 18gay台湾男同亚洲男同| 亚洲三级在线观看| 美女扒开胸罩露出奶了无遮挡免费| 18av黄动漫在线观看| 国产欧美一区二区三区视频在线观看| 国产成在线观看免费视频| 中文理论片| 亚洲日韩欧洲无码av夜夜摸| 波多野吉衣视频|