国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Python > 正文

opencv-python 提取sift特征并匹配的實例

2024-09-09 19:03:10
字體:
來源:轉載
供稿:網友

我就廢話不多說,直接上代碼吧!

# -*- coding: utf-8 -*-import cv2import numpy as npfrom find_obj import filter_matches,explore_matchfrom matplotlib import pyplot as plt def getSift():  '''  得到并查看sift特征  '''  img_path1 = '../../data/home.jpg'  #讀取圖像  img = cv2.imread(img_path1)  #轉換為灰度圖  gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  #創建sift的類  sift = cv2.SIFT()  #在圖像中找到關鍵點 也可以一步計算#kp, des = sift.detectAndCompute  kp = sift.detect(gray,None)  print type(kp),type(kp[0])  #Keypoint數據類型分析 /uploads/cj/201912/4041399.html',img)  plt.imshow(img),plt.show() def matchSift():  '''  匹配sift特征  '''  img1 = cv2.imread('../../data/box.png', 0) # queryImage  img2 = cv2.imread('../../data/box_in_scene.png', 0) # trainImage  sift = cv2.SIFT()  kp1, des1 = sift.detectAndCompute(img1, None)  kp2, des2 = sift.detectAndCompute(img2, None)  # 蠻力匹配算法,有兩個參數,距離度量(L2(default),L1),是否交叉匹配(默認false)  bf = cv2.BFMatcher()  #返回k個最佳匹配  matches = bf.knnMatch(des1, des2, k=2)  # cv2.drawMatchesKnn expects list of lists as matches.  #opencv2.4.13沒有drawMatchesKnn函數,需要將opencv2.4.13/sources/samples/python2下的common.py和find_obj文件放入當前目錄,并導入  p1, p2, kp_pairs = filter_matches(kp1, kp2, matches)  explore_match('find_obj', img1, img2, kp_pairs) # cv2 shows image  cv2.waitKey()  cv2.destroyAllWindows() def matchSift3():  '''  匹配sift特征  '''  img1 = cv2.imread('../../data/box.png', 0) # queryImage  img2 = cv2.imread('../../data/box_in_scene.png', 0) # trainImage  sift = cv2.SIFT()  kp1, des1 = sift.detectAndCompute(img1, None)  kp2, des2 = sift.detectAndCompute(img2, None)  # 蠻力匹配算法,有兩個參數,距離度量(L2(default),L1),是否交叉匹配(默認false)  bf = cv2.BFMatcher()  #返回k個最佳匹配  matches = bf.knnMatch(des1, des2, k=2)  # cv2.drawMatchesKnn expects list of lists as matches.  #opencv3.0有drawMatchesKnn函數  # Apply ratio test  # 比值測試,首先獲取與A 距離最近的點B(最近)和C(次近),只有當B/C  # 小于閾值時(0.75)才被認為是匹配,因為假設匹配是一一對應的,真正的匹配的理想距離為0  good = []  for m, n in matches:    if m.distance < 0.75 * n.distance:      good.append([m])  img3 = cv2.drawMatchesKnn(img1, kp1, img2, kp2, good[:10], None, flags=2)  cv2.drawm  plt.imshow(img3), plt.show() matchSift()

以上這篇opencv-python 提取sift特征并匹配的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網之家。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南和县| 武汉市| 云南省| 原阳县| 施秉县| 洪雅县| 越西县| 高要市| 台江县| 凤翔县| 延寿县| 成安县| 鸡泽县| 黄浦区| 乌海市| 伊通| 太仆寺旗| 凯里市| 龙岩市| 清远市| 兴安盟| 永定县| 名山县| 图们市| 新河县| 山西省| 封开县| 孝感市| 会理县| 陆丰市| 新兴县| 仙桃市| 济阳县| 枣庄市| 平山县| 茂名市| 西昌市| 阳山县| 五指山市| 莫力| 东源县|