日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

特征匹配

發布時間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 特征匹配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python 使用Opencv實現圖像特征檢測與匹配

2018-06-13 11:36:58?Xy-Huang?閱讀數 19203更多

分類專欄:?Python?人工智能

版權聲明:本文為博主原創文章,遵循?CC 4.0 BY-SA?版權協議,轉載請附上原文出處鏈接和本聲明。

本文鏈接:https://blog.csdn.net/HuangZhang_123/article/details/80660688

----------歡迎加入學習交流QQ群:657341423


特征檢測是計算機對一張圖像中最為明顯的特征進行識別檢測并將其勾畫出來。大多數特征檢測都會涉及圖像的角點、邊和斑點的識別、或者是物體的對稱軸。
角點檢測?是由Opencv的cornerHarris函數實現,其他函數參數說明如下:

cv2.cornerHarris(src=gray, blockSize=9, ksize=23, k=0.04) # cornerHarris參數: # src - 數據類型為 float32 的輸入圖像。 # blockSize - 角點檢測中要考慮的領域大小。 # ksize - Sobel 求導中使用的窗口大小 # k - Harris 角點檢測方程中的自由參數,取值參數為 [0,04,0.06].
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

以國際象棋為例,這是計算機視覺最為常見的分析對象,如圖所示:

角點檢測代碼如下:

import cv2 import numpy as npimg = cv2.imread('chess_board.png') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # cornerHarris函數圖像格式為 float32 ,因此需要將圖像轉換 float32 類型 gray = np.float32(gray) # cornerHarris參數: # src - 數據類型為 float32 的輸入圖像。 # blockSize - 角點檢測中要考慮的領域大小。 # ksize - Sobel 求導中使用的窗口大小 # k - Harris 角點檢測方程中的自由參數,取值參數為 [0,04,0.06]. dst = cv2.cornerHarris(src=gray, blockSize=9, ksize=23, k=0.04) # 變量a的閾值為0.01 * dst.max(),如果dst的圖像值大于閾值,那么該圖像的像素點設為True,否則為False # 將圖片每個像素點根據變量a的True和False進行賦值處理,賦值處理是將圖像角點勾畫出來 a = dst>0.01 * dst.max() img[a] = [0, 0, 255] # 顯示圖像 while (True):cv2.imshow('corners', img)if cv2.waitKey(120) & 0xff == ord("q"):breakcv2.destroyAllWindows()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

運行代碼,結果如圖所示:


但有時候,圖像的像素大小對角點存在一定的影響。比如圖像越小,角點看上去趨向近似一條直線,這樣很容易造成角點的丟失。如果按照上述的檢測方法,會造成角點檢測結果不相符,因此引入DoG和SIFT算法進行檢測Opencv的SIFT類是DoG和SIFT算法組合。
DoG是對同一圖像使用不同高斯濾波器所得的結果。
SIFT是通過一個特征向量來描述關鍵點周圍區域的情況。
我們以下圖為例:

import cv2 # 讀取圖片并灰度處理 imgpath = 'varese.jpg' img = cv2.imread(imgpath) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 創建SIFT對象 sift = cv2.xfeatures2d.SIFT_create() # 將圖片進行SURF計算,并找出角點keypoints,keypoints是檢測關鍵點 # descriptor是描述符,這是圖像一種表示方式,可以比較兩個圖像的關鍵點描述符,可作為特征匹配的一種方法。 keypoints, descriptor = sift.detectAndCompute(gray, None)# cv2.drawKeypoints() 函數主要包含五個參數: # image: 原始圖片 # keypoints:從原圖中獲得的關鍵點,這也是畫圖時所用到的數據 # outputimage:輸出 # color:顏色設置,通過修改(b,g,r)的值,更改畫筆的顏色,b=藍色,g=綠色,r=紅色。 # flags:繪圖功能的標識設置,標識如下: # cv2.DRAW_MATCHES_FLAGS_DEFAULT 默認值 # cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS # cv2.DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG # cv2.DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS img = cv2.drawKeypoints(image=img, outImage=img, keypoints = keypoints, flags=cv2.DRAW_MATCHES_FLAGS_DEFAULT, color = (51, 163, 236))# 顯示圖片 cv2.imshow('sift_keypoints', img) while (True):if cv2.waitKey(120) & 0xff == ord("q"):break cv2.destroyAllWindows()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

運行代碼,結果如圖所示:


除了SIFT算法檢測之外,還有SURF特征檢測算法,比SIFT算法快,并吸收了SIFT算法的思想。SURF采用Hessian算法檢測關鍵點,而SURF是提取特征,這個與SIFT很像。Opencv的SURF類是Hessian算法和SURF算法組合。我們根據SIFT的代碼進行修改,代碼如下:

import cv2 # 讀取圖片并灰度處理 imgpath = 'varese.jpg' img = cv2.imread(imgpath) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 創建SURF對象,對象參數float(4000)為閾值,閾值越高,識別的特征越小。 sift = cv2.xfeatures2d.SURF_create(float(4000)) # 將圖片進行SURF計算,并找出角點keypoints,keypoints是檢測關鍵點 # descriptor是描述符,這是圖像一種表示方式,可以比較兩個圖像的關鍵點描述符,可作為特征匹配的一種方法。 keypoints, descriptor = sift.detectAndCompute(gray, None)# cv2.drawKeypoints() 函數主要包含五個參數: # image: 原始圖片 # keypoints:從原圖中獲得的關鍵點,這也是畫圖時所用到的數據 # outputimage:輸出 # color:顏色設置,通過修改(b,g,r)的值,更改畫筆的顏色,b=藍色,g=綠色,r=紅色。 # flags:繪圖功能的標識設置,標識如下: # cv2.DRAW_MATCHES_FLAGS_DEFAULT 默認值 # cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS # cv2.DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG # cv2.DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS img = cv2.drawKeypoints(image=img, outImage=img, keypoints = keypoints, flags=cv2.DRAW_MATCHES_FLAGS_DEFAULT, color = (51, 163, 236))# 顯示圖片 cv2.imshow('sift_keypoints', img) while (True):if cv2.waitKey(120) & 0xff == ord("q"):break cv2.destroyAllWindows()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

上述代碼我們只修改sift = cv2.xfeatures2d.SURF_create(float(4000))即可實現SURF特征檢測算法。運行結果如圖所示:


對比SURF和SIFT算法,ORB算法更處于起步階段,在2011年才首次發布。但比前兩者的速度更快。ORB基于FAST關鍵點檢測和BRIEF的描述符技術相結合,因此我們先了解FAST和BRIEF。
FAST:特征檢測算法。
BRIEF:只是一個描述符,這是圖像一種表示方式,可以比較兩個圖像的關鍵點描述符,可作為特征匹配的一種方法。
暴力匹配:比較兩個描述符并產生匹配結果。
在上述的例子中,我們只是將檢測的關鍵點進行勾畫,在這例子中,將使用ORB檢測關鍵點之外,還將兩圖進行匹配,匹配的圖像如下:

