嫌疑犯的頭像:
找出這個嫌疑犯~
搞定~:
解決思路:
# -*-coding:utf8-*-#
"""第一步:對影象進行灰度化,使用sift.detectandcompute(image, none) 進行ksp關鍵點,dpsift特徵向量的檢測
第二步:構建bmfmatch匹配器,獲得符合條件的匹配值,matches獲得的是ksp關鍵點的匹配值得索引,使用索引獲得符合條件的kspa和kspb
第三步:比值測試,首先獲取與 a距離最近的點 b (最近)和 c (次近),只有當 b/c 小於閥值時(0.75)才被認為是匹配,因為假設匹配
是一一對應的,真正的匹配的理想距離為0
第四步:提取兩幅影象特徵之後,畫出匹配點對連線。
"""import numpy as np
import cv2
from matplotlib import pyplot as plt
img1 = cv2.imread(
'tx.png',0
)img2 = cv2.imread(
'hz2.png',0
)sift = cv2.xfeatures2d.sift_create(
)# 例項化的sift函式
kp1, des1 = sift.detectandcompute(img1,
none
)# 計算出影象的關鍵點和sift特徵向量
kp2, des2 = sift.detectandcompute(img2,
none
)bf = cv2.bfmatcher(
)# 例項化bfm匹配
matches = bf.knnmatch(des1, des2, k=2)
# 找出符合新增的關鍵點的索引
# 比值測試,首先獲取與 a距離最近的點 b (最近)和 c (次近),
# 只有當 b/c 小於閥值時(0.75)才被認為是匹配,
# 因為假設匹配是一一對應的,真正的匹配的理想距離為0
good =
for m, n in matches:
if m.distance <
0.75
* n.distance:
[m])
img3 = cv2.drawmatchesknn(img1,kp1,img2,kp2,good,
none
,flags=2)
# 提取兩幅影象特徵之後,畫出匹配點對連線。
plt.imshow(img3)
, plt.show(
)
這波操作是基於sift進行的角點檢測,若對sift不是很了解,可以看看這篇部落格: 6個嫌疑犯
code using system using system.collections.generic using system.text using system.collections 某地刑偵大隊對涉及六個嫌疑人的一樁疑案進行分析 a b至少有一人作案 a e f三人中至少有兩人參與作案 a d...
匿名黑客公布致使加拿大女孩自殺的嫌疑犯
一名15歲的加拿大女孩因遭人威脅欺凌而於上週自殺,匿名組織之後公布了導致女孩自殺的 名字和位址,這位男子隨後受到了其他人發出的恐嚇,宣稱要行使 維吉蘭特正義 vigilante justice,即私法 amanda todd自殺前乙個月在youtube上上傳了一則 以手寫字形式解釋她的遭遇 7年級時...
Opencv之特徵匹配
import cv2 import numpy as np import matplotlib.pyplot as plt matplotlib inline def cv show name,img cv2.imshow name,img cv2.waitkey 0 cv2.destroyallw...