C++利用鼠标滚轮控制图片大小 您所在的位置:网站首页 html图片动态放大缩小代码 C++利用鼠标滚轮控制图片大小

C++利用鼠标滚轮控制图片大小

2023-07-01 10:23| 来源: 网络整理| 查看: 265

以下代码演示了如何使用OpenCV和鼠标滚轮来控制图片的大小:

1.在回调函数中,使用getMouseWheelDelta()函数获取鼠标滚轮的旋转量,并根据旋转量调整缩放比例。scale为大小百分比,初始值为100。初始值加上鼠标滚轮的值就是放大或者缩小的比例的百分值,由于鼠标滚轮转动的值较大,故乘以0.01。当比例为0时会报错,这里在if判断中将scale与1比较。

int scale =100; static void turn_draw(int event, int x, int y, int flags, void* userdata) {     Mat image = *((Mat*)userdata); if (event == cv::EVENT_MOUSEWHEEL)     {         int delta = cv::getMouseWheelDelta(flags);         scale += 0.01*delta;// 缩放图片         cv::Mat scaledImage;         if (scale > 1) {             cv::resize(image, scaledImage, cv::Size(image.cols * scale / 100, image.rows * scale / 100);  // 显示缩放后的图片             cv::imshow("鼠标滚轮", scaledImage);         }         else{             scale = 1;             cv::resize(image, scaledImage, cv::Size(image.cols * scale / 100, image.rows * scale / 100));   // 显示缩放后的图片             cv::imshow("鼠标滚轮", scaledImage);         }     }

2.主函数:在主函数中使用setMouseCallback()函数设置鼠标事件的回调函数。当鼠标发生滚轮事件时,回调函数turn_draw将被调用。

int main(int argc, char** argv){ Mat image = cv::imread("图片路径"); // 创建显示窗口 cv::namedWindow("鼠标滚轮",WINDOW_AUTOSIZE); // 显示原始图片 cv::imshow("鼠标滚轮", image); // 设置鼠标滚轮回调函数 cv::setMouseCallback("鼠标滚轮", turn_draw, (void*)&image); cv::waitKey(0); return 0; }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有