實現方法:首先分別對兩圖進行ORB處理,然后將兩圖的關鍵點進行暴力匹配。具體代碼如下:
# ORB算法實現特征檢測+暴力匹配

import numpy as np import cv2 from matplotlib import pyplot as plt# 讀取圖片內容 img1 = cv2.imread('aa.jpg',0) img2 = cv2.imread('bb.png',0)# 使用ORB特征檢測器和描述符,計算關鍵點和描述符 orb = cv2.ORB_create() kp1, des1 = orb.detectAndCompute(img1,None) kp2, des2 = orb.detectAndCompute(img2,None)# 暴力匹配BFMatcher,遍歷描述符,確定描述符是否匹配,然后計算匹配距離并排序 # BFMatcher函數參數: # normType:NORM_L1, NORM_L2, NORM_HAMMING, NORM_HAMMING2。 # NORM_L1和NORM_L2是SIFT和SURF描述符的優先選擇,NORM_HAMMING和NORM_HAMMING2是用于ORB算法 bf = cv2.BFMatcher(normType=cv2.NORM_HAMMING, crossCheck=True) matches = bf.match(des1,des2) matches = sorted(matches, key = lambda x:x.distance) # matches是DMatch對象,具有以下屬性: # DMatch.distance - 描述符之間的距離。 越低越好。 # DMatch.trainIdx - 訓練描述符中描述符的索引 # DMatch.queryIdx - 查詢描述符中描述符的索引 # DMatch.imgIdx - 訓練圖像的索引。# 使用plt將兩個圖像的匹配結果顯示出來 img3 = cv2.drawMatches(img1=img1,keypoints1=kp1,img2=img2,keypoints2=kp2, matches1to2=matches, outImg=img2, flags=2) plt.imshow(img3),plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

運行結果如圖所示:

# SURF和SIFT算法+暴力匹配
暴力匹配BFMatcher是一種匹配方法,只要提供兩個關鍵點即可實現匹配。若將上述例子改為SURF和SIFT算法,只需修改以下代碼:

將orb = cv2.ORB_create()改為 orb = cv2.xfeatures2d.SURF_create(float(4000))將bf = cv2.BFMatcher(normType=cv2.NORM_HAMMING, crossCheck=True)改為 bf = cv2.BFMatcher(normType=cv2.NORM_L1, crossCheck=True)
  • 1
  • 2
  • 3
  • 4
  • 5

# 獲取匹配關鍵點的坐標位置
在上述例子中,matches是DMatch對象,DMatch是以列表的形式表示,每個元素代表兩圖能匹配得上的點。如果想獲取某個點的坐標位置,在上述例子添加以下代碼:

# 由于匹配順序是:matches = bf.match(des1,des2),先des1后des2。 # 因此,kp1的索引由DMatch對象屬性為queryIdx決定,kp2的索引由DMatch對象屬性為trainIdx決定# 獲取aa.jpg的關鍵點位置 x,y = kp1[matches[0].queryIdx].pt cv2.rectangle(img1, (int(x),int(y)), (int(x) + 5, int(y) + 5), (0, 255, 0), 2) cv2.imshow('a', img1)# 獲取bb.png的關鍵點位置 x,y = kp2[matches[0].trainIdx].pt cv2.rectangle(img2, (int(x1),int(y1)), (int(x1) + 5, int(y1) + 5), (0, 255, 0), 2) cv2.imshow('b', img2)# 使用plt將兩個圖像的第一個匹配結果顯示出來 img3 = cv2.drawMatches(img1=img1,keypoints1=kp1,img2=img2,keypoints2=kp2, matches1to2=matches[:1], outImg=img2, flags=2) plt.imshow(img3),plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

運行結果如圖所示:


上述講到的暴力匹配是使用BFMatcher匹配器實現的,然后由match函數實現匹配。接下來講解K-最近鄰匹配(KNN),并在BFMatcher匹配下實現。在所有機器學習的算法中,KNN可能是最為簡單的算法。針對上述例子,改為KNN匹配,實現代碼如下:

import numpy as np import cv2 from matplotlib import pyplot as plt# 讀取圖片內容 img1 = cv2.imread('aa.jpg',0) img2 = cv2.imread('bb.png',0)# 使用ORB特征檢測器和描述符,計算關鍵點和描述符 orb = cv2.ORB_create() kp1, des1 = orb.detectAndCompute(img1,None) kp2, des2 = orb.detectAndCompute(img2,None)# 暴力匹配BFMatcher,遍歷描述符,確定描述符是否匹配,然后計算匹配距離并排序 # BFMatcher函數參數: # normType:NORM_L1, NORM_L2, NORM_HAMMING, NORM_HAMMING2。 # NORM_L1和NORM_L2是SIFT和SURF描述符的優先選擇,NORM_HAMMING和NORM_HAMMING2是用于ORB算法 bf = cv2.BFMatcher(normType=cv2.NORM_HAMMING, crossCheck=True) # knnMatch 函數參數k是返回符合匹配的個數,暴力匹配match只返回最佳匹配結果。 matches = bf.knnMatch(des1,des2,k=1)# 使用plt將兩個圖像的第一個匹配結果顯示出來 # 若使用knnMatch進行匹配,則需要使用drawMatchesKnn函數將結果顯示 img3 = cv2.drawMatchesKnn(img1=img1,keypoints1=kp1,img2=img2,keypoints2=kp2, matches1to2=matches, outImg=img2, flags=2) plt.imshow(img3),plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

最后是介紹FLANN匹配,相對暴力匹配BFMatcher來講,這匹配算法比較準確、快速和使用方便。FLANN具有一種內部機制,可以根據數據本身選擇最合適的算法來處理數據集。值得注意的是,FLANN匹配器只能使用SURF和SIFT算法。
FLANN實現方式如下:

