日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Python+OpenCV全景拼接實戰(zhàn):從特征匹配到黑邊智能裁剪

Python+OpenCV全景拼接實戰(zhàn):從特征匹配到黑邊智能裁剪 簡介本資源是一份面向計算機視覺初學者與圖像處理愛好者的實戰(zhàn)教程聚焦PythonOpenCV實現(xiàn)多圖自動拼接與黑邊智能去除適用于攝影全景合成、無人機航拍重建、虛擬漫游等實際場景。壓縮包共9個文件7張JPG原始輸入圖像、1個核心Python腳本image_stitching.py、1張PNG結(jié)果圖總大小2.18MB代碼含完整中文注釋覆蓋圖像預處理、SIFT/ORB特征檢測、BFMatcher特征匹配、cv2.findHomography透視變換建模、cv2.warpPerspective圖像配準及自定義黑邊裁剪邏輯結(jié)構(gòu)清晰、模塊可拆解。已有7532人學習下載讀者可直接運行復現(xiàn)全流程快速掌握全景拼接核心鏈路并基于源碼理解Homography原理、融合邊界處理技巧及OpenCV關(guān)鍵API的工程化用法。1. 項目概述從零到一的全景拼接實戰(zhàn)最近在整理過去幾年旅行拍攝的照片發(fā)現(xiàn)很多場景用單張照片根本無法展現(xiàn)其壯闊比如連綿的山脈、城市的天際線或者室內(nèi)的全景。手動在PS里一張張對齊不僅效率低下而且對精度要求極高效果往往不盡如人意。作為一個常年和代碼打交道的開發(fā)者我自然想到了用程序化的方式來解決這個問題——使用Python和OpenCV實現(xiàn)自動化的全景圖像拼接。這個項目的核心目標很明確輸入一組有重疊區(qū)域的照片程序能自動識別特征、匹配圖像、計算變換矩陣最終將它們無縫地拼接成一張寬幅的全景圖。聽起來很酷對吧但實際操作過的人都知道拼接完成后圖像邊緣那些不規(guī)則的黑邊或透明區(qū)域才是真正讓人頭疼的“最后一公里”問題。這些黑邊是由于圖像經(jīng)過透視變換后在畫布邊界外沒有像素數(shù)據(jù)造成的直接裁剪會損失畫面保留又影響觀感。因此一個完整的全景拼接流程必須包含智能的“黑邊處理”環(huán)節(jié)。本文將帶你深入這個項目的每一個技術(shù)細節(jié)。無論你是剛接觸計算機視覺的Python新手還是想尋找一個完整項目練手的中級開發(fā)者都能從中獲得可直接復現(xiàn)的代碼和避坑經(jīng)驗。我們將從環(huán)境搭建、原理剖析一直講到完整的代碼實現(xiàn)和黑邊處理的多種策略。我會分享我在這個過程中踩過的所有坑以及最終讓拼接效果變得“可用”甚至“好看”的那些關(guān)鍵技巧。2. 核心原理與方案選型在動手寫代碼之前我們必須搞清楚全景拼接到底是怎么一回事。它不是一個單一的步驟而是一個標準的圖像處理流水線Pipeline。整個流程可以分解為幾個核心步驟每一步的選擇都直接影響到最終結(jié)果的成敗。2.1 全景拼接的技術(shù)流水線拆解一個健壯的全景拼接流程通常包含以下步驟特征檢測與描述這是整個流程的基石。我們需要在每一張輸入圖像中找到一些獨特的、可重復檢測的點稱為“關(guān)鍵點”或“特征點”如角點、斑點。然后為每個關(guān)鍵點計算一個“描述符”它是一個向量抽象地表示了該點周圍一小塊圖像區(qū)域的紋理、梯度等信息。OpenCV提供了多種算法如SIFT、SURF、ORB等。特征匹配在所有圖像對之間通過比較描述符的相似度如計算歐氏距離為一張圖像中的關(guān)鍵點在另一張圖像中尋找最匹配的對應點。這樣我們就得到了許多匹配點對。圖像配準與單應性矩陣計算匹配點對可能存在錯誤誤匹配。我們需要用一個數(shù)學模型來描述兩張圖像之間的幾何變換關(guān)系。對于在同一平面上拍攝的照片如平移或旋轉(zhuǎn)相機這個關(guān)系通??梢杂靡粋€3x3的單應性矩陣Homography Matrix來精確表示。我們使用RANSAC隨機抽樣一致等魯棒算法從可能包含誤匹配的點對中估算出最優(yōu)的單應性矩陣并同時剔除掉不符合該模型的錯誤匹配點。圖像扭曲與融合利用計算出的單應性矩陣將第二張及后續(xù)圖像“扭曲”到第一張圖像的坐標系下使它們對齊。對齊后重疊區(qū)域需要進行像素融合以消除接縫和曝光差異。簡單的融合方式是直接覆蓋但更好的方法是使用多頻段融合Multi-Band Blending或羽化Feathering。畫布計算與黑邊處理這是本文要重點解決的難題。在對多張圖像進行連續(xù)變換后最終全景圖的畫布尺寸會變得非常大且圖像內(nèi)容在畫布上的位置是偏移的。畫布四周會出現(xiàn)大量沒有圖像數(shù)據(jù)的黑色區(qū)域值為0。如何智能地裁剪或填充這些區(qū)域就是“黑邊處理”的核心。2.2 關(guān)鍵工具選型為什么是OpenCV和PythonOpenCV它是計算機視覺領域事實上的標準庫用C編寫性能卓越并提供了完整的Python接口。其cv2模塊中包含了我們所需的所有高級功能從SIFT_create()到findHomography()再到warpPerspective()幾乎為我們封裝好了整個拼接流程的底層復雜計算。這意味著我們可以更專注于算法邏輯和效果優(yōu)化而不是從頭實現(xiàn)特征檢測算法。Python作為膠水語言Python的簡潔語法和豐富的科學計算生態(tài)如NumPy使其成為快速原型開發(fā)和算法驗證的絕佳選擇。我們可以用幾行代碼完成復雜的矩陣運算和圖像操作極大地提升了開發(fā)效率。注意OpenCV的某些專利算法如SIFT、SURF在較新版本的OpenCV中可能被移至opencv-contrib-python這個擴展包中。如果你在導入時遇到AttributeError: module ‘cv2‘ has no attribute ‘xfeatures2d‘之類的錯誤通常是因為沒有安裝這個擴展包。對于商業(yè)項目可以考慮使用無專利限制的ORB或AKAZE算法。2.3 黑邊問題的根源與解決思路黑邊產(chǎn)生的根本原因在于透視變換的非線性。當我們用單應性矩陣對圖像進行warpPerspective變換時圖像被投影到一個新的平面上。這個變換可能會將原圖像中的像素映射到目標畫布坐標的負值區(qū)域或超出畫布尺寸的區(qū)域。OpenCV在處理時對于這些“映射出去”的區(qū)域默認用黑色0填充。解決思路主要有兩種裁剪法找到所有有效像素非純黑的邊界將這個邊界矩形裁剪出來作為最終全景圖。優(yōu)點是簡單直接保留了所有有效像素。缺點是可能會得到一個非矩形的有效區(qū)域直接裁剪為矩形會損失一些角落的有效像素。填充法不裁剪而是嘗試用合理的內(nèi)容填充黑邊。例如可以用圖像邊緣的顏色進行擴展填充或者更高級的使用圖像修復Inpainting技術(shù)根據(jù)周圍紋理生成內(nèi)容。填充法的目標是得到一個規(guī)整的矩形圖像且填充區(qū)域看起來自然。在本項目中我們將重點實現(xiàn)一種基于輪廓查找的智能裁剪法它能在保留最大有效畫面的同時得到一個整齊的矩形輸出。同時我也會探討填充法的思路和局限性。3. 環(huán)境搭建與核心依賴詳解工欲善其事必先利其器。一個穩(wěn)定、版本匹配的環(huán)境是項目成功的第一步。這里我推薦使用conda或venv創(chuàng)建獨立的Python虛擬環(huán)境避免與系統(tǒng)或其他項目的包發(fā)生沖突。3.1 創(chuàng)建并激活虛擬環(huán)境# 使用conda推薦 conda create -n panorama python3.8 conda activate panorama # 或者使用venv python -m venv panorama_env # Windows panorama_env\Scripts\activate # Linux/Mac source panorama_env/bin/activate3.2 安裝核心庫在激活的虛擬環(huán)境中使用pip安裝以下包pip install opencv-contrib-python4.8.1.78 pip install numpy1.24.3 pip install matplotlib3.7.2opencv-contrib-python這是包含主模塊和貢獻模塊如SIFT的完整OpenCV包。指定版本可以確保代碼的穩(wěn)定性避免因版本升級導致的API變化。numpyOpenCV的底層數(shù)組操作依賴于NumPy它是必須的。matplotlib用于在開發(fā)過程中可視化顯示圖像、關(guān)鍵點匹配結(jié)果等便于調(diào)試。3.3 驗證安裝與常見問題安裝完成后可以運行一個簡單的腳本驗證import cv2 import numpy as np print(f“OpenCV Version: {cv2.__version__}”) print(f“NumPy Version: {np.__version__}”) # 測試SIFT算法是否可用在contrib中 sift cv2.SIFT_create() print(“SIFT create successfully!”)如果運行成功說明環(huán)境配置正確。如果遇到SIFT_create失敗請確認安裝的是opencv-contrib-python而非opencv-python。實操心得我強烈建議在項目根目錄下創(chuàng)建一個requirements.txt文件記錄所有依賴包及其版本。這樣在另一臺機器或未來重裝環(huán)境時一句pip install -r requirements.txt就能完美復現(xiàn)。這是保證項目可復現(xiàn)性的好習慣。4. 全景拼接核心代碼實現(xiàn)與分步解析接下來我們將把第2章中提到的技術(shù)流水線轉(zhuǎn)化為具體的Python代碼。我會將整個流程封裝成幾個清晰的函數(shù)并逐一解釋每個步驟的細節(jié)和參數(shù)意義。4.1 第一步讀取與預處理圖像我們首先定義一個函數(shù)來讀取一組圖像并進行必要的預處理。預處理不是為了改變圖像內(nèi)容而是為了提升后續(xù)特征匹配的穩(wěn)定性和效率。import cv2 import numpy as np def read_and_preprocess_images(image_paths, resize_factor1.0): “”“ 讀取圖像列表并進行預處理。 參數(shù) image_paths: 圖像文件路徑列表。 resize_factor: 縮放因子1.0為原圖。為加快處理速度可適當縮小圖像。 返回 images: 預處理后的圖像列表BGR格式。 images_gray: 對應的灰度圖像列表用于特征檢測。 ”“” images [] images_gray [] for path in image_paths: img cv2.imread(path) if img is None: print(f“Warning: Could not read image at {path}”) continue # 可選調(diào)整圖像大小 if resize_factor ! 1.0: h, w img.shape[:2] new_w, new_h int(w * resize_factor), int(h * resize_factor) img cv2.resize(img, (new_w, new_h)) # 轉(zhuǎn)換為灰度圖 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 可選直方圖均衡化增強對比度有助于在光照不均的場景下檢測特征 # gray cv2.equalizeHist(gray) images.append(img) images_gray.append(gray) return images, images_gray關(guān)鍵點解析resize_factor對于高分辨率圖片如2000萬像素全尺寸進行特征檢測和匹配會非常耗時。將其縮放至原圖的0.5或0.25倍能極大提升速度且對匹配精度影響不大因為特征點通常是多尺度的。這是一個典型的“用精度換速度”的權(quán)衡在實時性要求高的場景下非常有用。灰度轉(zhuǎn)換絕大多數(shù)特征檢測算法都在灰度圖像上運行因為顏色信息對于識別關(guān)鍵點結(jié)構(gòu)并非必需且能減少計算量。直方圖均衡化被注釋掉了。這是一個雙刃劍。它能增強低對比度區(qū)域的細節(jié)但有時也會放大噪聲。我的經(jīng)驗是在室內(nèi)或光照較暗的場景下開啟它可能有益在戶外正常光照下保持原圖灰度往往效果更穩(wěn)定。4.2 第二步特征檢測、描述與匹配這是拼接算法中最核心也最耗時的部分之一。我們選擇SIFT算法因為它對尺度、旋轉(zhuǎn)和亮度變化具有較好的不變性。def detect_and_match_features(image_gray_list, feature_detector‘sift’, ratio_test_thresh0.75): “”“ 檢測圖像特征并進行匹配。 參數(shù) image_gray_list: 灰度圖像列表。 feature_detector: 特征檢測器類型‘sift’或‘orb’。 ratio_test_thresh: Lowe‘s ratio test的閾值用于篩選優(yōu)質(zhì)匹配。 返回 all_keypoints: 每張圖像的關(guān)鍵點列表。 all_descriptors: 每張圖像的描述符列表。 good_matches_list: 相鄰圖像之間的優(yōu)質(zhì)匹配點對列表。 ”“” all_keypoints [] all_descriptors [] # 初始化檢測器 if feature_detector.lower() ‘sift’: detector cv2.SIFT_create() elif feature_detector.lower() ‘orb’: detector cv2.ORB_create(nfeatures5000) # ORB需要指定特征點數(shù)量 else: raise ValueError(“Unsupported detector. Choose ‘sift’ or ‘orb’.”) print(“Detecting keypoints and computing descriptors...”) for gray in image_gray_list: kp, des detector.detectAndCompute(gray, None) all_keypoints.append(kp) all_descriptors.append(des) # 匹配相鄰圖像 good_matches_list [] if feature_detector ‘sift’: matcher cv2.BFMatcher(cv2.NORM_L2, crossCheckFalse) # 對于SIFT使用L2距離 else: # ORB matcher cv2.BFMatcher(cv2.NORM_HAMMING, crossCheckFalse) # 對于ORB使用漢明距離 print(“Matching features between consecutive images...”) for i in range(len(all_descriptors) - 1): des1 all_descriptors[i] des2 all_descriptors[i 1] if des1 is None or des2 is None: good_matches_list.append([]) continue # KNN匹配為每個描述符找兩個最近鄰 knn_matches matcher.knnMatch(des1, des2, k2) good_matches [] # Lowe‘s ratio test: 過濾掉模棱兩可的匹配 for m, n in knn_matches: if m.distance ratio_test_thresh * n.distance: good_matches.append(m) good_matches_list.append(good_matches) print(f“Image {i} - {i1}: Found {len(good_matches)} good matches.”) return all_keypoints, all_descriptors, good_matches_list關(guān)鍵點解析算法選擇代碼支持SIFT和ORB。SIFT精度高但受專利保護在開源項目中通??捎盟俣容^慢ORB是免費的速度極快但旋轉(zhuǎn)和尺度不變性稍弱。對于要求高精度的全景拼接SIFT通常是首選。KNN與Ratio Test我們使用knnMatch為每個特征點找到兩個最佳匹配k2。Ratio Test是David Lowe提出的一種非常有效的誤匹配濾除方法。其原理是正確的匹配點其最佳匹配距離m.distance應該顯著小于次佳匹配距離n.distance。如果兩者很接近說明這個特征點不夠獨特匹配結(jié)果不可靠應予以剔除。ratio_test_thresh通常設置在0.7到0.8之間值越小篩選越嚴格匹配點越少但質(zhì)量越高。匹配數(shù)量相鄰圖像間至少需要4對高質(zhì)量的匹配點才能計算單應性矩陣。通常建議有幾十對以上結(jié)果才比較穩(wěn)定。如果good_matches數(shù)量少于10拼接很可能失敗。4.3 第三步計算單應性矩陣與圖像配準獲得優(yōu)質(zhì)匹配點對后我們需要從中計算出將一張圖像映射到另一張圖像坐標系的變換矩陣。def compute_homography_and_align(keypoints_list, good_matches_list, ransac_thresh5.0): “”“ 根據(jù)匹配點計算單應性矩陣并構(gòu)建圖像到參考坐標系第一張圖的變換鏈。 參數(shù) keypoints_list: 關(guān)鍵點列表。 good_matches_list: 優(yōu)質(zhì)匹配列表。 ransac_thresh: RANSAC算法中判定內(nèi)點的距離閾值像素單位。 返回 homographies: 從每張圖像到第一張圖像坐標系的累積單應性矩陣列表。 H[0]是單位矩陣H[i]將第i張圖變換到第0張圖的坐標系。 ”“” homographies [np.eye(3)] # 第一張圖到自身的變換是單位矩陣 H_accumulated np.eye(3) # 累積變換矩陣 for i in range(len(good_matches_list)): kp1 keypoints_list[i] kp2 keypoints_list[i 1] good_matches good_matches_list[i] if len(good_matches) 4: print(f“Warning: Not enough matches between image {i} and {i1} to compute homography.”) # 如果匹配不足假設是純平移或使用單位矩陣效果會很差 H_current np.eye(3) else: # 提取匹配點的坐標 src_pts np.float32([kp1[m.queryIdx].pt for m in good_matches]).reshape(-1, 1, 2) dst_pts np.float32([kp2[m.trainIdx].pt for m in good_matches]).reshape(-1, 1, 2) # 使用RANSAC計算單應性矩陣并獲取內(nèi)點掩碼 H_current, mask cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, ransac_thresh) if H_current is None: print(f“Warning: Homography computation failed for image {i} - {i1}.”) H_current np.eye(3) else: # 統(tǒng)計內(nèi)點數(shù)量 num_inliers np.sum(mask) print(f“Image {i} - {i1}: Homography computed with {num_inliers}/{len(good_matches)} inliers.”) # 累積變換將當前變換與之前的累積變換相乘 # H_accumulated 是將第i張圖變換到第0張圖坐標系的矩陣 # H_current 是將第i1張圖變換到第i張圖坐標系的矩陣 # 所以第i1張圖到第0張圖的變換是H_accumulated * H_current # 但注意findHomography返回的H_current是將src_pts圖i變換到dst_pts圖i1的矩陣。 # 而我們想要的是將圖i1變換到圖i的坐標系。所以這里需要取逆。 H_current_inv np.linalg.inv(H_current) H_accumulated np.dot(H_accumulated, H_current_inv) homographies.append(H_accumulated.copy()) return homographies關(guān)鍵點解析cv2.findHomography()這個函數(shù)是核心。它接受兩組對應的點集使用RANSAC算法魯棒地估算單應性矩陣H。ransac_thresh參數(shù)是關(guān)鍵它定義了多大距離內(nèi)的點被認為是“內(nèi)點”符合模型。這個值設置得太小如1.0可能會因為噪聲而找不到足夠內(nèi)點導致計算失敗設置得太大如10.0則可能讓一些錯誤的匹配點也被當作內(nèi)點降低矩陣精度。通常根據(jù)圖像分辨率來定對于縮放后的圖像如1000px寬5.0是一個不錯的起點。矩陣累積與逆變換這是最容易出錯的地方。findHomography返回的矩陣H滿足dst_pts H * src_pts。即它將圖i的點變換到了圖i1的坐標系。但在全景拼接中我們通常希望將所有圖像都變換到第一張圖圖0的坐標系。因此我們需要的是將圖i1變換到圖i坐標系的矩陣也就是H的逆矩陣H_inv。然后通過連續(xù)左乘得到從任意圖到圖0的累積變換矩陣。代碼中的H_accumulated正是這個累積矩陣。內(nèi)點數(shù)量打印出的內(nèi)點數(shù)量是評估單應性矩陣質(zhì)量的重要指標。內(nèi)點比例內(nèi)點數(shù)/總匹配數(shù)越高說明匹配質(zhì)量越好計算出的變換越可靠。4.4 第四步圖像扭曲與畫布尺寸計算有了每張圖到參考坐標系的變換矩陣后我們需要計算最終全景圖畫布的大小并將所有圖像扭曲到這個畫布上。def warp_images_to_canvas(images, homographies): “”“ 將所有圖像根據(jù)單應性矩陣扭曲到統(tǒng)一的畫布上。 參數(shù) images: 原始BGR圖像列表。 homographies: 到參考坐標系圖0的累積單應性矩陣列表。 返回 panorama: 拼接后的全景圖可能包含黑邊。 (x_offset, y_offset): 畫布原點相對于圖0原點的偏移量。 ”“” print(“Calculating canvas size...”) # 1. 計算畫布邊界 corners_list [] # 存儲每張圖扭曲后的四個角點 for i, (img, H) in enumerate(zip(images, homographies)): h, w img.shape[:2] # 原始圖像的四個角點 corners np.array([[0, 0], [w, 0], [w, h], [0, h]], dtypenp.float32).reshape(-1, 1, 2) # 變換到全景圖畫布坐標系 warped_corners cv2.perspectiveTransform(corners, H) corners_list.append(warped_corners) # 將所有角點堆疊起來找到最大最小值 all_corners np.vstack(corners_list) [x_min, y_min] np.int32(all_corners.min(axis0).ravel() - 0.5) # 減0.5并取整留有余量 [x_max, y_max] np.int32(all_corners.max(axis0).ravel() 0.5) # 計算畫布大小和偏移量 canvas_width x_max - x_min canvas_height y_max - y_min x_offset -x_min y_offset -y_min print(f“Canvas size: {canvas_width} x {canvas_height}”) print(f“Offset: ({x_offset}, {y_offset})”) # 2. 調(diào)整變換矩陣加入平移偏移使所有圖像都位于畫布正坐標區(qū)域 translation_matrix np.array([[1, 0, x_offset], [0, 1, y_offset], [0, 0, 1]]) adjusted_homographies [np.dot(translation_matrix, H) for H in homographies] # 3. 創(chuàng)建畫布并扭曲圖像 panorama np.zeros((canvas_height, canvas_width, 3), dtypenp.uint8) print(“Warping images to canvas...”) # 方法一簡單覆蓋最后一張覆蓋前一張接縫明顯 # for img, H_adj in zip(images, adjusted_homographies): # warped cv2.warpPerspective(img, H_adj, (canvas_width, canvas_height)) # # 創(chuàng)建掩碼只將非零區(qū)域覆蓋到全景圖 # mask (warped 0).all(axis2) # panorama[mask] warped[mask] # 方法二使用加權(quán)平均融合簡單羽化 panorama_acc np.zeros((canvas_height, canvas_width, 3), dtypenp.float32) # 累加器 weight_acc np.zeros((canvas_height, canvas_width), dtypenp.float32) # 權(quán)重累加器 for idx, (img, H_adj) in enumerate(zip(images, adjusted_homographies)): warped cv2.warpPerspective(img, H_adj, (canvas_width, canvas_height)) # 為扭曲后的圖像創(chuàng)建一個權(quán)重圖中心權(quán)重高邊緣權(quán)重低簡單線性衰減 h, w img.shape[:2] # 創(chuàng)建一個與原圖同尺寸的權(quán)重圖中心為1邊緣為0 weight_map np.ones((h, w), dtypenp.float32) # 在邊緣處創(chuàng)建漸變可選這里簡化處理直接使用二值掩碼 # 更復雜的做法是計算每個像素到圖像邊界的距離來生成漸變權(quán)重 mask_warped cv2.warpPerspective(weight_map, H_adj, (canvas_width, canvas_height)) mask_warped (mask_warped 0).astype(np.float32) # 二值化 # 累加 panorama_acc warped.astype(np.float32) * mask_warped[:, :, np.newaxis] weight_acc mask_warped # 避免除以零 weight_acc[weight_acc 0] 1 panorama np.uint8(panorama_acc / weight_acc[:, :, np.newaxis]) return panorama, (x_offset, y_offset)關(guān)鍵點解析畫布計算我們通過將所有圖像變換后的角點坐標求并集來確定全景圖的最小包圍矩形。x_min, y_min可能是負數(shù)所以我們計算一個偏移量(x_offset, y_offset)將所有點的坐標平移為正數(shù)方便在NumPy數(shù)組中表示。矩陣調(diào)整adjusted_homographies是在原始變換矩陣H的基礎上左乘了一個平移矩陣相當于在變換后額外進行了一次平移確保圖像落在畫布內(nèi)。圖像融合這里演示了兩種方式。注釋掉的“簡單覆蓋法”會導致接縫處有明顯的邊緣因為后扭曲的圖像直接覆蓋了先扭曲的圖像。我們實際采用的是加權(quán)平均融合。為每張扭曲后的圖像生成一個二值掩碼有圖像數(shù)據(jù)的地方為1黑邊為0然后將所有圖像的像素值乘以其掩碼后累加最后除以累加的權(quán)重掩碼。這樣在重疊區(qū)域像素值是平均值能有效平滑接縫。這是一種簡化的羽化Feathering方法。對于更高質(zhì)量的無縫融合可以考慮多頻段融合Multi-Band Blending它能在不同頻率上平滑接縫效果更好但計算更復雜。5. 黑邊處理的多種策略與實現(xiàn)經(jīng)過上一步我們得到了一個包含黑邊的全景圖panorama?,F(xiàn)在我們來集中解決這個“黑邊”問題。我將介紹三種策略并重點實現(xiàn)最實用的智能裁剪法。5.1 策略一簡單矩形裁剪Naive Crop這是最直接的方法找到圖像中所有非純黑像素的邊界然后裁剪出這個邊界矩形。def simple_crop_black_borders(panorama): “”“ 簡單裁剪掉圖像四周的純黑邊RGB均為0。 返回裁剪后的圖像。 ”“” # 將圖像轉(zhuǎn)換為灰度圖非零像素即為有效區(qū)域 gray cv2.cvtColor(panorama, cv2.COLOR_BGR2GRAY) # 找到所有非零像素的坐標 coords cv2.findNonZero(gray) if coords is None: print(“No valid pixels found!”) return panorama # 獲取非零區(qū)域的邊界矩形 x, y, w, h cv2.boundingRect(coords) # 裁剪 cropped panorama[y:yh, x:xw] print(f“Cropped to rectangle: ({x}, {y}) to ({xw}, {yh}), size {w}x{h}”) return cropped優(yōu)缺點分析優(yōu)點實現(xiàn)簡單速度快能去除大部分黑邊。缺點如果有效像素區(qū)域不是矩形例如由于圖像扭曲有效區(qū)域是一個不規(guī)則的凸多邊形這種方法會裁剪掉多邊形角落的有效像素造成畫面損失。如下圖所示紅色矩形是裁剪框但藍色多邊形區(qū)域才是真正的有效像素四個角的信息丟失了。5.2 策略二尋找最大內(nèi)接矩形智能裁剪我們的目標是找到有效像素區(qū)域一個可能不規(guī)則的形狀內(nèi)部最大的內(nèi)接矩形。這樣可以在不丟失任何有效像素的前提下得到一個規(guī)整的矩形輸出。這是一個經(jīng)典的計算機視覺問題可以通過輪廓查找和幾何分析來解決。def find_largest_inscribed_rectangle(mask): “”“ 在二值掩碼中尋找最大的內(nèi)接矩形。 參數(shù) mask: 二值圖像有效區(qū)域為255黑邊為0。 返回 (x, y, w, h): 最大內(nèi)接矩形的左上角坐標和寬高。 ”“” # 方法使用輪廓查找和矩形逼近的簡化方法。 # 更精確但復雜的方法是使用旋轉(zhuǎn)卡殼或基于距離變換的方法。 contours, _ cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) if not contours: return 0, 0, mask.shape[1], mask.shape[0] # 找到最大的輪廓有效區(qū)域 largest_contour max(contours, keycv2.contourArea) # 方法A直接使用輪廓的邊界矩形即簡單裁剪可能不是最大內(nèi)接 # x, y, w, h cv2.boundingRect(largest_contour) # return x, y, w, h # 方法B尋找最小面積矩形旋轉(zhuǎn)矩形然后取其正外接矩形作為近似最大內(nèi)接矩形。 # 這是一個折中方案比簡單裁剪好但非最優(yōu)解。 rect cv2.minAreaRect(largest_contour) box cv2.boxPoints(rect) box np.int0(box) # 獲取這個旋轉(zhuǎn)矩形的正外接矩形 x, y, w, h cv2.boundingRect(box) return x, y, w, h def smart_crop_black_borders(panorama): “”“ 智能裁剪嘗試找到有效區(qū)域的最大內(nèi)接矩形。 返回裁剪后的圖像。 ”“” # 1. 創(chuàng)建有效區(qū)域的掩碼 gray cv2.cvtColor(panorama, cv2.COLOR_BGR2GRAY) # 閾值化非黑像素都視為有效。閾值設為1是為了避免因壓縮產(chǎn)生的接近0的噪聲。 _, mask cv2.threshold(gray, 1, 255, cv2.THRESH_BINARY) # 2. 可選進行形態(tài)學操作閉合小孔洞平滑邊緣 kernel np.ones((5,5), np.uint8) mask cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel) mask cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel) # 3. 尋找最大內(nèi)接矩形 x, y, w, h find_largest_inscribed_rectangle(mask) # 4. 裁剪 if w 0 and h 0: cropped panorama[y:yh, x:xw] print(f“Smart cropped to rectangle: ({x}, {y}) to ({xw}, {yh}), size {w}x{h}”) return cropped else: print(“Smart crop failed, fallback to simple crop.”) return simple_crop_black_borders(panorama)關(guān)鍵點解析閾值化cv2.threshold(gray, 1, 255, cv2.THRESH_BINARY)將灰度圖中大于1的像素設為255白色其余為0黑色。閾值設為1而不是0是為了避免因JPEG壓縮或圖像扭曲插值產(chǎn)生的極暗像素接近0但不是0被誤判為有效區(qū)域。形態(tài)學操作MORPH_CLOSE閉運算先膨脹后腐蝕??梢蕴畛溲诖a中的小型黑洞比如因紋理單一導致特征點缺失產(chǎn)生的微小空洞。MORPH_OPEN開運算先腐蝕后膨脹??梢韵诖a邊緣小的凸起或毛刺使輪廓更平滑。內(nèi)核大小(5,5)是一個經(jīng)驗值可以根據(jù)圖像分辨率調(diào)整。太大可能會過度平滑損失細節(jié)。find_largest_inscribed_rectangle函數(shù)這里實現(xiàn)了一個近似方法。首先找到有效區(qū)域的最大輪廓然后計算其最小面積矩形這個矩形可以是旋轉(zhuǎn)的。最后取這個旋轉(zhuǎn)矩形的正外接矩形作為近似解。這個方法在大多數(shù)情況下能得到一個不錯的結(jié)果且計算量遠小于尋找精確最大內(nèi)接矩形的算法如基于距離變換的方法。回退機制如果智能裁剪失敗如寬高為0則自動回退到簡單的矩形裁剪保證程序健壯性。5.3 策略三內(nèi)容感知填充高級對于追求完美矩形且不想丟失任何畫面的情況可以考慮使用圖像修復Inpainting或內(nèi)容感知填充技術(shù)來“猜”出黑邊區(qū)域應該是什么內(nèi)容。OpenCV提供了cv2.inpaint()函數(shù)但它更適合修復小區(qū)域的劃痕或斑點對于大面積的、邊界復雜的黑邊區(qū)域效果通常不理想會產(chǎn)生模糊或扭曲的紋理。更先進的方法是使用深度學習模型進行圖像外推或補全但這超出了本項目的范圍。一個實用的折中方案是先用智能裁剪法得到最大內(nèi)接矩形然后使用圖像縮放或邊緣像素擴展將圖像填充到目標尺寸。但這本質(zhì)上是一種有損的拉伸會改變圖像比例需謹慎使用。5.4 綜合處理流程封裝我們將上述步驟整合成一個主函數(shù)并提供參數(shù)接口。def create_panorama(image_paths, output_path“panorama_result.jpg”, crop_method“smart”, resize_factor0.5, feature_type“sift”): “”“ 全景圖拼接主流程。 參數(shù) image_paths: 輸入圖像路徑列表按拍攝順序。 output_path: 輸出全景圖路徑。 crop_method: 黑邊處理方法‘simple‘, ‘smart‘, or ‘none‘。 resize_factor: 圖像預處理縮放因子。 feature_type: 特征檢測器類型‘sift‘ or ‘orb‘。 ”“” print(“ Panorama Stitching Started ”) # 1. 讀取與預處理 images, images_gray read_and_preprocess_images(image_paths, resize_factor) if len(images) 2: print(“Error: Need at least two images to stitch.”) return # 2. 特征檢測與匹配 all_kp, all_des, good_matches detect_and_match_features(images_gray, feature_detectorfeature_type) # 3. 計算單應性矩陣 homographies compute_homography_and_align(all_kp, good_matches) # 4. 扭曲圖像到畫布 panorama, offset warp_images_to_canvas(images, homographies) # 5. 黑邊處理 if crop_method ‘simple‘: result simple_crop_black_borders(panorama) elif crop_method ‘smart‘: result smart_crop_black_borders(panorama) elif crop_method ‘none‘: result panorama else: print(f“Unknown crop method: {crop_method}, using ‘smart‘.”) result smart_crop_black_borders(panorama) # 6. 保存結(jié)果 cv2.imwrite(output_path, result) print(f“Panorama saved to: {output_path}”) print(“ Panorama Stitching Finished ”) # 可選顯示結(jié)果 # cv2.imshow(‘Final Panorama‘, result) # cv2.waitKey(0) # cv2.destroyAllWindows() return result6. 實戰(zhàn)調(diào)試、常見問題與優(yōu)化技巧即使代碼邏輯正確在實際操作中你仍會遇到各種問題。下面是我在多次實踐中總結(jié)的常見“坑”及其解決方案。6.1 匹配失敗或匹配點過少癥狀good_matches數(shù)量很少比如少于10對或者計算出的單應性矩陣內(nèi)點比例極低。原因與排查圖像重疊區(qū)域不足這是最常見的原因。確保相鄰照片至少有30%-50%的重疊區(qū)域。拍攝時最好使用三腳架水平旋轉(zhuǎn)相機并保持一致的曝光。特征點太少場景紋理單一如純色的天空、白墻、水面。嘗試降低resize_factor如從0.5降到0.25讓算法在更小的圖像上檢測特征有時反而能檢測到更穩(wěn)定的角點?;蛘呖梢試L試調(diào)整SIFT的參數(shù)如contrastThreshold降低以檢測更多低對比度點。光照或視角變化過大拍攝時光線突變或者相機有顯著的俯仰變化超出了單應性矩陣能描述的平面變換范圍。盡量保持拍攝條件穩(wěn)定。對于視角變化大的情況可能需要更復雜的模型如仿射變換或使用APAP等高級算法。誤匹配過多Ratio Test太嚴格嘗試適當提高ratio_test_thresh如從0.75調(diào)到0.8保留更多匹配點讓RANSAC去篩選。6.2 拼接結(jié)果出現(xiàn)重影或錯位癥狀圖像對齊了但重疊區(qū)域有模糊的重影或者物體邊緣沒有完全對齊。原因與解決方案單應性矩陣不準確雖然RANSAC能剔除誤匹配但如果內(nèi)點中仍存在系統(tǒng)性誤差比如所有匹配點都來自場景中的某個局部平面而其他部分不在同一平面就會導致矩陣對于整個圖像不準確??梢試L試使用更嚴格的RANSAC閾值ransac_thresh如從5.0降到3.0或者使用cv2.RHO或cv2.LMEDS等其他估算方法。累積誤差當拼接多張圖像如超過5張時每次配準的小誤差會累積起來導致首尾圖像無法閉合或者中間圖像出現(xiàn)明顯扭曲。解決方案是使用捆集調(diào)整Bundle Adjustment。這是一個復雜的優(yōu)化過程旨在全局最小化所有匹配點的重投影誤差。OpenCV沒有直接提供此功能但可以嘗試將所有圖像兩兩匹配然后使用cv2.detail模塊屬于OpenCV的stitching模塊中的高級功能或者研究第三方庫如Photoscan的算法。融合算法不佳簡單的平均融合在曝光差異大的地方會產(chǎn)生“鬼影”??梢試L試更先進的融合算法多頻段融合Multi-Band Blending這是OpenCVcv2.detail.MultiBandBlender使用的算法效果很好。你可以嘗試使用OpenCV的stitching模塊或者自己實現(xiàn)將圖像分解為拉普拉斯金字塔在不同頻段進行融合。增益補償Gain Compensation在融合前先估計并補償每張圖像的亮度差異。6.3 黑邊裁剪后畫面損失嚴重癥狀使用simple_crop后發(fā)現(xiàn)全景圖的四個角被切掉了重要內(nèi)容。解決方案切換到smart_crop智能裁剪模式。如果智能裁剪的結(jié)果仍然不理想可能是有效區(qū)域的掩碼本身不規(guī)則或有空洞。檢查掩碼在smart_crop_black_borders函數(shù)中保存并顯示中間生成的mask圖像看看有效區(qū)域是否是一個連貫的、相對飽滿的形狀。如果掩碼有很多毛刺或空洞可以調(diào)整形態(tài)學操作的內(nèi)核大小或者嘗試先對原圖進行高斯模糊再閾值化使掩碼更平滑。手動定義ROI如果自動方法始終不滿意最后的手段是手動指定感興趣區(qū)域ROI。你可以用cv2.selectROI(panorama)交互式地選擇一個矩形區(qū)域然后進行裁剪。雖然不自動但能保證結(jié)果符合預期。6.4 性能優(yōu)化技巧處理高分辨率圖像或多張圖像時程序可能會很慢。降低分辨率resize_factor是最大的性能杠桿。將其設為0.25或0.3能極大加速特征檢測和匹配且對最終拼接質(zhì)量影響有限。限制特征點數(shù)量對于SIFT雖然不能直接限制數(shù)量但可以通過contrastThreshold和edgeThreshold參數(shù)間接控制。對于ORB可以直接設置nfeatures參數(shù)如2000。使用FLANN匹配器當特征點數(shù)量非常多時如10000BFMatcher暴力匹配會變慢。可以嘗試使用基于KD樹的FLANN匹配器它對于高維數(shù)據(jù)如SIFT的128維描述符更快。但需要注意FLANN需要額外設置參數(shù)且對于二值描述符如ORB需要使用LSHLocality Sensitive Hashing索引。# FLANN匹配器示例用于SIFT FLANN_INDEX_KDTREE 1 index_params dict(algorithmFLANN_INDEX_KDTREE, trees5) search_params dict(checks50) # 搜索次數(shù) flann cv2.FlannBasedMatcher(index_params, search_params) knn_matches flann.knnMatch(des1, des2, k2)并行處理特征檢測和描述符計算是每張圖像獨立的任務可以嘗試使用Python的concurrent.futures庫進行多線程或多進程加速。6.5 讓拼接效果更好的拍攝建議算法再強也依賴于好的輸入素材。以下是一些實戰(zhàn)拍攝技巧使用三腳架保持相機水平旋轉(zhuǎn)盡可能減少垂直方向的視差。保持重疊度相鄰照片之間保證30%-50%的重疊區(qū)域。固定曝光和白平衡使用相機的手動模式M檔或至少鎖定曝光避免自動模式下不同照片的亮度、色溫差異過大。對焦到無窮遠如果是風景將對焦點設為無窮遠確保整個場景清晰。按順序拍攝從左到右或從右到左順序拍攝便于程序按順序處理。最后調(diào)用主函數(shù)完成拼接if __name__ “__main__”: # 替換為你的圖片路徑列表確保按順序排列 image_paths [“image1.jpg”, “image2.jpg”, “image3.jpg”] result create_panorama( image_paths, output_path“my_panorama.jpg”, crop_method“smart”, # 嘗試 ‘simple‘, ‘smart‘, ‘none‘ resize_factor0.4, feature_type“sift” )通過這個項目你不僅學會了如何用代碼將多張照片拼接成全景圖更重要的是你深入理解了特征匹配、幾何變換、圖像融合這些計算機視覺核心概念在實際問題中的應用并掌握了處理“黑邊”這類工程難題的多種思路。在實際操作中多調(diào)試參數(shù)多觀察中間結(jié)果如匹配點可視化、掩碼圖像是解決問題的關(guān)鍵。希望這份詳盡的指南和代碼能成為你探索計算機視覺世界的一塊堅實跳板。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧洲一级性爱视频在线观看| 91在线精品一区二区三区| 老熟女91视频| 中文字幕一区日韩精| 国产成人主播| 大屁股人妻女教师撅着屁股| 日本福利社| 日夜尻逼网| 成人亚欧免费视频| 高清不卡 中文 人妻| 日韩精品资源专区二区| 少妇毛片久久| 亚洲阿v天堂在线| 婷婷中文字幕| 久久婷婷成人综合色怡春院| 五月色丁香| 91少妇通奸网站| 成人av福利在线观看| a人欧美综合天堂麻豆| 天天上日日上日韩精品| 青青草精品| 精品午夜福利导航| 中文字幕视频2区| 亚洲欧美不卡线| 超碰免费在线| 大JI巴好深好爽又大又粗视频| 一本道综合色图| 欧美性爱一区二区三区| 精品无码一区二区| 欧美精品久久久久久久丰满| 日韩色图 一区二区| 在线观看AV片| 久久精品国产97欧美精品亚洲 | 干婷婷综合网| 97色欧洲| 青青网三级视频| 97精品久久| 中文字幕丝袜人妻| 伊人国产成人av网站| 久久久久一本一区二区青青蜜月| 国产亚洲性生活视频播放| 国产精品乱码久久久久久久久久久久| 欧美日本中字另类在线| 精品二区三四区五电影| 婷婷色五月激情| 日本一区不卡| 久久亚州高清| 岛国黄色大片网站| 亚州性色| 中 文字幕一区二区三四 五 区日 日 骚 | 99久久亚洲精品无码毛片潘甜甜| 国产农村妇女精品一二区| 自拍偷拍草一草| 欧美日韩婷婷中文| 自慰白浆在线观看| 欧美中文字幕精品人妻| 日韩中文字幕av在线播放| 又大又长又粗又爽又黄| 九九这里只有精品| 日韩乱码Av| 亚洲精品无码成人久久久99| 女人香蕉久久毛毛片精品| 激情综合五月| 亚洲成人久久一区二区| 欧美日韩精品久久久久久久久东北老熟妇| 四虎影视永久在线免费| 国产精品精品系列在线观看| 97综合久第一页| 国产又粗又又黄又猛| www熟女乱伦com| 久日91在线| 日本肏逼视频在线观看| 激情婷婷综合久久| 久久久久久久久久久精| 中文字幕av色| 亚洲av无码成人精品国产| 99热一区二区三区四区| 啊啊啊啊啊啊啊啊要喷了| 色五月婷婷在线| 亚洲囯产精品女人久久久| 国产中午字一暮区| 欧美少妇大量自拍视频在线观看| 九九探花视频在线观看| 女性喷水高潮在线观看| 亚洲成人帖图| 国产精品69久久久久久久| 亚洲精品819| 曰韩精品视频一区二区| 天天综合中文字幕 91| 日韩午夜国产| 欧美综合色站| 久妇网| jizzjizz欧美| 精品国产一区探花在线观看| 国产97亚洲| 精品人妻一二三四区视频| www.夜夜操| 日韩无码黄色片| 亚洲一区二区在线观看91| 日韩国产九九精品一区二区三区毛片 | 99精品成人免费看| 久久久亚洲精品电影免费看| 精品人妻一二三| 中文字幕精品乱码| 麻豆久久久久久久久丝袜 | 麻豆成人av| 后入美女国产| 爱欲AV| 96精品久久久久久久久久| 超碰偷拍| 亚欧美综合网。| 宗合情欲网| 熟妇熟女视频一区二区三区| 日韩欧美视频青青| 97五月天| 久久乐| av婷婷色婷婷色六月| 欧美顶级黄色大片免费| 亚洲欧美日韩免费电影| 在线岛| 中国一级特黄大片护士| 秋霞成人做爱| 美女尤物人人操| 51久久夜色精品国产麻豆| 啪啪啪亚欧美视频| 69av一区二区三区| 无遮挡又黄又刺激的视频| 美女诱惑久久| 亚洲欧洲中文日韩女优乱码| 精品中文字幕第一页| 日韩激情无码影院| 亚洲成aⅴ人片不卡无码| 成人精品久久久午夜福利| a片在线播放| 亚洲综合码| 中文字幕国产精品1区| 欧美黄色图片| 精品美女久久一二三| 超碰97色色| 中文在线久久字幕| 精品九九淫乱男| 色哟哟1区2区| 欧美综色欧| 人妻第一页| 天天操天天7| 欧美亚洲韩国视频十五区| 日本黄页视频在线观看| 中文字幕乱妇免费视频| 久久透逼视频| 日韩丰满熟妇| 欧美久久婷| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 国产无遮挡| 少妇与黑人高潮在线| 西西美女视频网| 精品九九淫乱男| 国产夫妻性生活视频| 性91| 一级二级三级黑人无码| 亚洲最新av无码成人精品区| 婷婷丁香五月综合| 欧美最婬乱婬爆婬性视频| 丝袜综合| 欧美姓爱综合网| 在线视频97| 97在线观看| 青娱乐二区免费| 亚洲,日韩,欧美,成人播放| 亚洲古典另类欧美在线| 久久人妻视频| 日本蜜桃| 97视频在线播放| 成人av在线播放| 网页导航五月天免费一二三区 | 99国产天美| 色五月激情AV在线| 综合色91| 午夜男女爽爽大片免费观看| 人人插人人搞人人操| 婷婷月色| 亚洲第一男人天堂| 国产精品999aaa| 亚洲欧洲自拍图片专区满春格| 老司机射| 手机av天堂久久久久| 98超碰日本| 日本一区不卡| 爱av免费| 超碰碰激情97+久| 91五十路| 无码少妇精品一区二区60岁老人| 日韩精品人妻中文字幕有码午| 国产精品密臀网在线观看| 性高潮久久久久久久久久久| 3028国产精品| 天堂在线一区二区| 97国产精品一区二区传媒公司| 在线播放免费av福利片| 大香蕉伊人亚洲| 国模91| 84YTCOM性无码| 在线观看日韩av不卡| 国产suv精品一区二区四区999| 青青青草原| 久久午夜鲁丝片| 天天日天天插| 日韩久射综合| 女人被添高潮免费视频| A一级色女| 日本熟女不卡视频| 女优视频第10页| 欧美专区17页| 97人人操人人摸| 精品v1区| 搡老熟女免费视频| 999岛国大片| 日本免费不卡二区| 91欧美网| 手机看av网站在线看| 欧洲精品人妻| 久草尤物| 九一综合网| 国产亚洲精品一区二区三区| 欧美极品少妇交| 操一对老熟妇爽上天视频| 日韩性爱1级片视频| 九九热精彩视频| 欧美成人A天堂片在线观看| 狠狠色婷婷7777久| 丰满欧美放荡少妇在线| 国产第25页在线观看| 爱妻综合网| 国产家庭乱伦表演| 国产精品网站免费| 18禁精品网站在线看| 麻豆AV短剧| 超清福利精品视频在线| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 欧美色自拍| 一级特黄aaa大片在线观看成人一级片在线观看 | 久久精品久久久久久久久| 一区二区三区精品黑丝白丝酒店对鸡| 青草伊人网| 色婷婷电影网| 欧美18老人禁| 中文字幕天天天天天| 国产v片在线免费观看| 熟妇人妻一区二区三区| 少妇熟女1区2区3区| 性色中出| 欧美亚洲色图另类国产| 久久少妇视频| 深田咏美亚洲精品福利社| 精品欧美日韩在线观看| 999久久久精品国产| 精品国产乱子伦一区二区三区,精品一| 久久亚洲AV成人精品无码| 久久九九精品一区二区| 992这里有精品| 欧美综合91| 欧美日韩人人早| 国产AV激情无码久久无码| 91天天美女| 久久久一级| 91欧美亚洲| 久久国模av| 日韩国产成人自拍视频| 欧美丝袜91| 黑丝91视频| 黄色视频60分钟| 亚洲色图片区| 97综合在线观看| 高清一区AV无码| 国产精品伦理| 人妻人人澡人人爽人人| blacked精品一区国产| 小电影欧美91| 大香蕉十区| 国产色精品午夜大片| 91日韩网站| 国产亚洲人妻综合日韩 久久| 亚洲一区操| 国产精品3| 亚洲天堂区| 中文字幕丰满人妻日本| 91/欧美| 亚洲久热| 操操操日本的逼| 麻豆天天躁天天揉揉AV| 亚洲色情在线影视| 天天综合精品| 美中日韩无码| 激情小说在线视频| 亚洲色性情三级| 女人高潮抽搐喷水视频网站| A级片日韩欧美国产欧美视频精选观看| 国产四虎在线| 制服乱伦| 尤物黄色在线观看网站| 农村女一级毛卡片| 午夜啊啊| 91欧洲入口| 色爱综合网欧美| 日本精品一区二区中文字幕| 午夜AV人气不卡| 人人操人人肉久久精品| 在线女人91| 99九九精品| 国产一区二区免费福利片| 特污精品女优骚货黄色视频在线免费观看| 丝袜无码a片| 1024香蕉视频| 99色天堂| 精品亚洲国产成人av网站| 超碰在线人人射| 中日韩久久久免费看| 久久中文字幕一区不卡| 久久东京热久久| 中文字幕欧美日本乱码一线二线| 亚洲国产成人福利在线观看| 亚洲天堂少妇| h色99999| 青青欧洲黑| WWW.加勒比人妻一区不卡.com| 五月婷婷六月丁香| 操操AV电影| 免费一级欧美片片线观看| 偷拍 欧美 日韩| 日韩97P| 欧美精品,四区。五区| 中文字幕在线24| 人人爱人人操人人性| 欧美天天搞| 九九国产| 日韩无码AB| 天天日天天舔东京热 | baisiav| 色综合色综合网| 国产福利在线视频网站| 99re视频这里只有精品| 久久久久久久91| 三四中文字幕| 亚洲图片小说欧洲| 99re免费| 欧美福利视频啊啊啊啊| 九久精品| 久久久久亚洲三级电影| 国产又黄又粗又猛大片| 久久免费99精品久久久久久| 国产精品人妻一区二区| 78超碰| 91色狼| 97在线免费视频观看| 精品一区二区三区丰满熟女-亚洲欧美一区| 国产乱码久久久久久| 日本精品免费一区二区三区四区| 国产热av| 快播电影网日韩新片| 男人的天堂com| 嗯嗯啊啊啊好爽| 亚洲女人91| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 欧美丝袜美女电影一二三四区| 伊人伊人LD| 亚洲。天堂。日本在线观看| www.久久超碰| 午夜福利1区2区3区| 欧美伊人久久综合网| 亚洲欧洲综合av在线| 乱伦av麻豆| 日操粉逼逼| 激情五月综合网| 丝袜内射| 嗯嗯啊好大| 欧美线天码中字| 亚洲人妻色图| 久久av无码| 久久人人爽爽人人爽人人片αV| 日韩免费大片一级播放| 日本特黄f c2| 青青操在线亚洲视频观看欧美在线| 精品九九淫乱男| 大香蕉手机在线| 99re超碰| 两性综合网| 中文字幕二区日韩天堂| 97干综合网| 99久久99九九99九九九| 日韩美女啪啪一区| 婷婷五月色| 日韩精品高清资源在线| 色香综合天天影视综合 | 国产精品一区av在线| 艹少妇网站| 中文字幕jul-617人妻熟女| 日本久久久久久久久| 亚洲 欧美 另类 日韩 人妻一区| 人妻无码一区二区三区久久99| 欧洲人妻视频| 国产精品色片一区二区| 国产欧美日韩女同性恋ww喷水精品 | 91人妻久久久久久久久久久久久| 久久高潮妇女视频| 国产综合网站在线播放 | 日日日大屁股骚女人精品| 国产人妻久久精品一区二区三区| 欧美精品精品一区二区| 你懂得91| 欧美亚洲丝袜美女电影| 亚洲图片视频小说| 91色综合| 97色色婷婷| oumeisetu综合| 亚洲人人夜夜澡人人爽| 久艾草在线精品视频在线观看| 精品国产精品一区二区| 色噜噜人妻丝袜AV资源| 欧美夜夜| 五月天社区| 久久综合久色欧美综合狠狠 | 超碰夫妻97| 国产精品网址| 狠狠操综合| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 男人a天堂手机在线版| 草草影院在线视频| 日产精品久久久一区二区| 岛国毛片在线观看免费| 超碰在线974| 蜜臀久久99精品久久久久久成人小说| 蜜乳av一区二区三区四区不卡| 免费看日产一区二区三区| 伦在线97| 日本性爱视频一级| 夜夜一区二区| 亚洲a色| 26uuu国产成人综合| 欧美视频第二页| 五月丁香激情四射| 中文字幕永久在线| 青女偷拍网| 激情小说图片亚洲首页| 久久成人国产| 色就色综合| 东北女人的毛片| 欧美97在线欧| 亚洲国产一区二区三区在线 | av一区二区三区不卡| 综合网,亚洲,欧美| 欧美在线91| 伊人大香蕉在线| 天天日天天看| 无套内射性感少妇视频| 超碰久草| 韩国黄色片精品久久久| 日本韩国五十路六十路七十路老熟女作爱视频网站| 国产欧美日本亚洲精品| 久久久久久九九九九-美女久久久久久久-成人AV | 五十路成人在线视频二区三区| 成 人片 黄色大片| 新97国产超碰| 免费观看国产小粉嫩喷水精品午| 精品国产污一区二区三区| av中亚| 澳门成人网站久国产日韩| 九九九九国产| 精久久久91| 精品国产一区二区三区四区在线看| 美日韩成人| 亚洲天堂男人的天堂| 欧美色偷拍| 国产精品不卡一区二区三区av| 国产极品999| 岛国在线国产| 日本天堂网| 亚洲欧洲日本精品中文a∨| 三上制服丝AV| 伊人黄色片| 91欧美综合在线| 亚洲性爱无码乱伦av| 日韩欧美~中文字| 欧美经典一区二区三区| 熟女91网| 欧美中文字幕男人天堂久久精品 | 91人妻少妇| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠 | 亚洲性爱免费电影| 高清无码学生妹高潮| 激情丁香五月| PMv在线观看| 亚洲清纯唯美| 中文字幕人妻丝袜| 亚洲天堂中文字| 青青草在线视频播放器| 懂色AV中文| 欧美日韩香蕉| 青娱乐国产剧情av一区| 玖玖草久草99蜜月一区二区三区| 色五月av| 操操逼操操逼操操逼逼| 超碰97国产欧美| www.高清无码诱惑一区.com | 男人久久精品| 婷婷丁香六月| 脫衣舞一区二区三区| 欧美中日韩XXXX| 日日夜夜骚| 国产成年精品高清在线观看91| 中出789在线视频| 二色av| 国产高清视频无码在线| 亚洲a色| 欧美日韩亚洲五月天婷婷| 丁香五月AV| 日韩综合成人免费视频| 久久少妇| 国产蜜臀在线| 精彩国产视频播放1区2区| 成人性爱电影网| 伊人网免费视频| 嗯嗯啊啊啊好爽| 日韩人妻精品中文字幕| 97精品国产97久久久久久免费| 中文字幕精品一区二区精| 婷婷五月天无码| 久久久久久久久久久久久9999| 自拍大香蕉乱插| 久久欲| 香蕉99秘 一区精品蜜桃臀| 亚洲天堂电影网| 国产精品久久久视频| 国产欧美日韩在线不卡第一页| 狠狠色伊人亚洲综合网站色| 日韩精品 欧美激情| 999熟女精品| 九九九九日本| 色婷婷综合久久久久中文一区二区| 伊人久久艹| 日韩性爱电影一区| 操迟操逼在巾线Fre看| 国产精品成人AV片免费看网站| 一区e区三| 日本青青草在线| 色婷婷综合网| 欧美十八禁导航成人| 日韩免费簧片| 色悠久| 丰满人妻一区二区三区免费| 安微少妇操BBB| 亚洲在钱| 内射卯月麻衣| 色偷偷人人玩人人舔人人操人人摸人人爽| 禁止观看美女黄| 亚洲精品视频二区| 伊人久久婷婷| 欧亚乱色熟女一区二区| 亚洲情色中文字幕一区| 四虎国产精品永久地址入口| 久久久久亚洲AV无码专区少妇| 亚洲中字幕日本一区二区三区| 97超碰站| a片久久久久久久久久久久| 亚洲国产另类在线中文| 色婷婷国产精品一区在线观看| 九九九九免费| 日本不卡五区| 国产精品视频在线观看| 人妻铁牛TV| 国产精品播放| 中文字幕第9页萱萱影音先锋| 91无码西班牙视频在线| 无码不卡八戒| 亚洲欧洲综合成人av一区| 日本黄色大片一级视频免费麻豆| 人人操人人操人人人操| 中文字幕日韩人妻视频一区二区三区 | 亚洲天堂另类美腿| 国产一级特黄大片处女| 精品少妇一区二区三区免费观看| av资源在线观看少妇| 亚洲日韩成人性爱视频| 亚洲超碰在线| 色色色热| 粘花网06av视频| 九九九九九九九精品视频| 日本国产成人亚洲精品无码| 女同性恋久久| 两性综合网| 九九色热| 日本免费一区二| 97 九色| 91视频综合在线| 蜜臀网址在线| 日韩欧美亚洲自拍偷拍| 日本人妻中文字幕| 中文字幕免费看大片| 黄片在线免费在线观看| 九九毛片这里只有精品| 超碰精品| 啪啪啪综合| 亚洲麻豆av一区二区| 激情无码日韩| 婷婷亚洲综合| 亚洲乱色视频一区、二区在线| 日日夜夜国产综合| 91狠狠狠| 乱操乱伦AV| 粉嫩粉嫩一区性色AV片| 亚洲天堂男人在线| 久久国模av| 欲香欲色综合天天伊人| 九九九精品成人免费视频小说| 美女国产一区二区久久| 亚洲欧美精品一区天堂久久| 99re这里| 94色色电影网| 亚洲古典另类欧美在线| 亚洲 欧美 91| 天天操天天日天天干| 国产精品视频电影| 国产精品久久久久久9999| 91视频在线观看18| 大香网站| 一本道综合色图| 五毛骚逼极品美女怕怕| 中文字幕在线免费观看 | 欧美日韩制服| 精品成人亚洲午夜电影| 狠狠色丁香| 亚洲成人妻日韩在线| www.91视频网| 大香蕉一线视频| 国产白领连续中出在线观看| 一本大道久| 日韩操逼性鲍| 啊啊啊啊啊啊在线看| 久久禁| 老司机天天操| 久久色激情一区二区三区| 少妇高潮九九九九九九九| 少妇厨房愉情理伦片bd在线观看| 一区二区激情国产熟女 | 九九综合久久| 中文字幕文字幕无码一区二区三区电影99| 久操视频免费观看| 无遮挡男女激烈动态图| 天天躁日日躁xxxxx| 国产欧美伊人| 加勒比海人人操超碰在线| 可能人人看人人摸| 屌妞视频久久久久久久久久久久| 操人妻视频| 91超级碰碰碰| 日日日日做夜夜夜夜做无码97| 成人乱人伦一区二区| 国产久久一区二区午夜| jiujiujiujingpin| 老外又粗又长一晚做五次| 久久激情亚洲精品无码?V| 夜草欧美| 蜜乳AV免费观看| 成人日韩3| 久操高青| 熟女少妇视频| 色五月婷婷久久| 超碰社区97| 另类小色呦| 校园春色欧美| 亚洲人妻中文高清| 91视频成人福利网站在线一区 | 国产精品在线一区二区| 超碰无码加勒比| 麻豆人妻少妇在线免费观看| 男女一进一出视频久久| 黄色乱论网站| 欧美激情久操网| 美女刺激久久国产欧美| 乱伦日本色图AⅤ| 日日做夜狠狠爱欧美黑人| 免费国产电影一区二区| 婷婷亚洲中文字幕在线| 97资源久久| caorenqi shipin| 大粗鳼巴久久久久| 狠狠干综合| 亚洲极品| 欧美顶级黄片AAAAA在线免费看| 九九综合网| 亚洲国产高清福利视频| 天堂精品| 精品v日韩欧美国产| julia ann久久| 国产97色在线| 国产白丝网站| oumeisetu综合| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 精品国产乱码久久久久久久久1| 欧美天天综合网版| 黑人中出21连凳花野真衣| 中国AV美女| 日本黄色XXX| 亚洲AV成人在线| 亚洲情色欧美| 精品国产99| 成年人一级黄色毛片大全在线观看| 国产成人精品午夜福利| 成人精品在线观看| 撸无码不卡免费视频| 欧美老熟另类| 又大又大又大又粗爽高潮观看| 久久精品老司| 亚洲精品乱码线路中文字幕 | 国产aⅴ无码片毛片一级网站| 91日日夜夜| 五月婷在线| 被男人吃奶很爽的毛片| 国产精品国产| 69精品在线| 素人一区二区三区日韩| 99AV| 日本青青草在线| 青草青草久热| 久久久久久久性爱| 夜夜操中文字幕| 丁香五月天啪啪| 激情五月综合开心五月| 男人的天堂日韩| 91亚洲不卡一区| 韩国成人精品久久久免费看| 1区2区3区视频| 台湾肥佬网一区二区三区| 强奸乱伦动态污图免费| 天天综合麻豆视频| 精品一区二区三区最新| 国内精品a| 新怡红院| 伊人操操| 能看的av| 伊人久操| 青娱乐淫乱1314| 精品十八在线观看| 欧美 青青草| 天天爽天天爽| 在线欧美69V免费观看视频| 一起草视频在线| 亚洲日韩乱码中文无码蜜桃臀网站 | 97久久天天综合色天天综合色电影| 久操九九九九| 日本精品高清一二区一本到| 欧美福利视频啊啊啊啊| 久久久无码精品人妻二区| 日韩精品99久久久久久中文字幕| 无遮挡猛进视频免费无限观看| 免费自拍三级综合| 妇女一区二区三区| 老熟妇一区二区三区| 白丝AV网站| 999在线电影香蕉| 狠狠色噜噜狠狠狠狠狠色综合久久| 韩国一级做a久久久久| 国产中午字一暮区| 欧美久久久| 任我爽视频在线观看| 五月丁香六月激情| 久久精品国产亚洲AV高级北京| 中国操逼无码| 天久久久噜噜噜久久国产精品爽爽| 国产外初女出血视频| 9 7超碰在线免费观看| 碰碰在线视频| 69人妻精品一区二区绯色| 日韩欧美国产高清视频| 伊人五月天激情| 国产又黄又爽又刺激久久久久久| 日本成a人v网站在线观看| 青青操在线视频| 亚洲成人帖图| 久久原创中文| 99热18这里只有精品| 美女淫穴| 青青草精品| 91 丝袜在线| 亚洲AO在线| 丁香六月激情| 人妻黑丝袜电影| 久久、1234| 中文字幕一二三区| 国产婷婷一区| 97操97色| 嗯啊不要啊啊在线观看视频| 国产女人高潮视频| 日本三级久| 熟妇在线视频一区二区| 婷婷久草一区二区三区| 五月天激情网站| 3571色综合一区二区二区| 天操天操夜操夜月操月年年操| 嗯嗯嗯啊啊啊在线免费观看| 97精彩视频网站| 男人亚洲91首页在线| 蜜桃成人1区2区3区| 黄色片一区二区三区四区五区| 伊人精品国产| 亚洲清纯综合| 97超碰影音| 久操视频在线| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 91麻豆天美传媒在线| 97久久超碰日韩精品| 九九亚洲| 9国产超碰| 樱花蜜乳av| 女人双腿搬开让男人桶| 密臀国产在线| 啊啊啊想要| 亚洲中文字幕精品一区| 亚洲AV无码乱码| 亚洲无码国产精品久久| 国产男人又猛又粗又爽| 黄片无码在线制服| 91狠| 丁香五月天堂网| 99久久这里只有精品| 午夜欧美神马久久久久| 日日日大屁股骚女人精品| 啊啊啊男女| 久久东京热久久| 综合激情二| 久久av成人无码免费| 色综合婷婷| 美女诱惑爱爱| 九区国产| 五月天精品| 欧美性爽xyxOOOO| 中日韩一区二区三区欧美| 国产成年免费大片黄在线观看| 最新国产精品久久精品| 精品女人999| 久操不卡视频| 日韩黄色成人性爱| 亚洲欧美校园另类春色| 99热这里只有是精品10| 亚洲一区二区三区播放在线| 日本精品一区二区三| 欧美78P| 亚洲乱码精品一区二区| 人人妻人射| 18禁超污无遮挡无码免费网| 欧美熟爽综合| 任你干在线视频| 少妇无码999| 99国产精品视频尤物| 欧美性爱另类综合| 无码人妻丰满熟妇奶水区毛片| 日日干夜夜欢| 一区二区三区国产在线播放| 巨爆乳一区二区爆乳区| 亚洲综合激情五月久久| 欧美久久九九| 九九热午夜欧亚国产视频| 亚洲天堂久久久久久粉红视频| 亚洲欧美综合区自拍另类| 99色在线| 国产精品视频在线播放| 日本一区不卡| 很很热性爱视频| 曰本熟女视频| 蜜臀久久久99久久久久 | 亚洲A曰本VA欧美VA视频| 最新国产亚洲精品精品国产亚洲综合 | 精品国产一区二区三区久久久蜜臀 | 黄色免费一级在线毛片| 天天躁日日躁AAA片李宗瑞| 欧亚不卡| 天天综合~91| 久久性爱精品一区| 五月天春色激情网| 蜜汁欧美| 日本视频一区二区三区| 日产国产精品中文久久婷婷| 五月天婷婷社区| 乱伦图av| 无码视频一区二区| 人妻二区| 超碰调教97| 久久精品国产亚洲粉嫩| 美国一区二区三区视频| 青青操在线亚洲视频观看欧美在线 | 亚洲精品国语在线播放| 蜜臀少妇一区二区| 国产精品一区二区麻豆| 亚洲一卡2卡3卡4卡乱码网站 | 欧美亚洲系列| 人人干人人搞人人摸| 韩国女主播青草在线| 九九九九热| 精品色色| 女人18精品一区二区三区| 亚洲精品国产专区在线观看| 美女黄页| 91人人| 五月综合激情| 91狠狠狠| 欧美日韩性爱操大逼| 亚洲欧美在线综合| 园内精品自拍视频在线播放| 超碰午夜在线| 1769国内精品视频| 久妇网| 超碰95| 日韩欧美成人大香蕉| 国产97亚洲| 亚洲日本韩国极品一区二区| 超碰97日韩| 日日干夜夜干| 日日爱99| 欧美不卡在线美女| 亚洲国产美女久久久久| 欧美|91色综合| 在线免费观看高清无码视频| 99色色网| 999精品女人| 夜夜操天| 深夜福利黄片| 天天干天天日天天射黄色片| 极品欧美一区二区三区| 九九九九九用不成了| 久操凹凸视频| 亚洲天天影视色综合| 亚洲中字慕不卡| 手机在线看片免费人成视频| 正宗无毛一线天嫩逼| 色综合色欲色综合色综合色综合| 老熟女天天操| 亚洲精品819| 国产精品人妻无码久久久老鸭窝| 色九月综合| 亚洲熟女精品| 亚洲色综网| 91九色网| 亚洲欧美日韩偷拍色图| www.高清无码诱惑一区.com| 久久久久久久伊人精品| 久操影视| 国产精品无套内谢| 99久久免费看精品国产一区| 精品久久久久久亚洲| 啪啪视频免费在线观看| 97超碰巨乳| 欧美午夜视频精品久久| 欧洲视频在线| 欧美性暴力猛交XXXX | 中文字幕AV乱伦| 青青青艹在线视频| 五月丁香综合啪啪| 国产精品不卡高清在线观看| 老熟女熟妇| 久久精品国产72国产精品福利| AV中文字幕三四五| 天堂日本亚洲欧美| 亚洲五码一区二区三区| 日本一二三免费久久| 中文字幕一二三区| 婷婷操视频| 91女优在线观看| 久99久视频精选| 日韩性爱免费观看视频| 日本不卡免费二区| 欧美超碰9798| 岛国片国产成人亚洲播放| 凹凸 69堂 在线播放| 九月丁香婷婷| 国语对白在线播放视频| 99少妇| 欧洲精品在线播放| 国产67194| 黄色免费网| 熟人人妻少妇精品久久| 国产精品经典一卡久久久| 人人摸人人叼| 好涩综合| 青草影院内射高潮| 九月丁香婷婷| 黄色电影观看久久9| 免费国产视频| 色臀aV| 粘花网06av视频| 久久色情| www.伪伪| 久久色网| 亚洲久草AV色图| 激情文学 国产一二三aV| 免费观看啪视频| 欧洲综合无码| 亚洲在线欧美| 久肏视频字幕| 99re8超碰| 五月婷丁香| 黄片aaaaa一区| 综合影院永久入口国产| 韩日欧亚a级| 日韩精彩免费| 久操不卡视频| 啪啪资源网| 少妇被c 黄 免费观看| 亚洲欧洲日韩中文字幕一区| 天美传媒AV国产在线| 乱人伦 国语对白:视频直接看| 999国产精品999| 免费?级毛片无码?∨蜜芽试看| 欧美日韩中文字幕不卡| 99在线啪| 久久久久密臀一区二区| 97二区四区| 丁香五月综合| 亚洲成?V人片在线观看福利| 久久无码一区二区二三区性色| 在线不欧美| 天天碰久久入| 久久久久久久久久久久欧美日| 91啪9色| 日韩人妻资源网| 五月激情综合网| 亚洲一区二区性爱电影| 日韩国产乱子伦App| 99久久精品无码一区二区毛片免费 | 立川理惠被中出无码| 欧洲亚洲人妻无码久久三区四区| 日韩 女同 综合| 久久久性爱视频| 久久伊人网视频一区二区三区| 欧美视频在线第3页| 亚洲中文字幕精品久久久久久直播| 无码操逼网| 日欧亚洲二三区大片不卡| 98人妻精品一区二区色欲| 天天澡天天爽日日AV| 97欧美精品| 狠狠爱夜夜| 日韩有码中文字幕女同性恋| yazhousetuoumei| 超碰性爱97| 最新亚洲风情电影| 夜夜嗨AV蜜臀av| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 香蕉国产精品麻豆亚洲欧美日韩 | 国产精品第一区第一页| 伊人国产成人av网站| 3PAV乱伦视频| 亚洲综合伊人无码久久| 99999国产| 天天爽天天操啊啊啊| 蜜臀99久久国产| 91天天综合日韩欧美| 婷婷爽人人婷婷爽视频| 大香蕉狠狠爱| 午夜精品久久一区二区| 日本黄大片在线观看视频| 91看黄片| 成人aⅴ一区二区三区| 国产乱伦性爱区| 综合操逼| 99在线观看| 人人人人人人少妇| 免费看污网站| 欧美美女后入| av草草在线电影| 久久久久久久| 91AV入口| 国产中文大片资源中文字幕| 国产真实野战在线视频| 丁香五月婷婷五月| 另类综合另类| 高跟伊人julia ann| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 亚洲综合九九| 91在线精品一区二区三区| 亚洲成a人v欧美综合天堂下载| 操逼逼一区视频| 国产女生在线| 五月丁香激情综合网| 青青草吊丝| 加勒比色综合| 大鸡巴久久| 久久伊人影院| 欧美大香蕉久| 欧美综合综合| 色综合av综合久久| 无码WWW免费视频网站| 午夜福利视频在线一区| 超碰人人妻| 欧美精品91| 大香蕉宅男伊人| 91欧美少妇| 日韩大香蕉| 欧美操逼熟女| 综合色图区| 干b在线性社区| 天天影视综合色| 日本中文字幕不卡视频| 91人妻中文| 99久久com免费视频′| 智利AV在线网| 天天网综合| 中日韩熟女| 国产精品国产自产拍高清AV| 精品中文日韩字幕视频| 97超碰色色| 操逼逼福利视频| 加勒比大香蕉视频在线| 97超碰在线资源网站| 亚洲影视综合| 天堂8在线新版官网| 日本三级韩三级99久久| 中文字幕免费观看| 美女t无毒不卡不卡| 国产精品直播在线观看直播| 欧美一区二区三区日韩| 蜜臀久久99精品久久久久免费观| 久久久一区二区| 91国产操逼视频| 久热大香蕉| 嫩草伊人久久精品| 校园春色亚洲色图| 亚洲成人久久一区二区| 色妺妺在线视频| 呻吟 欧美 日本 中出| 久久大| 国产亚洲日本精品在线| 中文字幕一区二区三区人妻少妇在线| 啊啊在线| 3d成人精品一区二区| 精品国产嫩穴视频| 亚洲图片小说欧洲| 久久性爱大全| 欧美有码激情视频一区二区三区| 久久久久久久久国产| 国产精品视频自拍在线| 最新日韩黄片| 亚洲国内精品成人不卡| 亚洲日韩av专区无码| 亚欧Av| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 97亚洲国产| 日韩图区 偷拍| 日本日日色视频| 撸无码不卡免费视频| 国产 热久久久久国产精品| 中文字幕-区二区三区四区视频中国| 欧美日韩1234| 成人在线视频网| 精品久操| 人人干人人操人人..com| 刺激精品视频| 99视频这有这里有精品| 日本丝袜美腿人妻九九| 国产精品久久泡妞网站| www.av在线观看| 日本高清熟女久久一区| 亚洲精品免费中文字幕|