0x00. 查看鼠标事件

下面的方法可以查看OpenCV支持的所有鼠标事件:

import cv2
events=[i for i in dir(cv2) if 'EVENT'in i]
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_MOUSEMOVE', 'EVENT_RBUTTONDBLCLK', 'EVENT_RBUTTONDOWN', 'EVENT_RBUTTONUP']

0x01. 使用示例:

下面代码实现鼠标移动绘制图像:

import cv2
import numpy as np
def draw_circle(event,x,y,flags,param):if event==cv2.EVENT_MOUSEMOVE:cv2.circle(img,(x,y),100,(255,0,0),-1)img = np.zeros((512,512,3),np.uint8)
cv2.namedWindow('image')
cv2.setMouseCallback('image',draw_circle)while(1):cv2.imshow('image',img)if cv2.waitKey(20)&0xFF==27:break
cv2.destroyAllWindows()



在图像处理的中每秒钟都要进行大量的运算,所以对程序的要求不仅要能给出正确的结果,同时还需要快。

0x00. 获取程序执行时间

cv2.getTickCount 函数返回从参考点到这个函数被执行的时钟数。所以当在一个函数执行前后都调用它的话,就会得到这个函数的执行时间(时钟数)。使用示例:
e1 = cv2.getTickCount()
# 你的代码
e2 = cv2.getTickCount()
time = (e2 - e1)/ cv2.getTickFrequency()
cv2.getTickFrequency 返回时钟频率,或者说每秒钟的时钟数。使用示例:
img1 = cv2.imread('messi5.jpg')e1 = cv2.getTickCount()
for i in xrange(5,49,2):img1 = cv2.medianBlur(img1,i)
e2 = cv2.getTickCount()
t = (e2 - e1)/cv2.getTickFrequency()
print t
当然,Python中也可以使用time库来获取程序执行的时间。

0x01. OpenCV 中的默认优化

OpenCV 中的很多函数都被优化过(使用 SSE2,AVX 等)。也包含一些没有被优化的代码。如果我们的系统支持优化的话要尽量利用这一点。在编译时优化是被默认开启的。可以使用函数 cv2.useOptimized() 来查看优化是否被开启了,使用函数 cv2.setUseOptimized() 来开启优化。
# check if optimization is enabled
In [5]: cv2.useOptimized()
Out[5]: TrueIn [6]: %timeit res = cv2.medianBlur(img,49)
10 loops, best of 3: 34.9 ms per loop# Disable it
In [7]: cv2.setUseOptimized(False)In [8]: cv2.useOptimized()
Out[8]: FalseIn [9]: %timeit res = cv2.medianBlur(img,49)
10 loops, best of 3: 64.1 ms per loop
from: https://segmentfault.com/a/1190000003804939
https://segmentfault.com/a/1190000003804954

Python-OpenCV 杂项(二)(三): 鼠标事件、 程序性能的检测和优化相关推荐

  1. Python-OpenCV 杂项(三): 程序性能的检测和优化

    在图像处理的中每秒钟都要进行大量的运算,所以对程序的要求不仅要能给出正确的结果,同时还需要快. 0x00. 获取程序执行时间 cv2.getTickCount 函数返回从参考点到这个函数被执行的时钟数 ...

  2. Python+OpenCV:二维直方图(2D Histograms)

    Python+OpenCV:二维直方图(2D Histograms) ################################################################# ...

  3. 数字图像处理二维码识别 python+opencv实现二维码实时识别

    数字图像处理二维码识别 python+opencv实现二维码实时识别 特点: (1)可以实现普通二维码,条形码: (2)解决了opencv输出中文乱码的问题 (3)增加网页自动跳转功能 (4)实现二维 ...

  4. OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack()

    OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack() 参考博客: Harris角点检测原理详解 Harri ...

  5. OpenCV差分二值化的实时场景文本检测的实例(附完整代码)

    OpenCV差分二值化的实时场景文本检测的实例 OpenCV差分二值化的实时场景文本检测的实例 OpenCV差分二值化的实时场景文本检测的实例 OpenCV差分二值化的实时场景文本检测的实例(附完整代 ...

  6. python opencv图像二值化函数_python opencv 二值化 计算白色像素点的实例

    python opencv 二值化 计算白色像素点的实例 贴部分代码 #! /usr/bin/env python # -*- coding: utf-8 -*- import cv2 import ...

  7. 常用事件方法及技巧(二) -- MouseEvent(鼠标事件)

    先说明一下,我并不会把所有的内容都写出来,只列我认为有必要讲解一下的内容.如果要了解全部内容,请参看Flash自带的帮助文件.该系列文章都是按照这个思路写的. 先说一个本人觉得很实用的通用方法:toS ...

  8. PySide2从零开始的python界面设计5---搞定鼠标事件与鼠标样式!

    捕获鼠标事件 所有widget类都含有四个鼠标事件,分别代表着双击,移动,单击,释放: def mouseDoubleClickEvent(self,event): # mouseMoveEvent ...

  9. Python与OpenCV(二)——基于背景差分法的运动目标检测程序分析

    背景差分法是传统运动目标检测算法中最常用的方法.其基本原理如图所示. 从图中可知,背景差分法是通过建立背景模型,比较当前帧与背景模型对应像素的差异点来检测运动目标的方法. 背景模型的建立主要通过两种方 ...

最新文章

  1. 游戏AI之初步介绍(0)
  2. 蓝桥杯抽卡游戏c语言,取球游戏——第三届蓝桥杯省赛C语言A组第10题
  3. ASP.NET Core Web 支付功能接入 微信-扫码支付篇
  4. Linux常用初级指令介绍
  5. leetcode 142. 环形链表 II(set/快慢指针)
  6. css 滤镜之AlphaImageLoader
  7. 从零开始学前端:显示隐藏与文本溢出 --- 今天你学习了吗?(CSS:Day16)
  8. 使用 jQuery Mobile 和 CSS3 实现响应式设计
  9. doris同步作业配置参数修改和注意事项
  10. Ubuntu16.04 +cuda8.0+cudnn+caffe+theano+tensorflow配置明细
  11. 解决办法:一切都正确,Python3执行PyImport_Import()一直返回NULL
  12. Hibernate检索策略
  13. 网上经常听到的“终端”指的什么?
  14. 识别音标python_音标可以识别单词吗?
  15. 300多张精美京剧脸谱,收藏~~
  16. 关于IPv6(超详细讲解)
  17. 北京十大办公室租赁平台,高性价比
  18. 算法-大作业-圆排列问题
  19. sqlserver数据库操作大全——常用语句/技巧集锦/经典语句
  20. 硬件基础知识----(1)基本概念

热门文章

  1. 【待继续研究】建模-听说你的坏样本不太够
  2. NLP—word2vec词向量简介
  3. 用Kubernetes部署超级账本Fabric的区块链即服务(1)
  4. 教程 | 理解和实现自然语言处理终极指南(附Python代码)
  5. 百度语音识别技术负责人李先刚:如何利用Deep CNN大幅提升识别准确率?
  6. linux关闭涉及安全的服务,Linux中关闭不必要服务减少漏洞
  7. Apache ZooKeeper - ZK的数据和文件
  8. Oracle增加修改删除字段/主键
  9. 电脑快捷键横屏变竖屏,电脑显示器竖屏横屏来回切换怎么设置
  10. boseqc35能不能连电脑_连win7都用不了?轻量级LXLE系统,只要10分钟,旧电脑也能运行如飞!...