【学习OpenCV4】键盘鼠标操作总结

article/2025/10/26 4:11:21

本文分享内容来自图书《学习OpenCV 4:基于Python的算法实战》,该书内容如下:

1章 OpenCV快速入门;
第2章 图像读写模块imgcodecs;
第3章 核心库模块core;
第4章 图像处理模块imgproc(一);
第5章 图像处理模块imgproc(二);
第6章 可视化模块highgui;
第7章 视频处理模块videoio;
第8章 视频分析模块video;
第9章 照片处理模块photo;
第10章 2D特征模块features2d;
第11章 相机标定与三维重建模块calib3d;
第12章 传统目标检测模块objdetect;
第13章 机器学习模块ml;
第14章 深度神经网络模块dnn

欢迎关注图书**《深度学习计算机视觉实战》与《学习OpenCV4:基于Python的算法实战》**。
在这里插入图片描述

案例79:键盘操作

OpenCV中提供了键盘操作的函数waitKey,函数定义如下:

retval = waitKey(delay=None)

参数说明如下:
delay,延迟等待的时间,单位为毫秒,设置为时则无限期等待直到键盘操作;
retval,返回操作的按键(返回值)。
函数waitKey无限期地(当参数为0时)等待一个按键事件,或者等待延迟毫秒(当参数为正时)。由于操作系统在切换线程之间有一个最短的时间间隔,因此函数不会完全等待delay毫秒,它至少会等待delay毫秒,这取决于此时计算机上运行的其他内容。它返回被按下的按键的编码,如果在指定的时间过去之前没有按下任何键,则返回-1。
函数waitKey函数是highgui模块中唯一可以获取和处理事件的方法,因此需要定期调用它以进行正常地进行事件处理,除非在处理事件的环境中已经使用了highgui。仅当至少创建了一个highgui窗口且该窗口处于活动状态时,该函数才起作用。如果有几个highgui窗口,其中任何一个都可以处于活动状态。
图像显示函数imshow后必须跟有waitKey函数,否则图像无法正常显示。
waitKey使用的案例代码如下:

import cv2#读取图像
image = cv2.imread("src.jpg")
#图像显示
cv2.imshow("image", image)
#按键等待
key = cv2.waitKey(0)
print("Press key is:", key)
cv2.destroyWindow("image")

按下按键G,显示窗口关闭,按键按下打印信息如下:

Press key is: 103

案例80:鼠标操作

OpenCV中设置鼠标回调的函数为setMouseCallback,函数定义如下:

setMouseCallback(windowName, onMouse, param=None)

参数说明如下:
windowName,窗口名;
onMouse,鼠标事件回调函数;
param,参数。
setMouseCallback函数的返回值为None。
OpenCV中的鼠标事件可以通过如下的代码查询:

import cv2
events = [ev for ev in dir(cv2) if 'EVENT' in ev]
print( events )	# 将鼠标事件显示出来

鼠标事件打印结果如下:

['EVENT_FLAG_ALTKEY', 'EVENT_FLAG_CTRLKEY', 'EVENT_FLAG_LBUTTON', 'EVENT_FLAG_MBUTTON', 'EVENT_FLAG_RBUTTON', 'EVENT_FLAG_SHIFTKEY', 'EVENT_LBUTTONDBLCLK', 'EVENT_LBUTTONDOWN', 'EVENT_LBUTTONUP', 'EVENT_MBUTTONDBLCLK', 'EVENT_MBUTTONDOWN', 'EVENT_MBUTTONUP', 'EVENT_MOUSEHWHEEL', 'EVENT_MOUSEMOVE', 'EVENT_MOUSEWHEEL', 'EVENT_RBUTTONDBLCLK', 'EVENT_RBUTTONDOWN', 'EVENT_RBUTTONUP']

见6.1节,鼠标事件类型由MouseEventTypes定义,鼠标事件标志由MouseEventFlags定义。
本节案例是通过不同的鼠标操作进行图形绘制,鼠标左键双击可以绘制圆,鼠标左键按下拖动绘制红色线,鼠标右键按下拖动绘制蓝色线,案例代码如下:

