一、画矩形框

import cv2global img
global point1, point2
def on_mouse(event, x, y, flags, param):global img, point1, point2img2 = img.copy()if event == cv2.EVENT_LBUTTONDOWN:         #左键点击point1 = (x,y)cv2.circle(img2, point1, 10, (0,255,0), 5)cv2.imshow('image', img2)elif event == cv2.EVENT_MOUSEMOVE and (flags & cv2.EVENT_FLAG_LBUTTON):               #按住左键拖曳cv2.rectangle(img2, point1, (x,y), (255,0,0), 5)cv2.imshow('image', img2)elif event == cv2.EVENT_LBUTTONUP:         #左键释放point2 = (x,y)cv2.rectangle(img2, point1, point2, (0,0,255), 5) cv2.imshow('image', img2)min_x = min(point1[0],point2[0])     min_y = min(point1[1],point2[1])width = abs(point1[0] - point2[0])height = abs(point1[1] -point2[1])cut_img = img[min_y:min_y+height, min_x:min_x+width]cv2.imwrite('lena3.jpg', cut_img)def main():global imgimg = cv2.imread('lena.jpg')cv2.namedWindow('image')cv2.setMouseCallback('image', on_mouse)cv2.imshow('image', img)cv2.waitKey(0)if __name__ == '__main__':main()

二、画线

import osimport cv2
import mathglobal img
global point1, point2def calculate_distance(pt1, pt2):x1, y1 = pt1x2, y2 = pt2dist = math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)return distdef on_mouse(event, x, y, flags, param):global img, point1, point2img2 = img.copy()if event == cv2.EVENT_LBUTTONDOWN:  # 左键点击point1 = (x, y)cv2.circle(img2, point1, 10, (0, 255, 0), 2)cv2.imshow('image', img2)elif event == cv2.EVENT_MOUSEMOVE and (flags & cv2.EVENT_FLAG_LBUTTON):  # 按住左键拖曳cv2.line(img2, point1, (x, y), (255, 0, 0), 2)cv2.imshow('image', img2)elif event == cv2.EVENT_LBUTTONUP:  # 左键释放point2 = (x, y)cv2.line(img2, point1, point2, (0, 0, 255), 2)cv2.imshow('image', img2)distance = calculate_distance(point1, point2)font = cv2.FONT_HERSHEY_SIMPLEXcv2.putText(img2, f'{int(distance)}', (point2[0]+2, point2[1]+2), font, 1.2, (255, 255, 255), 2)cv2.imshow('image', img2)img = img2def main():global img, base_nameimg_path = r"D:\work\data\ellipse_fitting\ori_resize\label_viz0.png"img_name = os.path.split(img_path)[-1]base_name = os.path.splitext(img_name)[0]save_name = base_name + '_gt.jpg'save_dir = r'D:\work\data\ellipse_fitting\gt_axis'os.makedirs(save_dir, exist_ok=True)img = cv2.imread(img_path)cv2.namedWindow('image')cv2.setMouseCallback('image', on_mouse)cv2.imshow('image', img)if cv2.waitKey(0) & 0xFF == ord('s'):cv2.imwrite(os.path.join(save_dir, save_name), img)print('save img:{}'.format(os.path.join(save_dir, save_name)))if __name__ == '__main__':main()

