OpenCV鼠标绘制线段

ops/2024/9/22 16:33:16/

鼠标绘制线段

// 鼠标回调函数
void draw_circle(int event, int x, int y, int flags, void* param)
{cv::Mat* img = (cv::Mat*)param;if (event == cv::EVENT_LBUTTONDBLCLK){cv::circle(*img, cv::Point(x, y), 100, cv::Scalar(0, 0, 255), -1);}
}// 鼠标回调函数
void draw_line(int event, int x, int y, int flags, void* param)
{static cv::Point draw_line_startp;  // 一定要是staticcv::Mat* img = (cv::Mat*)param;if (event == cv::EVENT_LBUTTONDOWN) // 鼠标左键按下时执行以下代码块。{draw_line_startp = cv::Point(x, y); // 记录鼠标按下时的坐标作为起始点}else if (event == cv::EVENT_MOUSEMOVE && (flags & cv::EVENT_FLAG_LBUTTON)) //当鼠标左键按下并移动时执行以下代码块。{cv::Point end_point(x, y); // 获取当前鼠标移动位置作为终点cv::line(*img, draw_line_startp, end_point, cv::Scalar(0, 0, 255), 2); // 在图像上绘制线段draw_line_startp = end_point; // 更新起始点为当前终点,以便下一次绘制}}void opencvTool::drawingByMouse()
{// 创建一个黑色的图像//cv::Mat img = cv::Mat::zeros(512, 512, CV_8UC3);  // 创建一个白色的图像cv::Mat img(512, 512, CV_8UC3, cv::Scalar(255, 255, 255));// 创建一个窗口并绑定回调函数cv::namedWindow("image");cv::setMouseCallback("image", draw_line, &img); // 该函数将在鼠标事件发生时被调用// 进入主循环,显示图像while (true){imshow("image", img);if (cv::waitKey(20) == 27) // 按下Esc键(对应的ASCII码是27)。{break;}}// 关闭窗口cv::destroyAllWindows();return;
}

在这里插入图片描述


http://www.ppmy.cn/ops/16565.html

相关文章

在 Linux 上把 Vim 配置为默认编辑器

目录 ⛳️推荐 在 Linux 命令行中编辑 将 Vim 设置为其他程序的默认值 在 Alpine 中编辑电子邮件 总结 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 我使用 Linux 大概有…

Spark-core面试知识点

Spark课程(web:默认值是8080,但是这个端口号容易被占用,顺势1;提交任务端口号:7077) 一、RDD RDD是spark最底层的核心抽象,叫做弹性分布式数据集。 特点:不可变,可分区&#xff0…

javascript使用setTimeout函数来实现仅执行最后一次操作

在JavaScript中,setTimeout函数用于在指定的毫秒数后执行一个函数或计算表达式。它的主要用途是允许开发者延迟执行某些代码,而不是立即执行。 当我们想要确保仅最后一次更新UI时,我们可以使用setTimeout来合并多次连续的更新请求。具体做法…

jmeter分布式压力测试搭建

配置master(controller) 配置jmeter.properties文件 remote_hostsxxx:1099,xxx:1099 #remote_hostslocalhost:1099,localhost:2010 # RMI port to be used by the server (must start rmiregistry with same port) server_port1099 server.rmi.ssl.dis…

开源模型应用落地-LangChain高阶-事件回调-合规校验

一、前言 尽管现在的大语言模型已经非常强大,可以解决许多问题,但在处理复杂情况时,仍然需要进行多个步骤或整合不同的流程才能达到最终的目标。然而,现在可以利用langchain来使得模型的应用变得更加直接和简单。 通过使用langchain,用户可以直接提出问题或发送指令,而无…

山海鲸大屏:驱动医药零售智能化变革

在数字化浪潮席卷全球的今天,医药零售行业也正以前所未有的速度与力度进行智能化转型。其中,山海鲸智慧医药零售大屏以其创新的设计理念、强大的功能集成与卓越的数据处理能力,成为推动医药零售迈向智能化、精准化的新引擎。本文将全方位解读…

TensorFlow轻松入门(一)(更新中)

常见模块 tf. :包含了张量定义,变换等常用函数和类;tf.data:输入数据处理模块,提供了像tf.data.Dataset等类用于封装输入数据,指定批量大小等;tf.image:图像处理模块,提…

ESP32与SD卡交互实现:文件读写实战与初始化详解及引脚定义

本代码实现ESP32与SD卡的交互,包括定义SPI引脚、创建自定义SPI类实例、编写WriteFile与ReadFile函数进行文件读写。setup函数初始化串口、SPI、SD卡,向“/test.txt”写入“myfirstmessage”,读取并打印其内容。loop函数留空待扩展。 1. 需要…