import cv2
import numpy as np#设置鼠标起始点
start_point, end_point= (0,0), (0,0)
#设置鼠标左键和右键按下/抬起标志
lb_down, lb_up, rb_down, rb_up = False, False, False, False
# 鼠标回调函数
def mouse_event(event, x, y, flags, param):global end_point, start_point, lb_down, lb_up, rb_down, rb_up# 左键双击if event == cv2.EVENT_LBUTTONDBLCLK:cv2.circle(img, (x, y), 100, (0, 255, 0), -1)# 左键按下elif event == cv2.EVENT_LBUTTONDOWN:# 设置鼠标按下的起始点end_point = (x, y)start_point = end_pointlb_down = True# 右键按下elif event == cv2.EVENT_RBUTTONDOWN:end_point = (x, y)start_point = end_pointrb_down = True# 鼠标移动,绘制线elif event == cv2.EVENT_MOUSEMOVE:# 鼠标左键按下绘制红色线if lb_down:cv2.line(img, end_point, (x,y), (0, 0, 255), 2, -1)# 鼠标右键按下绘制蓝色线if rb_down:cv2.line(img, end_point, (x, y), (255, 0, 0), 2, -1)end_point = (x, y)# 左键释放elif event == cv2.EVENT_LBUTTONUP:lb_up = Truelb_down = Falsecv2.line(img, end_point, (x,y), (0, 0, 255), 2, -1)# 右键释放elif event == cv2.EVENT_RBUTTONUP:rb_up = Truerb_down = Falsecv2.line(img, end_point, (x,y), (255, 0, 0), 2, -1)# 创建一个黑色的图像,一个窗口,并绑定到窗口的功能
img = np.zeros((512, 512, 3), np.uint8)
cv2.namedWindow('image')
# 设置回调
cv2.setMouseCallback('image', mouse_event)
while (1):cv2.imshow('image', img)# 按下Esc键退出if cv2.waitKey(10) == 27:break
cv2.destroyAllWindows()

鼠标绘制结果如图6.5所示。
在这里插入图片描述

图6.5


http://chatgpt.dhexx.cn/article/dRCNhY4q.shtml

相关文章

【学习OpenCV4】OpenCV4与opencv-contrib模块介绍

本文分享内容来自图书《学习OpenCV 4:基于Python的算法实战》,该书刚刚上市,是国内第一本系统讲解OpenCV4各个模块的图书,配套案例深入浅出的讲解。第一章有在各个平台搭建环境的介绍,后面每个章节都有对模块的导读、模…

学习OpenCV

因为一些项目需要,最近在学习OpenCv,以下是一些学习OpenCv这本书的一些简介,教程下载地址:《学习OpenCv》 《学习OpenCV》:计算机视觉是在图像处理的基础上发展起来的新兴学科。OpenCV是一个开源的计算机视觉库&#x…

学习opencv.js(1)图像入门

目标:了解如何阅读图像以及如何在网络中显示它。 读取图像:OpenCV.js 将图像保存为cv.Mat类型。我们使用 HTML 画布元素将cv.Mat传输到网络或反向传输。ImageData 接口可以表示或设置画布元素区域的底层像素数据。 1.从画布创建一个 ImageData对象 le…

学习OpenCV3:MinGW编译OpenCV到vs_version.rc.obj处出错

