基于python-openv下的模板跟踪算法的实现
admin
2023-07-31 01:47:33
0

前几周搞了一个基于模板跟踪的算法实现。即在视频中跟踪出模板目标
闲话不多说,直接程序给出:

# -*- coding: utf-8 -*-
\"\"\"
Created on Thu Jun 30 09:13:24 2016

@author: liu
\"\"\"  
import cv2
import numpy as np

from matplotlib import pyplot as plt
#img = cv2.imread(\'xucaise.jpg\',0)

#template = cv2.imread(\'xuxu.jpg\',0)
template = cv2.imread(\'ppp.png\',0)
w, h = template.shape[::-1]

#s1=cv2.imread(\'xupanmu.jpg\',cv2.IMREAD_GRAYSCALE)
#s1 = cv2.imread(ph1)
#s2 = cv2.imread(ph2)
methods = [\'cv2.TM_SQDIFF_NORMED\']
#methods = [\'cv2.TM_CCOEFF_NORMED\']#平方差匹配法,最好的匹配为0,值越大匹配越差;
       
cap = cv2.VideoCapture(\'double.mov\')

ret,frame = cap.read()
c=0
time=10
a=1
while ret:
    
    ret ,frame = cap.read()
    c=c+1
    if ret == True:
        
    
        if (c%time==0):
            for meth in methods:
                
                 method = cv2.TM_SQDIFF_NORMED#eval(meth)
                 cv2.imwrite(\'xuphoto\'+str(c)+\'.png\',frame)
                 s2=cv2.imread(\'xuphoto\'+str(c)+\'.png\',0)
                 #s2=frame
                 #img = cv2.imread(\'xucaise.jpg\',0)
                 res = cv2.matchTemplate(s2,template,method)
                 #cv2.imwrite(\'pp\'+str(c)+\'.jpg\',res)
               
                 min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
                 if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]:
                     top_left = min_loc
                 else:
                     top_left = max_loc
                 #top_left = max_loc
                 bottom_right = (top_left[0] + w +100, top_left[1] + h +100 )
                 cv2.rectangle(s2,top_left, bottom_right, 255, 2)
                 #cv2.imshow(\'img2\',s2)
                 cv2.imwrite(\'iphone\'+str(c)+\'.png\',s2)
                 
                 plt.subplot(121),plt.imshow(res,cmap = \'gray\')
                 plt.title(\'Matching Result\'), plt.xticks([]), plt.yticks([])
                # cv2.imwrite(\'ccc\'+str(c)+\'.jpg\',res)
                 plt.subplot(122),plt.imshow(s2,cmap = \'gray\')
                 plt.title(\'Detected Point\'), plt.xticks([]), plt.yticks([])
                 
                 
                 
                 plt.suptitle(\'cv2.TM_SQDIFF_NORMED\')
                 #plt.suptitle(\'cv2.TM_CCOEFF_NORMED\')
                 
                 plt.show()
                 
                 
                 #k = cv2.waitKey(60) & 0xff
                 #if k == 27:
                  #   break
                #pic_sub(emptyimg,s1,s2)  
                
                
                 if c>200:
                
                     c=0
    
cv2.destroyAllWindows()
cap.release()




程序目前是这些,如有看不懂的地方可以和我交流:liushengkai008@163.com
这个实现的结果就是能够跟踪我们选取的模板目标。但是对于模板的选取我们也需要小心点,要不然会跟踪丢失。这个你们用了之后会发现其中的小奥秘。
后期我会使用kinnect传感器来进行对于视觉的处理,请大家耐心等待哦

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
项目管理和工程管理的区别 项目管理 项目管理,顾名思义就是专注于开发和完成项目的管理,以实现目标并满足成功标准和项目要求。 工...