Python-OpenCV 杂项(二)(三): 鼠标事件、 程序性能的检测和优化
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 杂项(二)(三): 鼠标事件、 程序性能的检测和优化相关推荐
- Python-OpenCV 杂项(三): 程序性能的检测和优化
在图像处理的中每秒钟都要进行大量的运算,所以对程序的要求不仅要能给出正确的结果,同时还需要快. 0x00. 获取程序执行时间 cv2.getTickCount 函数返回从参考点到这个函数被执行的时钟数 ...
- Python+OpenCV:二维直方图(2D Histograms)
Python+OpenCV:二维直方图(2D Histograms) ################################################################# ...
- 数字图像处理二维码识别 python+opencv实现二维码实时识别
数字图像处理二维码识别 python+opencv实现二维码实时识别 特点: (1)可以实现普通二维码,条形码: (2)解决了opencv输出中文乱码的问题 (3)增加网页自动跳转功能 (4)实现二维 ...
- OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack()
OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack() 参考博客: Harris角点检测原理详解 Harri ...
- OpenCV差分二值化的实时场景文本检测的实例(附完整代码)
OpenCV差分二值化的实时场景文本检测的实例 OpenCV差分二值化的实时场景文本检测的实例 OpenCV差分二值化的实时场景文本检测的实例 OpenCV差分二值化的实时场景文本检测的实例(附完整代 ...
- python opencv图像二值化函数_python opencv 二值化 计算白色像素点的实例
python opencv 二值化 计算白色像素点的实例 贴部分代码 #! /usr/bin/env python # -*- coding: utf-8 -*- import cv2 import ...
- 常用事件方法及技巧(二) -- MouseEvent(鼠标事件)
先说明一下,我并不会把所有的内容都写出来,只列我认为有必要讲解一下的内容.如果要了解全部内容,请参看Flash自带的帮助文件.该系列文章都是按照这个思路写的. 先说一个本人觉得很实用的通用方法:toS ...
- PySide2从零开始的python界面设计5---搞定鼠标事件与鼠标样式!
捕获鼠标事件 所有widget类都含有四个鼠标事件,分别代表着双击,移动,单击,释放: def mouseDoubleClickEvent(self,event): # mouseMoveEvent ...
- Python与OpenCV(二)——基于背景差分法的运动目标检测程序分析
背景差分法是传统运动目标检测算法中最常用的方法.其基本原理如图所示. 从图中可知,背景差分法是通过建立背景模型,比较当前帧与背景模型对应像素的差异点来检测运动目标的方法. 背景模型的建立主要通过两种方 ...
最新文章
- 游戏AI之初步介绍(0)
- 蓝桥杯抽卡游戏c语言,取球游戏——第三届蓝桥杯省赛C语言A组第10题
- ASP.NET Core Web 支付功能接入 微信-扫码支付篇
- Linux常用初级指令介绍
- leetcode 142. 环形链表 II(set/快慢指针)
- css 滤镜之AlphaImageLoader
- 从零开始学前端:显示隐藏与文本溢出 --- 今天你学习了吗?(CSS:Day16)
- 使用 jQuery Mobile 和 CSS3 实现响应式设计
- doris同步作业配置参数修改和注意事项
- Ubuntu16.04 +cuda8.0+cudnn+caffe+theano+tensorflow配置明细
- 解决办法:一切都正确,Python3执行PyImport_Import()一直返回NULL
- Hibernate检索策略
- 网上经常听到的“终端”指的什么?
- 识别音标python_音标可以识别单词吗?
- 300多张精美京剧脸谱,收藏~~
- 关于IPv6(超详细讲解)
- 北京十大办公室租赁平台,高性价比
- 算法-大作业-圆排列问题
- sqlserver数据库操作大全——常用语句/技巧集锦/经典语句
- 硬件基础知识----(1)基本概念
热门文章
- 【待继续研究】建模-听说你的坏样本不太够
- NLP—word2vec词向量简介
- 用Kubernetes部署超级账本Fabric的区块链即服务(1)
- 教程 | 理解和实现自然语言处理终极指南(附Python代码)
- 百度语音识别技术负责人李先刚:如何利用Deep CNN大幅提升识别准确率?
- linux关闭涉及安全的服务,Linux中关闭不必要服务减少漏洞
- Apache ZooKeeper - ZK的数据和文件
- Oracle增加修改删除字段/主键
- 电脑快捷键横屏变竖屏,电脑显示器竖屏横屏来回切换怎么设置
- boseqc35能不能连电脑_连win7都用不了?轻量级LXLE系统,只要10分钟,旧电脑也能运行如飞!...