python鼠标点击事件相关推荐

  1. python鼠标点击事件event_opencv-python教程学习系列5-处理鼠标事件

    前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍opencv-python处理鼠标事件,坚持学习,共同进步. 系统环境 系统:win_x64; p ...

  2. Python鼠标连续点击事件

    需要先安装pyautogui 在cmd命令中输入 pip install pyautogui 在pyautogui的安装时容易报错: Command "python setup.py egg ...

  3. 10,python中tkinter模块里的鼠标点击事件

    实践操作: from tkinter import * #鼠标点击事件的回调函数 def callback(event):print( "clicked at:", event.x ...

  4. python鼠标点击位置_python鼠标点击位置 Python3怎么模拟鼠标点击?

    Python3怎么模拟鼠标点击? Python3怎么模拟鼠标点击?最好简单一点的方法 import win32api,win32condef click(x,y): win32api.SetCurso ...

  5. PyQt实现QSlider滑块鼠标点击事件

    在PyQt添加SQlider滑动条后,发现鼠标点击时滑块只能按照设定步数一步步移动,不能点哪里滑块到哪里.网上查找资料后发现这方面相关参考资料比较少,且大多数文章表述对我个人来说比较难理解,最后综合参 ...

  6. css禁用鼠标点击事件

    1.css禁用鼠标点击事件 .disabled { pointer-events: none; } 转载于:https://www.cnblogs.com/jiangtuzi/p/5728230.ht ...

  7. android 模拟点击localinstrumentation,Android Instrumentation模拟鼠标点击事件

    看了几遍网上的博客一直没有 模拟出鼠标点击事件和按钮事件,后来抱着试试态度再重试的时候终于有所斩获.下面把具体的情况记录一下: 首先我们必须了解类 Instrumentation: Instrumen ...

  8. [css] 怎样用纯CSS实现禁止鼠标点击事件?

    [css] 怎样用纯CSS实现禁止鼠标点击事件? pointer-events: none; 是css3新出现的属性,意思就是禁止鼠标点击事件,当元素中有这一属性时,链接.点击事件统统失效. 个人简介 ...

  9. 【Qt串口调试助手】1.3 - 重写ComboBox下拉框的鼠标点击事件,实现点击下拉框扫描可用串口

    由于ComboBox没有鼠标点击信号,所以如果想实现点击下拉框响应,需要重写ComboBox下拉框的鼠标点击事件.在点击事件中,添加扫描可用串口代码,实现点击下拉框时重新扫描串口.并且下拉框内容输出端 ...

最新文章

  1. DOS 循环 FOR
  2. python学习之if条件句的使用
  3. ROSA 2012 Enterprise Linux Server 发布
  4. 异步Socket通信总结[转]
  5. boost::mp11::mp_filter相关用法的测试程序
  6. SpringBoot/Cloud AOP 统一日志输出
  7. AndroidStudio_android使用自己封装的消息队列处理问题_封装LinkedQueue---Android原生开发工作笔记242
  8. 英老汉3000个空酒瓶造房子
  9. 小程序学习笔记(7)-使用小程序的组件构建UI界面
  10. 人生中第一次在优品拍拍买二手手机的经历
  11. 11月27日“软件开发模式思考:传统与敏捷 我们在什么位置?”的主题活动成功举办
  12. 服务器c盘满了怎么清理? 服务器c盘空间不足清理方法
  13. dingo php,Laravel Lumen RESTFul API 扩展包:Dingo API(一) —— 安装配置篇
  14. swift UI 学习 (一)
  15. c语言 求矩阵各行元素之和
  16. 如何测试一个纸杯-----利用引导词整理测试思路
  17. SLCP认证辅导,SLCPCAFv1.4和v1.3相比较共同之处在哪
  18. 【ProjectEuler】ProjectEuler_046
  19. 海淘 海外购 iherb 礼券码 优惠码
  20. 服务办公软件金山偷换“核高基”重大软件专项课题名称,瞒天过海,欺骗大众...

热门文章

  1. 手把手教你画架构图,看一次就会了!
  2. 进入黑客的世界:Kali Linux 中的 Metasploit 渗透测试利器
  3. 怎么给图片添加贴纸?介绍几个简单的方法
  4. android导入html文件怎么打开,Android浏览器如何打开本地html文件
  5. Kinect v2保存图像和深度图序列
  6. 用Java实现网易云音乐爬虫(非selenium)
  7. vue本页面跳转不刷新
  8. oracle+omf+格式,Oracle OMF管理数据文件
  9. uniapp 自写模糊查询
  10. 表格进阶03—出纳日报表(表格,再次练习)