import numpy as np import cv2 from matplotlib import pyplot as pltqueryImage = cv2.imread('aa.jpg',0) trainingImage = cv2.imread('bb.png',0)# 只使用SIFT 或 SURF 檢測角點 sift = cv2.xfeatures2d.SIFT_create() # sift = cv2.xfeatures2d.SURF_create(float(4000)) kp1, des1 = sift.detectAndCompute(queryImage,None) kp2, des2 = sift.detectAndCompute(trainingImage,None)# 設置FLANN匹配器參數 # algorithm設置可參考https://docs.opencv.org/3.1.0/dc/d8c/namespacecvflann.html indexParams = dict(algorithm=0, trees=5) searchParams = dict(checks=50) # 定義FLANN匹配器 flann = cv2.FlannBasedMatcher(indexParams,searchParams) # 使用 KNN 算法實現匹配 matches = flann.knnMatch(des1,des2,k=2)# 根據matches生成相同長度的matchesMask列表,列表元素為[0,0] matchesMask = [[0,0] for i in range(len(matches))]# 去除錯誤匹配 for i,(m,n) in enumerate(matches):if m.distance < 0.7*n.distance:matchesMask[i] = [1,0]# 將圖像顯示 # matchColor是兩圖的匹配連接線,連接線與matchesMask相關 # singlePointColor是勾畫關鍵點 drawParams = dict(matchColor = (0,255,0),singlePointColor = (255,0,0),matchesMask = matchesMask,flags = 0) resultImage = cv2.drawMatchesKnn(queryImage,kp1,trainingImage,kp2,matches,None,**drawParams) plt.imshow(resultImage,),plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

運行結果如圖所示:


FLANN的單應性匹配,單應性是一個條件,該條件表面當兩幅圖像中的一副出像投影畸變時,他們還能匹配。FLANN的單應性實現代碼如下:

import numpy as np import cv2 from matplotlib import pyplot as pltMIN_MATCH_COUNT = 10img1 = cv2.imread('tattoo_seed.jpg',0) img2 = cv2.imread('hush.jpg',0)# 使用SIFT檢測角點 sift = cv2.xfeatures2d.SIFT_create() # 獲取關鍵點和描述符 kp1, des1 = sift.detectAndCompute(img1,None) kp2, des2 = sift.detectAndCompute(img2,None)# 定義FLANN匹配器 index_params = dict(algorithm = 1, trees = 5) search_params = dict(checks = 50) flann = cv2.FlannBasedMatcher(index_params, search_params) # 使用KNN算法匹配 matches = flann.knnMatch(des1,des2,k=2)# 去除錯誤匹配 good = [] for m,n in matches:if m.distance < 0.7*n.distance:good.append(m)# 單應性 if len(good)>MIN_MATCH_COUNT:# 改變數組的表現形式,不改變數據內容,數據內容是每個關鍵點的坐標位置src_pts = np.float32([ kp1[m.queryIdx].pt for m in good ]).reshape(-1,1,2)dst_pts = np.float32([ kp2[m.trainIdx].pt for m in good ]).reshape(-1,1,2)# findHomography 函數是計算變換矩陣# 參數cv2.RANSAC是使用RANSAC算法尋找一個最佳單應性矩陣H,即返回值M# 返回值:M 為變換矩陣,mask是掩模M, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC,5.0)# ravel方法將數據降維處理,最后并轉換成列表格式matchesMask = mask.ravel().tolist()# 獲取img1的圖像尺寸h,w = img1.shape# pts是圖像img1的四個頂點pts = np.float32([[0,0],[0,h-1],[w-1,h-1],[w-1,0]]).reshape(-1,1,2)# 計算變換后的四個頂點坐標位置dst = cv2.perspectiveTransform(pts,M)# 根據四個頂點坐標位置在img2圖像畫出變換后的邊框img2 = cv2.polylines(img2,[np.int32(dst)],True,(255,0,0),3, cv2.LINE_AA)else:print("Not enough matches are found - %d/%d") % (len(good),MIN_MATCH_COUNT)matchesMask = None# 顯示匹配結果 draw_params = dict(matchColor = (0,255,0), # draw matches in green colorsinglePointColor = None,matchesMask = matchesMask, # draw only inliersflags = 2) img3 = cv2.drawMatches(img1,kp1,img2,kp2,good,None,**draw_params) plt.imshow(img3, 'gray'),plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61

運行結果如下所示:

單應性實際應用
從上述的例子可以看到,單應性是在兩圖片匹配的時候,其中某一圖片發生變換處理,變換后圖像會呈現一種立體空間的視覺效果,圖像發生變換程度稱為變換矩陣。以下例子將圖像中的書本替換成其他書本,例子中所使用圖片如下:



我們根據圖1和圖2計算變換矩陣,然后通過變換矩陣將圖3進行變換,最后將圖3加入到圖1中,實現圖片替換。實現代碼如下:

import numpy as np import cv2 from matplotlib import pyplot as pltimg1 = cv2.imread('logo.jpg',0) img2 = cv2.imread('book.jpg',0)# 使用SIFT檢測角點 sift = cv2.xfeatures2d.SIFT_create() # 獲取關鍵點和描述符 kp1, des1 = sift.detectAndCompute(img1,None) kp2, des2 = sift.detectAndCompute(img2,None)# 定義FLANN匹配器 index_params = dict(algorithm = 1, trees = 5) search_params = dict(checks = 50) flann = cv2.FlannBasedMatcher(index_params, search_params) # 使用KNN算法匹配 matches = flann.knnMatch(des1,des2,k=2)# 去除錯誤匹配 good = [] for m,n in matches:if m.distance < 0.7*n.distance:good.append(m)# 單應性實際應用 # 改變數組的表現形式,不改變數據內容,數據內容是每個關鍵點的坐標位置 src_pts = np.float32([ kp1[m.queryIdx].pt for m in good ]).reshape(-1,1,2) dst_pts = np.float32([ kp2[m.trainIdx].pt for m in good ]).reshape(-1,1,2) # findHomography 函數是計算變換矩陣 # 參數cv2.RANSAC是使用RANSAC算法尋找一個最佳單應性矩陣H,即返回值M # 返回值:M 為變換矩陣,mask是掩模 M, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC,5.0) # 獲取img1的圖像尺寸 h,w = img1.shape # pts是圖像img1的四個頂點 pts = np.float32([[0,0],[0,h-1],[w-1,h-1],[w-1,0]]).reshape(-1,1,2) # 計算變換后的四個頂點坐標位置 dst = cv2.perspectiveTransform(pts,M)# 圖片替換 img3 = cv2.imread('aa.png',0) # 降維處理 b = np.int32(dst).reshape(4, 2) x,y = img2.shape # 根據變換矩陣將圖像img3進行變換處理 res = cv2.warpPerspective(img3, M, (y,x)) img_temp = img2.copy() # 將圖像img2的替換區域進行填充處理 cv2.fillConvexPoly(img_temp, b, 0) # 將變換后的img3圖像替換到圖像img2 cv2.imshow('bb',img_temp) res = img_temp + res cv2.imshow('aa',res) plt.imshow(res),plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58

運行結果如圖所示:

從結果可以看到,替換后的圖像周邊出現黑色線條,這是正常的現象。在上圖最左邊的圖bb可以看到,黑色區域是由圖1和圖2檢測匹配所得的結果,如果匹配結果會存在一定的誤差,這個誤差是由多個因素所導致的。


