python-opencv时间计算,视频物体追踪标记
2017-03-12 15:12
323 查看
程序运行的时间计算
OpenCV 中的很多函数都被优化过(使用 SSE2,AVX 等)。也包含一些没有被优化的代码。如果我们的系统支持优化的话要尽量利用只一点。在编译时优化是被默认开启的。因此 OpenCV 运行的就是优化后的代码,如果你把优化关闭的话就只能执行低效的代码了。你可以使用函数 cv2.useOptimized()来查看优化是否被开启了,使用函数 cv2.setUseOptimized() 来开启优化。让我们来看一个简单的例子吧。
opencv中图形处理
转换颜色空间
在 OpenCV 中有超过 150 中进行颜色空间转换的方法。但是你以后就会发现我们经常用到的也就两种:BGR↔Gray 和 BGR↔HSV。我们要用到的函数是:cv2.cvtColor(input_image,flag),其中 flag就是转换类型。对于 BGR↔Gray 的转换,我们要使用的 flag 就是 cv2.COLOR_BGR2GRAY。同样对于 BGR↔HSV 的转换,我们用的 flag 就是 cv2.COLOR_BGR2HSV。你还可以通过下面的命令得到所有可用的 flag。
在 OpenCV 的 HSV 格式中,H(色彩/色度)的取值范围是 [0,179],S(饱和度)的取值范围 [0,255],V(亮度)的取值范围 [0,255]。但是不同的软件使用的值可能不同。所以当你需要拿 OpenCV 的 HSV 值与其他软件的 HSV 值进行对比时,一定要记得归一化。
对蓝色的物体实现追踪并标记,代码如下
这是物体跟踪中最简单的方法。当你学习了轮廓之后,你就会学到更多相关知识,那是你就可以找到物体的重心,并根据重心来跟踪物体,仅仅在摄像头前挥挥手就可以画出同的图形,或者其他更有趣的事。
**# -*- coding: utf-8 -*- """ @author: Andrew """ import cv2 import numpy as np img=cv2.imread('tu.jpg') e1=cv2.getTickCount() for i in xrange(5,49,2): img=cv2.medianBlur(img,i) e2=cv2.getTickCount() time=(e2-e1)/cv2.getTickFrequency() //使用计数的数值除以计数的单位时间频率,得到计数的时间 print time **
OpenCV 中的很多函数都被优化过(使用 SSE2,AVX 等)。也包含一些没有被优化的代码。如果我们的系统支持优化的话要尽量利用只一点。在编译时优化是被默认开启的。因此 OpenCV 运行的就是优化后的代码,如果你把优化关闭的话就只能执行低效的代码了。你可以使用函数 cv2.useOptimized()来查看优化是否被开启了,使用函数 cv2.setUseOptimized() 来开启优化。让我们来看一个简单的例子吧。
opencv中图形处理
转换颜色空间
在 OpenCV 中有超过 150 中进行颜色空间转换的方法。但是你以后就会发现我们经常用到的也就两种:BGR↔Gray 和 BGR↔HSV。我们要用到的函数是:cv2.cvtColor(input_image,flag),其中 flag就是转换类型。对于 BGR↔Gray 的转换,我们要使用的 flag 就是 cv2.COLOR_BGR2GRAY。同样对于 BGR↔HSV 的转换,我们用的 flag 就是 cv2.COLOR_BGR2HSV。你还可以通过下面的命令得到所有可用的 flag。
在 OpenCV 的 HSV 格式中,H(色彩/色度)的取值范围是 [0,179],S(饱和度)的取值范围 [0,255],V(亮度)的取值范围 [0,255]。但是不同的软件使用的值可能不同。所以当你需要拿 OpenCV 的 HSV 值与其他软件的 HSV 值进行对比时,一定要记得归一化。
对蓝色的物体实现追踪并标记,代码如下
**# -*- coding: utf-8 -*- """ @author: Andrew """ import cv2 import numpy as np cap=cv2.VideoCapture('rm.rmvb') while(1): #获取每一帧 ret,frame=cap.read() 转换到HSV hsv=cv2.cvtColor(frame,cv2.COLOR_BGR2HSV) #设定蓝色的阈值 lower_blue=np.array([110,50,50]) upper_blue=np.array([130,255,255]) #对阈值构建掩模 mask=cv2.inRange(hsv,lower_blue,upper_blue) #对原图像和掩模进行位运算 res=cv2.bitwise_and(frame,frame,mask=mask) #显示图像 cv2.imshow('frame',frame) cv2.imshow('mask',mask) cv2.imshow('res',res) #检测若按键ESC则退出程序 k=cv2.waitKey(5)&0xFF if k==27: break #跳出主循环 #关闭窗口 cv2.destroyAllWindows() **
这是物体跟踪中最简单的方法。当你学习了轮廓之后,你就会学到更多相关知识,那是你就可以找到物体的重心,并根据重心来跟踪物体,仅仅在摄像头前挥挥手就可以画出同的图形,或者其他更有趣的事。
相关文章推荐
- python+opencv实现动态物体追踪
- python+opencv实现动态物体追踪
- Python-OpenCV 处理视频(三)(四)(五): 标记运动轨迹 运动检测 运动方向判断
- Python-OpenCV 处理视频(三): 标记运动轨迹
- 基于python使用opencv监测视频指定区域是否有物体移动
- Python日期操作date,计算到特定日期的时间。
- opencv计算时间短小程序
- python,时间加减,时间计算,时间格式化,时间提取汇总
- python程序 计算时间差加减
- Python实例讲解 -- 获取本地时间日期(日期计算)
- python中关于时间和日期函数的常用计算总结
- python 计算时间差
- python两个关于计算方法运行时间的修饰器
- OpenCV读指定时间的视频
- python中关于时间和日期函数的常用计算总结(time和datatime)
- python计算程序运行时间
- Python实例讲解 -- 获取本地时间日期(日期计算)
- OpenCV学习——物体跟踪的粒子滤波算法实现之计算选定区域直方图
- python+ffmpeg按相等时间分割视频
- Python for opencv 之 播放视频