C++利用鼠标滚轮控制图片大小 | 您所在的位置:网站首页 › html图片动态放大缩小代码 › C++利用鼠标滚轮控制图片大小 |
以下代码演示了如何使用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 实验室设备网 版权所有 |