在實際中,我們根據一張圖片在眾多的圖片中查找匹配率最高的圖片。如果按照上面的例子,也可以實現,但每次匹配時都需要重新檢測圖片的特征數據,這樣會導致程序運行效率。因此,我們可以將圖片的特征數據進行保存,每次匹配時,只需讀取特征數據進行匹配即可。我們以下圖為例:


我們根據圖1在圖2中查找最佳匹配的圖片。首先獲取圖2的全部圖片的特征數據,將代碼保存在features.py:

import cv2 import numpy as np from os import walk from os.path import joindef create_descriptors(folder):files = []for (dirpath, dirnames, filenames) in walk(folder):files.extend(filenames)for f in files:if '.jpg' in f:save_descriptor(folder, f, cv2.xfeatures2d.SIFT_create())def save_descriptor(folder, image_path, feature_detector):# 判斷圖片是否為npy格式if image_path.endswith("npy"):return# 讀取圖片并檢查特征img = cv2.imread(join(folder,image_path), 0)keypoints, descriptors = feature_detector.detectAndCompute(img, None)# 設置文件名并將特征數據保存到npy文件descriptor_file = image_path.replace("jpg", "npy")np.save(join(folder, descriptor_file), descriptors)if __name__=='__main__':path = 'E:\\anchors'create_descriptors(path)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

運行代碼,結果如圖所示:

我們將圖片的特征數據保存在npy文件。下一步是根據圖1與這些特征數據文件進行匹配,從而找出最佳匹配的圖片。代碼存在matching.py:

from os.path import join from os import walk import numpy as np import cv2query = cv2.imread('tattoo_seed.jpg', 0) folder = 'E:\\anchors' descriptors = [] # 獲取特征數據文件名 for (dirpath, dirnames, filenames) in walk(folder):for f in filenames:if f.endswith("npy"):descriptors.append(f)print(descriptors)# 使用SIFT算法檢查圖像的關鍵點和描述符 sift = cv2.xfeatures2d.SIFT_create() query_kp, query_ds = sift.detectAndCompute(query, None)# 創建FLANN匹配器 index_params = dict(algorithm=0, trees=5) search_params = dict(checks=50) flann = cv2.FlannBasedMatcher(index_params, search_params)potential_culprits = {} for d in descriptors:# 將圖像query與特征數據文件的數據進行匹配matches = flann.knnMatch(query_ds, np.load(join(folder, d)), k=2)# 清除錯誤匹配good = []for m, n in matches:if m.distance < 0.7 * n.distance:good.append(m)# 輸出每張圖片與目標圖片的匹配數目print("img is %s ! matching rate is (%d)" % (d, len(good)))potential_culprits[d] = len(good)# 獲取最多匹配數目的圖片 max_matches = None potential_suspect = None for culprit, matches in potential_culprits.items():if max_matches == None or matches > max_matches:max_matches = matchespotential_suspect = culpritprint("potential suspect is %s" % potential_suspect.replace("npy", "").upper())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47

代碼運行后,輸出結果如圖所示:

從輸出的結果可以看到,圖1與圖2的hush.jpg最為匹配,如圖所示:

總結