1. 错误描述 [ 65% ] Building RC object modules/world/CMakeFiles/opencv_world.dir/vs_version.rc.obj gcc: error: long: No such file or directory C:\Mingw-w64\mingw32\bin\windres.exe: preprocessing failed. mingw32-make[2]: *** [modules\world\CMakeFiles\opencv…

【从零学习OpenCV 4】opencv_contrib扩展模块的安装

本文首发于“小白学视觉”微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解》。…

如何学习opencv源码

如何学习opencv源码 当你在使用opencv时,看到一个函数有没有想去了解他的源码,而又无从下手?这里我将带你脱离这种尴尬的境遇! 面对这个问题,我自己也查找过许多的资料,网上有这样一种做法,步骤如下&…

从零开始学习opencv——在虚拟环境下安装opencv环境

毕设准备做cv相关项目,今天开始学习cv基础知识,课程为B站“【不要再看那些过时的OpenCV老教程了】2022巨献,OpenCV零基础小白最新版全套教程(人工智能机器视觉教程)” 0.自行安装python3.7,注意版本不能过高或过低,注意安装64位版…

【学习OpenCV4】OpenCV入门精讲(C++/Python双语教学)

大家好,我在CSDN开的OpenCV课程已经开课了,入口如下: OpenCV入门精讲(C/Python双语教学) 课程开始快一周了,收到了广大同学们的欢迎。 (1)评分很高; (2&#…

opencv 深度学习

深度学习简史 深度学习很早就被提出,但一直停滞不前2011,微软在语言识别上使用,取得了突破2012,DNN在图像识别领域取得了惊人的效果,在ImageNet评测的错误率从26%降到了15%2016,AlphaGo击败人类&#xff0…

【学习OpenCV4】案例3:OpenCV Python语言开发环境搭建

本书分享内容来自图书学习OpenCV 4:基于Python的算法实战》,该书刚刚上市,是国内第一本系统讲解OpenCV4各个模块的图书,配套案例深入浅出的讲解。第一章有在各个平台搭建环境的介绍,后面每个章节都有对模块的导读、模块…

在pycharm2021.2中学习opencv图像处理,基于python3.9.7、pycharm完成配置

在pycharm中学习opencv图像处理 安装python下载python安装包开始安装 安装pycharm社区版下载pycharm安装包开始安装 启动pycharm创建第一个项目创建第一个项目设置项目存放路径首次运行python程序下载opencv-python库、添加解释器配置 开始图像处理的学习!打开下载好…

【从零学习OpenCV 4】Windows系统中安装OpenCV 4

本文首发于“小白学视觉”微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解》。…

【从零学习OpenCV 4】了解OpenCV的模块架构

本文首发于“小白学视觉”微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解》。…

OpenCV入门基础学习

目录 一:OpenCV简介 二:OpenCV图像处理 图像 三:OpenCV图像处理 图像模式 四:OpenCV图像识别 图片操作 五:OpenCV图像处理 Mat类 六:OpenCV图像处理 图片 像素 七:OpenCV图像…

如何学习opencv

本文授权转载自贾老师的微信公众号"OpenCV学堂"。更多信息可扫描文末二维码关注公众号(知乎已将二维码转换成链接,可自动跳转到微信)。 一:学习OpenCV三个阶段 人工智能带火了计算机视觉的人才需求,作为计算…

学习opencv3 pdf_【资源分享】有哪些学习openCV的网站或书籍?

点击上方"蓝色小字"关注我呀 请让我再水一篇文扩充一下我的资源分享专栏吧,跟大家分享一些opencv的书籍和网站。书籍 先给大家贴个图: 大部分是我到处搜集来的,还有一些是花钱在某鱼上买来的,今天把下载链接分享给大家(如果失效了可以加我微信备注【视觉电子书】…

开始学习OpenCV

Mark 一下,今天开始学习OpenCV。 希望能够从事图像处理开发的工作。 第一次肯定是安装开发环境。 软件选择的是VS2017 C 和 opencv 4.5.1版本。 VS2017安装教程:vs2017安装和使用教程(详细)_悲恋花丶无心之人的博客-CSDN博客_vs2…

OpenCV教程:超详细的OpenCV入门教程,值得收藏

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法(最基本的滤波到高级的物体检测皆有涵盖)。 OpenCV 使用 C/C 开发&#…

8.2 OpenCV简介

OpenCV简介 学习目标 了解OpenCV是什么 能够独立安装OpenCV 1 什么是OpenCV 1.1 OpenCV简介 OpenCV是一款由Intel公司俄罗斯团队发起并参与和维护的一个计算机视觉处理开源软件库,支持与计算机视觉和机器学习相关的众多算法,并且正在日益扩展。 Ope…