欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

OpenCV 高级图形用户界面(4)获取鼠标滚轮事件增量值的函数 getMouseWheelDelta 的使用--代码示例

最编程 2024-10-13 14:10:28
...
#include <iostream>
#include <opencv2/opencv.hpp>

// 鼠标回调函数
void onMouse( int event, int x, int y, int flags, void* param )
{
    if ( event == cv::EVENT_MOUSEWHEEL || event == cv::EVENT_MOUSEHWHEEL )
    {
        int delta = cv::getMouseWheelDelta( flags );
        std::cout << "Mouse wheel delta: " << delta << std::endl;

        if ( event == cv::EVENT_MOUSEWHEEL )
        {
            if ( delta > 0 )
            {
                std::cout << "Forward scrolling." << std::endl;
            }
            else
            {
                std::cout << "Backward scrolling." << std::endl;
            }
        }
        else if ( event == cv::EVENT_MOUSEHWHEEL )
        {
            if ( delta > 0 )
            {
                std::cout << "Right scrolling." << std::endl;
            }
            else
            {
                std::cout << "Left scrolling." << std::endl;
            }
        }
    }
}

int main()
{
    // 加载图像
    cv::Mat img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/hawk.jpg", cv::IMREAD_COLOR );
    if ( img.empty() )
    {
        std::cerr << "Error: Image not found!" << std::endl;
        return -1;
    }

    // 创建窗口
    cv::namedWindow( "Image Window" );

    // 设置鼠标回调函数
    cv::setMouseCallback( "Image Window", onMouse, nullptr );

    // 显示图像
    cv::imshow( "Image Window", img );

    // 等待键盘输入
    cv::waitKey( 0 );

    // 关闭所有窗口
    cv::destroyAllWindows();

    return 0;
}