OpenCV 键盘响应来切换图像

发布于:2025-06-05 ⋅ 阅读:(27) ⋅ 点赞:(0)


一、知识点
1、int waitKey(int delay = 0);
  (1)、等待按键。 等待指定的毫秒数,返回按键的ASCII码。
  (2)、返回值: int型,表示按键ASCII码。 若没有按键,指定时间过去,返回-1。
  (3)、参数delay: 等待时间,单位毫秒ms。 默认0,表示一直等待。


二、示例代码

#include <iostream>
#include <opencv2/opencv.hpp>


void TestWaitKey(cv::Mat & src)
{
    cv::Mat dst = cv::Mat::zeros(src.size(), CV_8UC3);

    while (true)
    {
        int c = cv::waitKey(100);

        if (c == 27)
        {
            break;
        }
        else if (c == 49)
        {
            std::cout << "you entered key #1" << std::endl;

            cv::cvtColor(src, dst, cv::COLOR_BGR2GRAY);
        }
        else if (c == 50)
        {
            std::cout << "you entered key #2" << std::endl;

            cv::cvtColor(src, dst, cv::COLOR_BGR2HSV);
        }
        else if (c == 51)
        {
            std::cout << "you entered key #3" << std::endl;

            dst = cv::Scalar(50, 50, 50);
            cv::add(src, dst, dst);
        }
        
        cv::imshow("按键后图像", dst);
    }
}


int main()
{
    cv::Mat src = cv::imread("../images/2.png");
    if (src.empty())
    {
        std::cout << "load src image error..." << std::endl;
        return -1;
    }
    cv::imshow("原始图像", src);

    TestWaitKey(src);
    
    return 0;
}


网站公告

今日签到

点亮在社区的每一天
去签到