python-opencv时间计算,视频物体追踪标记

程序运行的时间计算

**# -*- 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)