效果特別差 只能用來識別簡單的東西
僅供練手
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...