以上是生活随笔為你收集整理的特征匹配的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产原创在线观看 | 激情视频区 | 狠狠操狠狠干天天操 | 中文字幕在线高清 | 日韩欧美69 | 日韩精品一区二区三区视频播放 | 免费高清在线观看成人 | 欧美日韩性 | 99欧美视频 | 国产黄色精品网站 | 久久精品国产免费 | 女人高潮一级片 | 成人在线视频你懂的 | 99精品视频在线播放观看 | 91亚洲国产成人久久精品网站 | 天天天色综合a | 久久视频网 | 不卡的av电影在线观看 | 久久av不卡| 在线激情影院一区 | 一区二区三区四区五区在线视频 | 久久艹综合 | www久久久久 | 日本黄色免费网站 | 国产精品久久久久久久久免费看 | 91久久一区二区 | 久久人人精品 | 51久久夜色精品国产麻豆 | 日韩精品免费在线观看视频 | 久久久久久欧美二区电影网 | 99夜色 | 国产视频一区在线免费观看 | 国产a高清| 99在线精品视频在线观看 | 精品主播网红福利资源观看 | 国产又粗又猛又爽 | 午夜精品在线看 | 最新免费中文字幕 | 国产免费亚洲 | 国产a精品 | 久草免费在线视频观看 | 少妇bbw撒尿 | 久久午夜色播影院免费高清 | 国产裸体视频bbbbb | 国产电影一区二区三区四区 | 色多视频在线观看 | 18+视频网站链接 | 欧美尹人 | 成人午夜片av在线看 | 久久久久久蜜桃一区二区 | 黄色软件大全网站 | 色综合天天天天做夜夜夜夜做 | 美女性爽视频国产免费app | 狠狠干激情 | 国产精品夜夜夜一区二区三区尤 | 99热手机在线观看 | 免费av观看网站 | 91九色视频导航 | 日b视频在线观看网址 | 91成人免费看片 | 国产91精品高清一区二区三区 | 99九九视频 | 欧美一区免费观看 | 99久久夜色精品国产亚洲96 | 久久精品久久精品久久 | 国产视频在线观看免费 | 91免费观看| 国产精品成人av久久 | 天天色成人| 探花视频免费观看高清视频 | 91污视频在线 | 888av| 国产91精品看黄网站 | 992tv在线观看网站 | 国产资源在线免费观看 | 久久精品伊人 | 婷婷播播网 | 成人9ⅰ免费影视网站 | 天天碰天天操 | 亚洲精品国产精品国产 | 国产在线观看地址 | 日韩中文在线观看 | 少妇搡bbb| 日韩在线视频免费看 | 91在线文字幕 | 免费黄色av | 中文在线中文资源 | 国产一区欧美在线 | 国产一区二区在线看 | 亚洲h在线播放在线观看h | 综合天天久久 | 天天综合网~永久入口 | 国产又粗又长又硬免费视频 | 精品天堂av| 久草在线中文888 | 福利片视频区 | 国产欧美精品一区二区三区 | 国产精品无 | 色网站国产精品 | 97国产在线视频 | 免费观看的av网站 | 国产69久久 | 亚洲精品乱码久久久久久高潮 | 在线播放91| 国产女人40精品一区毛片视频 | 91精品视频一区二区三区 | 五月婷在线 | 91久久爱热色涩涩 | 色激情在线 | 偷拍精偷拍精品欧洲亚洲网站 | 国产精品二区三区 | 欧美 日韩精品 | av电影免费在线 | 欧美日韩一区二区久久 | 97国产情侣爱久久免费观看 | 亚洲精品88欧美一区二区 | 五月婷婷久 | 天天操天天干天天 | 亚洲综合在线视频 | 91av视频观看 | www.国产高清 | 国产99视频在线观看 | 国产做aⅴ在线视频播放 | 久久久久久久99精品免费观看 | 成人小视频在线 | 国产不卡免费视频 | 毛片区| 国产精品2019 | 日韩黄色在线电影 | 在线观看完整版免费 | 亚洲片在线观看 | 丝袜美女视频网站 | 亚洲天堂毛片 | 一区二区三区四区五区在线 | 亚洲国产精品一区二区尤物区 | 亚洲一区二区三区在线看 | 久久9999久久 | 不卡国产在线 | 久久综合色婷婷 | 久久久国产影院 | 日韩高清毛片 | 免费网站看av片 | 97综合在线 | 奇米影视在线99精品 | 亚洲精品观看 | 97免费| 国产精在线 | 在线日本看片免费人成视久网 | 香蕉视频免费看 | 日韩av成人 | 日本大尺码专区mv | 久久五月婷婷丁香 | 亚洲在线色 | 欧美日韩精品电影 | 久草综合在线观看 | 亚洲成av人片在线观看www | 久久久久免费精品国产小说色大师 | 免费看色网站 | 美女黄视频免费 | 91九色在线观看 | 黄色tv视频 | 草免费视频 | 成人9ⅰ免费影视网站 | 成人黄大片视频在线观看 | 免费看黄网站在线 | .精品久久久麻豆国产精品 亚洲va欧美 | 美女黄视频免费看 | 国产黄色片久久 | 中文一区在线 | 国产69久久精品成人看 | 国内精品中文字幕 | 日韩精品一区二区三区视频播放 | 亚洲欧美偷拍另类 | 久久久久久久久久久久亚洲 | 日批视频 | 欧美三人交 | 久久亚洲精品国产亚洲老地址 | 99一区二区三区 | 欧美成人h版在线观看 | 97国产一区二区 | 在线午夜| 久久人人97超碰精品888 | 欧美日韩有码 | 丁香av| 欧美三级高清 | 一区二区精品在线 | 青青久视频 | 国产精品久久久久久久久岛 | 亚洲第一区精品 | 免费看一级一片 | 中文在线8新资源库 | 激情丁香综合五月 | 日韩欧美69 | 男女激情网址 | 婷婷综合视频 | 国产精品手机在线播放 | 欧美在线视频一区二区三区 | 亚州精品成人 | 色片网站在线观看 | 亚洲视频 一区 | 亚洲精品国产精品国自 | 日本精品一区二区三区在线播放视频 | 久9在线| 波多野结衣一区三区 | 97超碰人人澡人人 | 激情视频一区二区三区 | 欧美大码xxxx | 亚洲精品美女久久久久网站 | 麻豆系列在线观看 | 国内综合精品午夜久久资源 | 婷婷久久丁香 | 国产99自拍| 欧美精品久久天天躁 | 亚洲一一在线 | 国产69精品久久99不卡的观看体验 | 成年人在线免费看视频 | 天天干天天爽 | 天天综合天天做 | 欧美一级特黄aaaaaa大片在线观看 | 久久99精品久久久久婷婷 | 色.www| 天天操天天干天天插 | 午夜视频在线观看网站 | 成年人免费看的视频 | 91精选在线观看 | 国产亚洲一区二区三区 | 国产亚洲综合在线 | 成人一区二区在线 | 99久高清在线观看视频99精品热在线观看视频 | 久久免费高清视频 | 久草在线免费在线观看 | 99久久精品无码一区二区毛片 | 在线看欧美 | 一区免费观看 | 天天干天天干天天干天天干天天干天天干 | 日韩中文字幕视频在线 | 久久观看| 国产高清无av久久 | 国产在线视频一区二区 | 国产一区精品在线 | www.在线观看视频 | 色5月婷婷| 福利视频 | 国产在线免费av | 亚洲激情视频在线 | 国产xx在线 | 国产成人性色生活片 | 日本二区三区在线 | 人人插人人舔 | 成人在线观看资源 | 欧美一区二区在线刺激视频 | 免费在线色电影 | 成年人免费在线观看网站 | 日韩高清成人在线 | 美女黄频在线观看 | 久久久久国产一区二区三区四区 | 欧美黄在线 | 精品主播网红福利资源观看 | 亚洲综合一区二区精品导航 | 91精品色| 91精品视频免费看 | 日韩av电影一区 | 日本激情中文字幕 | 国产精品久久久一区二区三区网站 | 欧美色图p | 日韩精品一区二区不卡 | 中文字幕在线专区 | 国产很黄很色的视频 | 六月婷色 | 国产一区二区三区高清播放 | 免费日韩 精品中文字幕视频在线 | 久久综合色一综合色88 | 欧美另类网站 | 美女网站视频色 | 友田真希av| 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 91亚洲免费 | 97理论电影 | 国产91对白在线播 | 久久夜色精品国产欧美乱 | 毛片的网址| 三级黄色片在线观看 | 日本久草电影 | 探花视频网站 | 99热这里只有精品在线观看 | 丁香电影小说免费视频观看 | 色999五月色| 2023国产精品自产拍在线观看 | 国精产品一二三线999 | 国产特级毛片aaaaaa | 夜色资源站国产www在线视频 | 久久精品一二三区白丝高潮 | 国产精品青草综合久久久久99 | 亚洲精品视频在线免费 | 亚洲精品国产精品国 | 久久手机免费视频 | 国产精品高清在线 | 久久99热国产| 国产黄色片一级三级 | 天天爽夜夜爽精品视频婷婷 | 亚洲最大成人网4388xx | 狠狠夜夜| 在线观看黄色免费视频 | www.玖玖玖| 中文字幕一区二区三区视频 | 亚洲 欧美 另类人妖 | 99这里有精品 | 在线观看免费 | 深夜激情影院 | 免费视频一二三区 | 最近2019年日本中文免费字幕 | 激情久久小说 | 久久精品日本啪啪涩涩 | 欧美一二三在线 | av在线免费观看网站 | 国产精品久久久久999 | 亚洲精品国偷拍自产在线观看蜜桃 | 天天操天天操天天爽 | 免费观看黄色12片一级视频 | 欧美精品久久久久久久 | av免费网站在线观看 | 狠狠操91| 亚洲特级毛片 | 国产剧情一区在线 | 美女视频一区二区 | 国产精品24小时在线观看 | 亚洲精品99久久久久久 | 久久久久日本精品一区二区三区 | 人人精久 | 黄污污网站 | 国产精品自产拍 | 九九久久国产精品 | 九九久久影院 | 欧美日韩另类视频 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 亚洲免费av网站 | 日韩网站免费观看 | 国产福利av在线 | www.狠狠色.com| 精品在线观看国产 | 色天天综合久久久久综合片 | 亚洲精品免费观看 | 亚欧洲精品视频在线观看 | 欧美一级片 | 9i看片成人免费看片 | 天堂网av在线 | 91cn国产在线 | 五月综合网 | 9999在线 | 五月激情婷婷丁香 | 高清不卡一区二区在线 | 色婷婷av国产精品 | 亚洲国产中文字幕 | 久久久片 | 美女免费网视频 | 国产精品视频不卡 | 中文在线免费看视频 | www.在线观看视频 | 激情视频一区二区 | 丁香五月缴情综合网 | 日韩在线视频线视频免费网站 | 免费av网址在线观看 | 欧美日韩在线视频一区 | 98涩涩国产露脸精品国产网 | 欧美精品免费一区二区 | 在线av资源 | 国产成人61精品免费看片 | av在线观| 日本狠狠色 | 亚洲黄色小说网址 | 99精品一级欧美片免费播放 | 97在线视频观看 | 日韩电影中文字幕 | 久久国产视频网站 | 国产又粗又猛又黄又爽视频 | 成人在线观看日韩 | 国产视频一二三 | 国产精品 久久 | 亚洲视频www| 欧美日韩国产精品一区二区 | 亚洲精品999 | 久久 地址 | 亚洲黄色免费在线看 | 久久综合精品国产一区二区三区 | 亚洲闷骚少妇在线观看网站 | 国内久久精品 | 久久久久免费网 | 五月天丁香亚洲 | 国产精品毛片久久蜜 | 美女久久久久久久久久 | 国产精品久久久久久久毛片 | 91看片看淫黄大片 | 00av视频| 日韩精品视频在线观看网址 | 久久久精品二区 | 久草观看 | 久久久精品国产一区二区 | 色国产视频| 国产精品原创 | 99久久99视频 | 日本公妇在线观看高清 | 国产综合在线观看视频 | 国产成人a亚洲精品v | 丁香在线观看完整电影视频 | 天天射,天天干 | 国产精品视频免费在线观看 | 精品在线二区 | japanesexxx乱女另类| 中文字幕亚洲国产 | 麻豆91在线观看 | 日韩在观看线 | 激情电影在线观看 | 2023国产精品自产拍在线观看 | 91喷水| 国产精品麻豆视频 | 激情欧美xxxx | 久久久久亚洲国产精品 | 欧美一级性生活视频 | 久久99精品国产麻豆宅宅 | 九九免费在线观看视频 | 免费视频 你懂的 | 久久精品免费电影 | 亚洲在线精品 | 国产精品久久久久久久久久东京 | 久久久午夜精品福利内容 | 成人网444ppp | 欧美aaa级片 | 亚洲精品ww | 国产精品久久久久免费a∨ 欧美一级性生活片 | 青青射| 97人人超碰在线 | 99国产成+人+综合+亚洲 欧美 | 久久福利精品 | 久久综合久久综合这里只有精品 | 亚洲精品乱码久久久久久高潮 | 亚洲精品在线视频观看 | 91香蕉国产在线观看软件 | 91经典在线 | 欧美天天综合网 | 97超碰精品 | 成人高清在线 | 日韩和的一区二在线 | 中国一级片在线播放 | 精品一区二区影视 | 久久久九色精品国产一区二区三区 | 国产精品18久久久久久首页狼 | 日日草夜夜操 | 免费精品久久久 | 国产精品久久久久久久7电影 | 在线网站黄 | 一区二区三区在线视频111 | 欧美最爽乱淫视频播放 | 成人看片| 精品在线一区二区 | 麻豆影视在线免费观看 | 香蕉视频免费在线播放 | 欧美怡红院 | 97视频在线播放 | 日韩视频一二三区 | 国产91探花 | 国产午夜精品一区二区三区欧美 | 国产色网| 亚洲视频在线播放 | 亚洲国产操 | 久久精品视频网址 | 在线看国产日韩 | 精品久久一区二区三区 | 福利视频一区二区 | 人成免费网站 | 热re99久久精品国产99热 | 黄色国产区 | 四虎成人在线 | 黄网av在线 | 欧美性爽爽 | 免费观看成人网 | 韩国精品在线观看 | 91手机视频在线 | 狠狠狠狠狠干 | 狠狠操电影网 | 91精品在线免费观看 | 五月婷婷开心中文字幕 | 婷婷精品国产欧美精品亚洲人人爽 | 成人av免费在线播放 | 超碰97.com| 午夜成人免费电影 | 免费手机黄色网址 | 在线亚洲观看 | 91探花系列在线播放 | 91人人干 | 国产中的精品av小宝探花 | www.888av| 欧美福利久久 | 在线亚洲高清视频 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 亚洲一区二区精品视频 | 日韩高清黄色 | 国内外成人免费在线视频 | 欧美日韩午夜 | 免费看黄色毛片 | 欧美一区二区三区在线视频观看 | 免费91麻豆精品国产自产在线观看 | 亚洲天堂精品 | 五月天激情开心 | 国产片网站 | 久久婷婷色综合 | 天天亚洲综合 | 91九色蝌蚪视频在线 | 亚洲 中文 欧美 日韩vr 在线 | 美女视频又黄又免费 | 国产精品免费一区二区三区在线观看 | 日韩一级理论片 | 五月婷婷开心 | 亚洲成人网av| 丁香婷婷成人 | 国产午夜三级一区二区三 | 在线观看国产高清视频 | www国产亚洲精品久久麻豆 | 天天操偷偷干 | 日本黄色免费观看 | 国产高清黄色 | 五月天综合在线 | 国产美腿白丝袜足在线av | 69国产成人综合久久精品欧美 | 国产在线高清 | 国产日产精品一区二区三区四区 | 黄色app网站在线观看 | 少妇18xxxx性xxxx片 | www久久国产 | 91精品老司机久久一区啪 | 玖玖玖影院 | 亚洲视频1区2区 | 97精品超碰一区二区三区 | 久久精品国产v日韩v亚洲 | 欧美日韩一区二区三区在线免费观看 | 91精品一区二区三区蜜桃 | 亚洲精品乱码久久久久v最新版 | www.久久色.com| 九九九视频精品 | av福利免费 | 久久精品在线免费观看 | 色丁香久久 | 国产精品久久久久久久7电影 | 国内精品美女在线观看 | 成人av高清在线观看 | 在线va网站 | 在线观看视频黄 | 夜夜操天天 | 天天爽夜夜爽人人爽一区二区 | 日韩色视频在线观看 | 国产综合视频在线观看 | 日本视频久久久 | 天天操网 | 中文字幕人成不卡一区 | 99精品福利视频 | 日本一区二区三区免费看 | 亚洲视频免费在线观看 | 首页av在线 | 国产精品尤物 | a久久免费视频 | 在线播放视频一区 | 免费福利在线视频 | 欧美-第1页-屁屁影院 | 日韩在线免费 | 美女网站视频免费黄 | 国产麻豆视频 | 国产专区精品视频 | 成人免费 在线播放 | 不卡的av电影 | 天天av资源 | 国产成人精品午夜在线播放 | 黄色在线观看污 | 91网站在线视频 | 精品久久久久久久久亚洲 | 国产精品乱码一区二三区 | 国内精品久久久精品电影院 | 一区中文字幕在线观看 | 久久伊人国产精品 | 国产成人99av超碰超爽 | 国产亚洲综合精品 | 在线观看中文字幕视频 | 国产精品久久久久久一区二区三区 | 在线观看中文字幕第一页 | 黄色中文字幕 | 成年人在线观看网站 | 成片人卡1卡2卡3手机免费看 | 久久精品男人的天堂 | www.天天成人国产电影 | 在线观看免费视频 | 精品久久久亚洲 | 婷婷色在线资源 | 成人av视屏 | 一区二区三区四区久久 | 免费日韩 精品中文字幕视频在线 | 国产亚洲精品久久久久久无几年桃 | 精品国产乱码久久久久久三级人 | 免费av网站在线 | 国产98色在线 | 日韩 | 久久免费在线观看 | 视频一区二区国产 | 亚洲精品色 | 五月丁婷婷| 日韩一区正在播放 | 激情综合五月网 | 一二三四精品 | 视频在线精品 | 99免费在线视频观看 | 91高清视频在线 | 日韩中文字幕第一页 | 国产精品美女久久久久久久久久久 | 蜜臀av夜夜澡人人爽人人桃色 | 97精品伊人 | 国产高清视频在线 | 日韩欧美xxxx | 又黄又爽免费视频 | 亚洲黄色免费在线 | 久久免费观看视频 | 久久综合久久鬼 | 日本久久久久久久久久 | 麻豆视频www| 日韩激情在线视频 | 欧美99精品 | 日韩中文字幕免费视频 | 日韩av美女 | a黄色影院 | 在线视频日韩 | 亚洲日韩中文字幕 | 久久精品视频免费 | 欧美日韩国产亚洲乱码字幕 | 欧美在线观看视频一区二区三区 | 东方av在线免费观看 | 99久久国产免费,99久久国产免费大片 | 亚洲视频999 | 亚洲午夜精品久久久久久久久久久久 | 91成人网页版 | 日韩区在线观看 | 欧美大jb | 美女网站在线看 | 国产精品一区二 | 91在线看视频免费 | 国产精品一区久久久久 | 日本韩国中文字幕 | 国产亚洲视频系列 | 欧美国产亚洲精品久久久8v | 国产日本高清 | 亚洲理论在线观看电影 | 97网在线观看 | 亚洲精品综合一二三区在线观看 | av播放在线 | 在线观看一区 | 国内精品久久久久影院一蜜桃 | 国产麻豆精品95视频 | 麻豆视频在线看 | 日韩有码专区 | 久久99在线| 日韩欧美精品一区 | 色视频在线观看免费 | 久久av影院 | 婷婷精品在线视频 | 日韩av不卡播放 | 五月婷婷综合在线视频 | 最近中文字幕久久 | av电影在线免费 | 欧美有色 | 日韩av电影免费观看 | 狠狠撸电影 | 婷婷丁香激情综合 | 亚洲女同videos | 国产91亚洲精品 | 亚洲精品综合在线 | 欧美精品乱码久久久久 | 成年人黄色免费网站 | 丝袜美腿在线播放 | 国色天香在线 | 欧美成人精品三级在线观看播放 | 9色在线视频 | 99久久婷婷国产综合精品 | 国产美女免费看 | 久久久国产成人 | 国产精品一区二区美女视频免费看 | 99精品国产在热久久下载 | 亚洲妇女av | 欧美三级高清 | 国产色婷婷精品综合在线手机播放 | 不卡电影免费在线播放一区 | 亚洲永久av| 中文字幕一区二区在线播放 | 五月天综合婷婷 | 国产在线a视频 | 亚洲视频99| 97视频在线观看播放 | 国产精品免费久久久久久 | 日韩亚洲国产精品 | 91免费高清| 国产一区二区在线免费视频 | 成人黄大片 | 最新av在线免费观看 | 成人国产精品久久久春色 | se视频网址 | 国产精品久久久99 | 91大神精品视频在线观看 | 亚洲国产精品女人久久久 | 亚洲专区中文字幕 | 欧美在线视频一区二区三区 | 成人av电影在线观看 | 久久久久久国产精品999 | 狠狠插狠狠干 | 日p在线观看 | 有码视频在线观看 | 久草在线免费看视频 | 久久视频| 中文字幕 欧美性 | 久久老司机精品视频 | 免费色视频网址 | 亚洲国产999 | 日韩免费高清在线 | 欧美一区二区在线免费看 | 国产精品6 | 国产在线观看你懂得 | 操处女逼 | 六月丁香在线视频 | 亚洲成人影音 | 久久国产精品视频免费看 | 91av在线免费观看 | japanese黑人亚洲人4k | 日韩精品在线播放 | 91免费版在线观看 | 欧美性色xo影院 | 日韩久久久久久久久久久久 | 99r在线 | a级国产乱理伦片在线观看 亚洲3级 | 色吊丝在线永久观看最新版本 | 成人av一区二区三区 | 一区二区三区动漫 | 久久精品福利 | 色夜视频 | 97精品国产97久久久久久粉红 | 国产亚洲一区 | 91麻豆网站| 免费观看黄 | 久久国产免费视频 | 成人久久久精品国产乱码一区二区 | 婷婷日日 | 日韩欧美在线第一页 | 精品欧美一区二区在线观看 | 亚洲作爱视频 | 97超碰香蕉| 欧美了一区在线观看 | 99久久99久久精品国产片果冰 | 国产91免费在线观看 | 91精品入口 | 精品96久久久久久中文字幕无 | 午夜美女av | 国产精品福利久久久 | 国产裸体无遮挡 | 国产精品va最新国产精品视频 | 天天射天天爱天天干 | 在线视频免费观看 | 亚洲在线日韩 | 久草在线这里只有精品 | 国产精品精品国产婷婷这里av | 国产福利91精品一区 | av官网 | 91视频链接| 99视频在线精品免费观看2 | 国产一区在线免费观看视频 | 911香蕉| av播放在线| 色婷婷成人网 | 国产高清久久久 | 日韩免费电影网站 | 国产99久久久久 | 在线播放 日韩专区 | 国产999精品久久久久久麻豆 | 成人在线观看网址 | av黄色大片| 国产在线第三页 | 日日干天天 | 激情丁香久久 | 婷婷视频在线观看 | 国产亚洲精品日韩在线tv黄 | 高清久久久 | 亚洲aⅴ乱码精品成人区 | 美女久久网站 | 久久久久久久久久久影院 | 亚洲成人av片 | 亚洲色图美腿丝袜 | 国产黄色特级片 | 国产99免费视频 | 在线看的毛片 | 91成人在线看 | 一区二区三区免费网站 | av7777777| 国产一区二三区好的 | 久久美女免费视频 | 日本精品一区二区三区在线观看 | 中文字幕 国产 一区 | 国产伦精品一区二区三区照片91 | 精品久久免费看 | 四虎影视精品 | 欧美日韩免费在线观看视频 | av噜噜噜在线播放 | 精品国产乱子伦一区二区 | 久久国内精品99久久6app | 奇米网网址 | 中文av一区二区 | 婷婷婷国产在线视频 | 精品久久久久久亚洲综合网站 | 亚洲在线视频播放 | 精品一区精品二区高清 | 97免费在线观看视频 | 在线观看日韩一区 | 日日爱影视 | 中文字幕一区二区三区在线播放 | 久久超碰在线 | av免费看在线 | 久久尤物电影视频在线观看 | 久久久福利 | 成人av在线影院 | 99视频在线精品国自产拍免费观看 | 91丨九色丨蝌蚪丨老版 | 中文字幕一区av | 97精品国产97久久久久久免费 | 91免费版在线观看 | 欧美巨大荫蒂茸毛毛人妖 | 丁香婷婷色 | 久久精精品视频 | av一级网站 | 2024av | 国产在线视频资源 | 91视频成人免费 | 欧美激情综合网 | 久久中文网 | 最新中文在线视频 | 日韩性xxxx | 国产精品伦一区二区三区视频 | 亚洲高清视频在线播放 | 日韩在线免费电影 | 日本高清中文字幕有码在线 | 天堂在线成人 | 亚洲精品h| 国产精品第十页 | 亚洲一级免费电影 | 国产午夜精品一区二区三区嫩草 | 色99久久| 日韩免费观看一区二区三区 | 精品一区二区免费 | 日韩专区av | 在线观看爱爱视频 | 国产精品淫片 | 99精品视频一区 | 久草免费资源 | 四虎永久视频 | 色噜噜狠狠狠狠色综合 | 91色在线观看视频 | 在线观看视频色 | 夜夜操天天干, | 麻豆影视在线观看 | 又黄又刺激的网站 | 成人国产亚洲 | 天天干天天综合 | 亚洲日本黄色 | 97国产超碰| 日韩中文字幕在线 | 成人午夜电影免费在线观看 | 九九久久久 | 欧美精品久久久久久久久久白贞 | 一区二区电影网 | 国产vs久久| 久久国产精品久久久久 | 国产涩图| 91.dizhi永久地址最新 | 一区二区三区四区精品视频 | 亚洲三级视频 | 五月婷色 | 91亚洲夫妻 | 中文字幕在线观看免费高清完整版 | 日韩中文字幕一区 | 色综合天天狠天天透天天伊人 | 四虎精品成人免费网站 | 麻豆视频大全 | 93久久精品日日躁夜夜躁欧美 | 亚洲资源一区 | 精品欧美乱码久久久久久 | 国产成人一区在线 | 色婷婷久久久综合中文字幕 | 黄色特一级片 | 色综合久久88色综合天天免费 | 日韩理论 | 日韩高清无线码2023 | 亚洲精品网站在线 | 国产高清第一页 | 精品国产一区二区三区四区在线观看 | 日产乱码一二三区别免费 | 涩涩色亚洲一区 | 亚洲一区在线看 | 亚洲三级在线播放 | 成年人毛片在线观看 | 免费99精品国产自在在线 | 亚洲精品综合在线 | 丁香六月在线观看 | 日韩在线观看影院 | 久久国产免费看 | 国产va饥渴难耐女保洁员在线观看 | 免费黄av| 国产精品毛片一区二区 | 国产精品美女久久 | 国产精品剧情在线亚洲 | 人人爽人人爽av | 日韩99热| 精品在线一区二区 | 免费观看性生交大片3 | 免费视频 三区 | 最近中文字幕高清字幕在线视频 | www.com在线观看 | 国产精品久久久久久久婷婷 | 久久久精品网 | 麻豆影视在线免费观看 | 欧美一级片免费观看 | 亚洲精品久久久久久久不卡四虎 | 麻豆91小视频| 国产无套精品久久久久久 | 欧美国产亚洲精品久久久8v | 特级毛片在线观看 | 摸阴视频| 麻豆成人小视频 | 成人a视频在线观看 | 午夜视频在线网站 | av综合网址 | 国产91区 | jizz18欧美18| 久操久| 午夜精品福利影院 | 欧美热久久 | 久久久久在线观看 | 中文字幕在线不卡国产视频 | 中文字幕在线网 | 久草在线视频在线 | 91精品老司机久久一区啪 | 最近免费中文字幕mv在线视频3 | 国产在线观看你懂的 | 99这里只有精品视频 | 91九色在线观看视频 | 久久综合在线 | 国产成人久 | 日韩精品影视 | 成人一级视频在线观看 | 99热99热 | 在线观看mv的中文字幕网站 | 992tv人人草 黄色国产区 | 夜夜躁日日躁狠狠久久av | 亚洲综合在线观看视频 | 天天操天天色综合 | 免费成人短视频 | 最近中文字幕mv | 国产精品久久影院 | 亚洲天堂精品 | 久久网址| www一起操 | 中文字幕在线观看一区 | 天天干.com| 亚洲精品免费视频 | 九九免费在线观看 | 久久r精品 | 国产黄大片在线观看 | 热久久视久久精品18亚洲精品 | 国产人成在线观看 | 中文字幕在线播放日韩 | 久久嗨| 蜜臀精品久久久久久蜜臀 | 午夜精品一区二区三区可下载 | 中文字幕在线看 | 免费在线观看中文字幕 | 国产精品丝袜久久久久久久不卡 | 在线视频欧美日韩 | 成人一区二区三区在线 | 久久免费在线观看 | 久久夜色精品国产欧美乱 | 中文字幕色播 | 国产免费观看av | 欧美日韩精品免费观看视频 | 亚洲精品日韩一区二区电影 | 久久激情视频网 | 国产精品午夜久久 | 久草在线资源网 | 国产精品99久久久久久久久 | 人人射网站 | 久久午夜国产精品 | 在线观看黄色的网站 | 18网站在线观看 | 亚洲一区二区精品 | 亚洲最大免费成人网 | 日韩中文字幕第一页 | 不卡日韩av | 国产成人一区二区在线观看 | 蜜桃视频在线视频 | 啪啪av在线 | 欧美日韩精 | 久久精品人人做人人综合老师 |