Python-OpenCV下的窗口鼠标事件交互操作(实现鼠标移动轨迹的绘制)
Posted 昊虹AI笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python-OpenCV下的窗口鼠标事件交互操作(实现鼠标移动轨迹的绘制)相关的知识,希望对你有一定的参考价值。
Python-OpenCV下的窗口鼠标事件交互操作(实现鼠标移动轨迹的绘制)
可以用函数cv.setMouseCallback()和其相应的回调函数实现窗口窗口鼠标事件的设置。
关于函数cv.setMouseCallback()和其回调函数的详细介绍请大家参考下面这篇博文:
https://www.hhai.cc/thread-99-1-1.html
本篇博文给出Python示例代码,功能是实现鼠标移动轨迹的绘制。
代码如下:
代码中用到的图像百度网盘下载链接如下:
https://pan.baidu.com/s/1v6GMaxqHz7xNXhBwmW1aFQ?pwd=jfc4
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 出处:昊虹AI笔记网(hhai.cc)
# 用心记录计算机视觉和AI技术
# OpenCV的版本为4.4.0
import cv2 as cv
import sys
def draw(event, x, y, flags, param):
global img, pre_pts
# 鼠标右键按下
if event == cv.EVENT_RBUTTONDOWN:
print('请点击鼠标左键进行轨迹的绘制。')
# 鼠标左键按下
if event == cv.EVENT_LBUTTONDOWN:
pre_pts = (x, y)
print('轨迹起始坐标为:, '.format(x, y))
# 鼠标移动
if event == cv.EVENT_MOUSEMOVE and flags == cv.EVENT_FLAG_LBUTTON:
pts = (x, y)
img = cv.line(img, pre_pts, pts, (0, 0, 255), 2, 5,0)
pre_pts = pts
cv.imshow('image', img)
if __name__ == '__main__':
# 读取图像并判断是否读取成功
img = cv.imread('F:/material/images/2022/2022-11/Light-blue-background.jpg')
img1 = img.copy()
if img is None:
print('Failed to read image.')
sys.exit()
pre_pts = -1, -1
cv.imshow('image', img)
cv.setMouseCallback('image', draw)
cv.waitKey(0)
cv.destroyAllWindows()
运行结果如下:
以上是关于Python-OpenCV下的窗口鼠标事件交互操作(实现鼠标移动轨迹的绘制)的主要内容,如果未能解决你的问题,请参考以下文章