多尺度模板匹配

2021-10-09 04:10:16 字數 1726 閱讀 6148

效果特別差 只能用來識別簡單的東西

僅供練手

import cv2

import numpy as np

import os

import time

temp=cv2.imread('camera roll/te***.jpg') #模板

gray_temp=cv2.cvtcolor(temp, cv2.color_bgr2gray)

h_t,w_t,c_t=temp.shape[:]

cv2.imshow('gray-',gray_temp)

os._exit(-1)

counter=0 #計數初始化

while true:

start =time.clock()

success,frame=cap.read()

if success != true:

break

if counter%3==0:#隔三幀處理一次

h, w, c = frame.shape[:]

print('h,w',h,w)

h=0.6*h

w1=0.1*w

w2=0.9*w

h_c,w_c,c_c=dst.shape[:]

#print('h_c,w_c:',h_c,w_c)

gray_frame = cv2.cvtcolor(dst, cv2.color_bgr2gray)

for r in np.linspace(1, 2,10 )[::-1]:

# 根據尺度大小對模板進行縮放

resized = cv2.resize(gray_temp, (0, 0), fx=r, fy=r, interpolation=cv2.inter_nearest)

# 匹配模板

if resized.shape[0]> frame.shape[0] or resized.shape[1]> frame.shape[1]:

print('模板比大')

break

res = cv2.matchtemplate(gray_frame, resized, cv2.tm_ccoeff_normed)

loc = np.where(res >= 0.6)

for pt in zip(*loc[::-1]):

#print(pt)

(startx, starty) = (int(pt[0]+w1), int(pt[1]+h))

(endx, endy) = (int(pt[0]+w1 + h_t*r), int(pt[1]+h + w_t *r))

cv2.rectangle(frame, (startx, starty), (endx, endy), (0, 255, 0), 3)

#cv2.rectangle(frame,pt,(pt[0]+h_t*r,pt[1]+w_t*r), (0, 255, 0), 3)

cv2.imshow('result',frame)

counter +=1

if cv2.waitkey(40) & 0xff == ord('q'):

break

end=time.clock()

print('**********===')

print('time', end-start)

cap.release() # 釋放資源

cv2.destroywindow() #關閉視窗

多尺度 理解

1.比如有一幅影象,裡面有房子有車有人,在這整張圖上提取特徵,提取的是全域性的特徵 現在,擷取影象的一部分,比如擷取汽車的部分,並將其放大至與原圖相同的尺寸,在此時擷取後放大的圖上提取特徵,提取的是整幅影象中某一部分的詳細特徵。2.或者,例如在進行卷積時,如圖 隨便截的圖 分別提取出第 三 四 五層...

Gabor濾波 多尺度問題

gabor變換屬於加窗傅利葉變換,gabor函式可以在頻域不同尺度 不同方向上提取相關的特徵。另外gabor函式與人眼的生物作用相仿,所以經常用作紋理識別上,並取得了較好的效果。二維gabor函式可以表示為 其中 v的取值決定了gabor濾波的波長,u的取值表示gabor核函式的方向,k表示總的方向...

labview 視覺 多模板匹配 教程

談到labview的定位,有很多人吐槽其沒有多模板匹配的功能,今天就給大家介紹下,labview視覺自帶的多模板匹配功能。多模板匹配僅支援幾何匹配,不支援灰度匹配。其多模板學習函式如下 注意點如下 template images 是需要通過幾何模板學習函式得到的模板圖,普通的影象無效。templat...