国产探花免费观看_亚洲丰满少妇自慰呻吟_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特征并匹配的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網之家。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 余江县| 四平市| 平昌县| 刚察县| 长子县| 读书| 博野县| 阿巴嘎旗| 南雄市| 广灵县| 盐源县| 宜章县| 泸定县| 绵竹市| 股票| 甘孜县| 西峡县| 玉环县| 维西| 金堂县| 枣强县| 彭泽县| 广元市| 双峰县| 麟游县| 山丹县| 逊克县| 巫溪县| 白水县| 龙南县| 宜阳县| 宜丰县| 凌海市| 石渠县| 河津市| 巴中市| 安乡县| 高要市| 双城市| 徐州市| 双城市|