本文分享内容来自图书《学习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

【学习OpenCV4】键盘鼠标操作总结相关推荐

  1. [Python从零到壹] 九.网络爬虫之Selenium基础技术万字详解(定位元素、常用方法、键盘鼠标操作)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  2. 微型计算机上的shift字母,微型计算机组成和键盘鼠标操作练习.doc

    乌 海 职 业 技 术 学 院 计算机文化基础实验指导 PAGE 75 PAGE 1 实验一 微型计算机组成和键盘鼠标操作练习 实验目的和要求 了解微型计算机的硬件组成,掌握微型计算机的启动和键盘鼠标 ...

  3. 屏幕实时显示键盘鼠标操作软件keycastow,适合做视频教程

    屏幕实时显示键盘鼠标操作软件keycastow,适合做视频教程 学习了:https://www.52pojie.cn/thread-535154-1-1.html 进行键盘按键的屏幕实时显示:

  4. python监控键盘输入_Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】...

    本文实例讲述了Python实现监控键盘鼠标操作.分享给大家供大家参考,具体如下: # -*- coding: utf-8 -*- import pythoncom import pyHook impo ...

  5. 程序模拟键盘鼠标操作

    用代码模拟键盘鼠标操作,主要用到keybd_event/mouse_event或者SendInput  API函数.使用示例如下(附注释):         /*         * 模拟键盘输入,以 ...

  6. 自动定时执行键盘鼠标操作的工具软件(附完整VBS脚本) —— 定时执行专家

    目录 ◆ 定时执行专家 - 操作键盘鼠标脚本的设置方法 ◆ 定时执行专家 - 自动登录某网站的完整脚本 ◆ 定时执行专家 - 简介 ◆ 定时执行专家 - 最新版下载链接 ◆ 关键字 Keywords ...

  7. Python 模拟键盘鼠标操作实战教程

    在某些情况下,如果我们需要进行自动化操作的应用没有提供相应的接口,我们无法直接通过Python来调用API实现自动化.这种情况下,Python也不是完全没有办法的,我们可以采用模拟键盘和鼠标的方式实现 ...

  8. 计算机键盘功能教案,计算机基础教案2(键盘鼠标操作).doc

    计算机基础教案2(键盘鼠标操作).doc Windows XP的基本操作 教学课题:键盘的基本功能和输入规则 教学目的:1.认识键盘上常用键并会运用 2.启动与关闭计算机 3.掌握键盘和鼠标的使用方法 ...

  9. 华为使用计算机投屏要打开什么,华为P20投屏开启电脑办公模式,键盘鼠标操作更方便...

    原标题:华为P20投屏开启电脑办公模式,键盘鼠标操作更方便 随着手机功能越来越强,甚至具备一定的办公能力,传统电脑打开率越来越低.手机会不会在某天取代电脑呢?华为新近推出的旗舰机型如P20配套手机投屏 ...

  10. java 模拟鼠标_java实现简单的模拟键盘鼠标操作

    简简单单的记录: 近期需要用到模拟键盘鼠标操作,所以记录下来,以备后用,看了很多例子,未标明引用,请见谅 package com.text.jna; import javax.imageio.Imag ...

最新文章

  1. opengl深度缓冲获得的深度图精度太低_深度学习行人重识别ReID最新综述与展望...
  2. 提升Azure App Service的几个建议
  3. axure原型案例_Axure RP9原型案例:制作一个可以滑动的菜单
  4. 3、事件响应函数(一)
  5. 虚拟服务器声卡,如何使用虚拟声卡?虚拟声卡安装教程!
  6. python在线朗读-简单的python代码实现语音朗读
  7. 多线程编程之二——MFC中的多线程开发(收藏)
  8. Redis由分布式锁造成的重大事故
  9. Adobe软件的各种卸载工具和方法,不信灭不掉AE!
  10. 使用android busybox拷贝文件到qnx系统
  11. 周记0053:0054
  12. 8.如何在idea打开一个已有项目
  13. 推荐系统:电商推荐系统架构
  14. solr中文同义词检索的配置讲解
  15. 平安人寿“内鬼”泄露近4万条公民信息
  16. IDEA敏感数据检测实践整理
  17. matlab弹簧振子的阻尼振动,MATLAB计算方法和技巧6_2阻尼振动
  18. 2009玩得疯海岛夏令营(七天)
  19. 配置汇编环境(王爽)
  20. 用ECS做HexMap:高地与阶梯

热门文章

  1. 小明Q2投影仪好用吗?小明Q2和哈趣K1哪个更值得入手?
  2. PCIE,USB传输速率和带宽
  3. VCS IDEA没有Enable Version Control Intergration
  4. 【B端·BI系统实战分析】BI系统概述
  5. java对接海康威视SDk实现红外DL/T抓图
  6. Python脚本抢购茅台,一键式傻瓜教程,不会python 也能用
  7. 嵌入式(二十):并行接口
  8. 新加坡国际学校IB成绩亮眼,全球40%满分考生来自新加坡
  9. HTML+CSS+JS—时尚服装购物商城(1页) 大学生服装购物商城网页作品 服装网页设计作业模板 学生网页制作源代码下载
  10. 带宽储备能力超100 Tbps,华为云CDN保障平台从容应对流量高峰