Opencv处理鼠标事件-OpenCV步步精深
在图片上双击过的位置绘制一个 圆圈
鼠标事件就是和鼠标有关的,比如左键按下,左键松开,右键按下,右键松开,双击右键等等。
我们可以通过鼠标事件获得与鼠标对应的图片上的坐标。我们通过以下函数来调用查看所有鼠标事件。
- events=[i for i in dir(cv2) if 'EVENT'in i]
- print events
- 所有的鼠标事件
我们来是这写一下这个函数,第一步还是调用库
- import cv2
- import numpy as np
调用鼠标回调函数
- def draw_circle(event,x,y,flags,param):
这个函数有5个参数:鼠标事件名称,坐标是双击时鼠标的位置,我没看懂flags,param是啥意思,不敢误人子弟。(希望有心人教教我)
- if event==cv2.EVENT_LBUTTONDBLCLK:
如果这个事件是左键双击事件
- cv2.circle(img,(x,y),100,(255,0,0),-1)
那么画一个圆,昨天说过有关cv2.circle的参数,今天不再赘述。
- img=np.zeros((512,512,3),np.uint8)
这是创造一个空的黑色环境,昨天也讲过,记的复习哦!
- cv2.namedWindow('shuhangjihuayuan')
命名窗口为shuangjihuayuan
- cv2.setMouseCallback('shuangjihuayuan',draw_circle)
(创建图像与窗口并将窗口)与回调函数绑定
然后就是显示出来就好啦
- while(1):
- cv2.imshow('shuangjihuayuan',img)
- if cv2.waitKey(20)&0xFF==27:
- break
然后销毁窗口
- cv2.destroyAllWindows()
- 运行结果
所有代码来啦
# -*- coding:utf-8 -*-
"""
Created on Sun Dec 31 05:07:11 2016
@author: Y
"""
import cv2
import numpy as np
def draw_circle(event,x,y,flags,param):
if event==cv2.EVENT_LBUTTONDBLCLK:
cv2.circle(img,(x,y),100,(255,0,0),-1)
img=np.zeros((512,512,3),np.uint8)
cv2.namedWindow('shuangjihuayuan')
cv2.setMouseCallback('shuangjihuayuan',draw_circle)
while(1):
cv2.imshow('shuangjihuayuan',img)
if cv2.waitKey(20)&0xFF==27:
break
cv2.destroyAllWindows()
天色朦朦亮,早起做运动啦!那条禁忌之路,充斥了太多人性的弱点,我本不该踏进一步 。 既然选择了,那就义无反顾的走下去吧,青春不执著,以后又该如何呢?加油,兄弟姐妹们!我是Y,欢迎大家在下面留言!
Opencv处理鼠标事件-OpenCV步步精深的更多相关文章
- Opencv稍微高级点的鼠标事件-OpenCV步步精深
今天我们要来点稍微高级的东西.在我们按下鼠标时可以画矩形,而我们按下键盘m键时,切换到画圆的模式,再按下m键,回到画矩形模式. 一起来写下代码,首先当然还是调用库 import cv2 import ...
- [opencv]调用鼠标事件执行grabcut算法实现阈值分割
#include<iostream> #include <opencv2/opencv.hpp> #include <math.h> using namespace ...
- Opencv函数setMouseCallback鼠标事件响应
用户通过鼠标对图像视窗最常见的操作有: 1. 左键单击按下 2. 左键单击抬起 3. 左键按下拖动 4. 鼠标指针位置移动 单次单击操作响应事件及顺序 Opencv中setMouseCallback( ...
- opencv鼠标事件
#include <opencv2\opencv.hpp> using namespace cv; struct mouse_para { cv::Mat org; cv::Mat img ...
- opencv入门系列教学(四)处理鼠标事件
一.鼠标事件的简单演示 opencv中的鼠标事件,值得是任何与鼠标相关的任何事物,例如左键按下,左键按下,左键双击等.我们先来看看鼠标事件有哪些,在python中执行下面代码: import cv2 ...
- Opencv step by step - 鼠标事件
鼠标事件有下面几种(没有滚轮事件,比较遗憾): #define CV_EVENT_MOUSEMOVE 0 滑动 #define CV_EVENT_LBUTTONDOWN 1 左键点击 #define ...
- Opencv下图像对鼠标事件的响应
直接上代码: //////////////////////////////////////////////////////////////////////// // // 该程序从文件中读入一幅图像, ...
- 如何用OpenCV跟踪鼠标操作
转载:如何用OpenCV跟踪鼠标操作 http://blog.skyoung.org/2014/05/01/how-to-track-mouse/ 在视频第一帧手动标记出目标的位置是在线视觉跟踪中最基 ...
- opencv对鼠标的响应
#include <cv.h> #include <highgui.h> #include <stdio.h> #pragma comment(lib,&quo ...
随机推荐
- python tornado 实现类禅道系统
最近楼主加班 喽, 好久没有更新我的博客了,哎,一言难尽,废话我就不说了,来开始上精华. 背景:目前市面上有很多bug管理工具,但是各有各的特点,最著名,最流行的就是禅道,一个偶然的机会接触到了pyt ...
- CCIE-MPLS VPN-实验手册(下卷)
10:跨域的MPLS VPN (Option A) 10.1 实验拓扑 10.1 实验需求 a. R1 R2 R3 组成P-NETWORK R1 R2 R3 位于AS 1,底层协议采用EI ...
- 新CCIE笔记之'口口相传'路由协议
//由于思科所有命令行中没有尖括号"<>"这样的关键字,所以本文中出现命令行中的尖括号中的内容均为注释提示信息,代表此处应该填入那一类数据. 请容许我将RIP和EIGR ...
- linux每日一练:Enable multithreading to use std::thread: Operation not permitted问题解决
linux每日一练:Enable multithreading to use std::thread: Operation not permitted问题解决 在linux在需要使用c++11时会遇到 ...
- 201521123064 《Java程序设计》第6周学习总结
1. 本章学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...
- 如何将ubuntu文件夹中文名改为英文
其实我已经忍了很久. ubuntu在中文界面下面,自动创建了"桌面","文档",图片 .公共的 .下载. 音乐. 视频等中文目录. 在命令行下操作的时候,要么切 ...
- 201521123037 《Java程序设计》第11周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. Java多线程之Executor.ExecutorService.Executors.Callable.Futur ...
- 201521123002 《Java程序设计》第13周学习总结
本次作业参考文件 正则表达式参考资料 1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 网络 基本概念:协议 IP 域名 端口 通信:socket URL ...
- JAVA课程设计——单机版五子棋
JAVA课程设计--单机版五子棋 1.团队名称.团队成员介绍 团队名称:Gomoku小分队 团队成员: 网络1512 201521123038 游舒婷(组长) 网络1512 201521123043 ...
- 201521123019 《Java程序设计》第11周学习总结
1. 本章学习总结 2. 书面作业 Q1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1除了使用synchronized修饰方法实现互斥同步访问,还有什么办法实现互斥同步访 ...