午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > python基于OpenCV模板匹配識別圖片中的數字

python基于OpenCV模板匹配識別圖片中的數字

熱門標簽:400電話申請服務商選什么 千陽自動外呼系統 工廠智能電話機器人 在哪里辦理400電話號碼 平頂山外呼系統免費 江蘇客服外呼系統廠家 清遠360地圖標注方法 原裝電話機器人 西藏智能外呼系統五星服務

前言

本博客主要實現利用OpenCV的模板匹配識別圖像中的數字,然后把識別出來的數字輸出到txt文件中,如果識別失敗則輸出“讀取失敗”。

操作環境:

  • OpenCV - 4.1.0
  • Python 3.8.1

程序目標

單個數字模板:(這些單個模板是我自己直接從圖片上截取下來的)

要處理的圖片:

終端輸出:

文本輸出:

思路講解

代碼講解

首先定義兩個會用到的函數

第一個是顯示圖片的函數,這樣的話在顯示圖片的時候就比較方便了

def cv_show(name, img):
 cv2.imshow(name, img)
 cv2.waitKey(0)
 cv2.destroyAllWindows()

第二個是圖片縮放的函數

def resize(image, width=None, height=None, inter=cv2.INTER_AREA):
 dim = None
 (h, w) = image.shape[:2]
 if width is None and height is None:
  return image
 if width is None:
  r = height / float(h)
  dim = (int(w * r), height)
 else:
  r = width / float(w)
  dim = (width, int(h * r))
 resized = cv2.resize(image, dim, interpolation=inter)
 return resized

先把這個代碼貼出來,方便后面單個函數代碼的理解。

if __name__ == "__main__":
 # 存放數字模板列表
 digits = []
 # 當前運行目錄
 now_dir = os.getcwd()
 print("當前運行目錄:" + now_dir)
 numbers_address = now_dir + "\\numbers"
 load_digits()
 times = input("請輸入程序運行次數:")
 for i in range(1, int(times) + 1):
  demo(i)
 print("輸出成功,請檢查本地temp.txt文件")
 while True:
  if input("輸入小寫‘q'并回車退出") == 'q':
   break

接下來是第一個主要函數,功能是加載數字模板并進行處理。

這個函數使用到了os模塊,所以需要在開頭import os

def load_digits():
 # 加載數字模板
 path = numbers_address # 這個地方就是獲取當前運行目錄 獲取函數在主函數里面
 filename = os.listdir(path) # 獲取文件夾文件
 for file in filename:
  img = cv2.imread(numbers_address + "\\" + file) # 讀取圖片
  img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 灰度處理
  # 自動閾值二值化 把圖片處理成黑底白字
  img_temp = cv2.threshold(img_gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
  # 尋找數字輪廓
  cnt = cv2.findContours(img_temp, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)[0]
  # 獲取數字矩形輪廓
  x, y, w, h = cv2.boundingRect(cnt[0])
  # 將單個數字區域進行縮放并存到列表中以備后面使用
  digit_roi = cv2.resize(img_temp[y:y+h, x:x+w], (57, 88))
  digits.append(digit_roi)

最后一個函數是程序的重點,實現功能就是識別出數字并輸出。

不過這里把這個大函數分開兩部分來講解。

第一部分是對圖片進行處理,最終把圖片中的數字區域圈出來。

 # 這兩個都是核,參數可以改變
 rectKernel = cv2.getStructuringElement(cv2.MORPH_RECT, (25, 25))
 sqKernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
 # 這個就是讀取圖片的,可以暫時不理解
 target_path = now_dir + "\\" + "demo_" + str(index) + ".png"
 img_origin = cv2.imread(target_path)
 # 對圖片進行縮放處理
 img_origin = resize(img_origin, width=300)
 # 灰度圖
 img_gray = cv2.cvtColor(img_origin, cv2.COLOR_BGR2GRAY)
 # 高斯濾波 參數可以改變,選擇效果最好的就可以
 gaussian = cv2.GaussianBlur(img_gray, (5, 5), 1)、
 # 自動二值化處理,黑底白字
 img_temp = cv2.threshold(
  gaussian, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
 # 頂帽操作
 img_top = cv2.morphologyEx(img_temp, cv2.MORPH_TOPHAT, rectKernel)
 # sobel操作
 img_sobel_x = cv2.Sobel(img_top, cv2.CV_64F, 1, 0, ksize=7)
 img_sobel_x = cv2.convertScaleAbs(img_sobel_x)
 img_sobel_y = cv2.Sobel(img_top, cv2.CV_64F, 0, 1, ksize=7)
 img_sobel_y = cv2.convertScaleAbs(img_sobel_y)
 img_sobel_xy = cv2.addWeighted(img_sobel_x, 1, img_sobel_y, 1, 0)
 # 閉操作
 img_closed = cv2.morphologyEx(img_sobel_xy, cv2.MORPH_CLOSE, rectKernel)
 # 自動二值化
 thresh = cv2.threshold(
  img_closed, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
 # 閉操作
 img_closed = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, sqKernel)
 # 尋找數字輪廓
 cnts = cv2.findContours(
  img_closed.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)[0]
 # 輪廓排序
 (cnts, boundingBoxes) = contours.sort_contours(cnts, "top-to-bottom")
 # 存放正確數字序列(包含逗號)的輪廓,即過濾掉不需要的輪廓
 right_loc = []
 # 下面這個循環是對輪廓進行篩選,只有長寬比例大于2的才可以被添加到列表中
 # 這個比例可以根據具體情況來改變。除此之外,還可以通過輪廓周長和輪廓面積等對輪廓進行篩選
 for c in cnts:
  x, y, w, h = cv2.boundingRect(c)
  ar = w/float(h)
  if ar > 2:
   right_loc.append((x, y, w, h))

部分步驟的效果圖:

可以看到在進行完最后一次閉操作后,一串數字全部變成白色區域,這樣再進行輪廓檢測就可以框出每一行數字的大致范圍,這樣就可以縮小數字處理的范圍,可以在這些具體的區域內部對單個數字進行處理。

輪廓效果:

在這樣進行以上步驟之后,就可以確定一行數字的范圍了,下面就進行輪廓篩選把符合條件的輪廓存入列表。

注意:在代碼中使用了(cnts, boundingBoxes) = contours.sort_contours(cnts, "top-to-bottom")

這個函數的使用需要導入imutils,這個模塊具體使用方法可以瀏覽我的另一篇博客OpenCV學習筆記

函數的最后一部分就是對每個數字輪廓進行分割,取出單個數字的區域然后進行模板匹配。

for (gx, gy, gw, gh) in right_loc:
  # 用于存放識別到的數字
  digit_out = []
  # 下面兩個判斷主要是防止出現越界的情況發生,如果發生的話圖片讀取會出錯
  if (gy-10  0):
   now_gy = gy
  else:
   now_gy = gy-10
  if (gx - 10  0):
   now_gx = gx
  else:
   now_gx = gx-10
  # 選擇圖片興趣區域
  img_digit = gaussian[now_gy:gy+gh+10, now_gx:gx+gw+10]
  # 二值化處理
  img_thresh = cv2.threshold(
   img_digit, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
  # 尋找所有輪廓 找出每個數字的輪廓(包含逗號) 正確的話應該有9個輪廓
  digitCnts = cv2.findContours(
   img_thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)[0]
  # 從左到右排列輪廓
  # 這樣排列的好處是,正常情況下可以確定逗號的位置方便后面刪除逗號
  (cnts, boundingBoxes) = contours.sort_contours(digitCnts, "left-to-right")
  # cnts是元組,需要先轉換成列表,因為后面會對元素進行刪除處理
  cnts = list(cnts)
  flag = 0
  # 判斷輪廓數量是否有9個
  if len(cnts) == 9:
   # 刪除逗號位置
   del cnts[1]
   del cnts[2]
   del cnts[3]
   del cnts[4]
   # 可以在轉成元組
   cnts = tuple(cnts)
   # 存放單個數字的矩形區域
   num_roi = []
   for c in cnts:
    x, y, w, h = cv2.boundingRect(c)
    num_roi.append((x, y, w, h))
   # 對數字區域進行處理,把尺寸縮放到與數字模板相同
   # 對其進行簡單處理,方便與模板匹配,增加匹配率
   for (rx, ry, rw, rh) in num_roi:
    roi = img_digit[ry:ry+rh, rx:rx+rw]
    roi = cv2.resize(roi, (57, 88))
    # 高斯濾波
    roi = cv2.GaussianBlur(roi, (5, 5), 1)
    # 二值化
    roi = cv2.threshold(
     roi, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
    # 用于存放匹配率
    source = []
    # 遍歷數字模板
    for digitROI in digits:
     # 進行模板匹配
     res = cv2.matchTemplate(
      roi, digitROI, cv2.TM_CCOEFF_NORMED)
     max_val = cv2.minMaxLoc(res)[1]
     source.append(max_val)
    # 這個需要仔細理解 這個就是把0-9數字中匹配度最高的數字存放到列表中
    digit_out.append(str(source.index(max(source))))
   # 打印最終輸出值
   print(digit_out)
  else:
   print("讀取失敗")
   flag = 1
  # 將數字輸出到txt文本中
  t = ''
  with open(now_dir + "\\temp.txt", 'a+') as q:
   if flag == 0:
    for content in digit_out:
     t = t + str(content) + " "
    q.write(t.strip(" "))
    q.write('\n')
    t = ''
   else:
    q.write("讀取失敗")
    q.write('\n')

注意理解:digit_out.append(str(source.index(max(source))))

這個是很重要的,列表source存放模板匹配的每個數字的匹配率,求出其中最大值的索引值,因為數字模板是按照0-9排列的,索引source的匹配率也是按照0-9排列的,所以每個元素的索引值就與相匹配的數字相同。這樣的話,取得最大值的索引值就相當于取到了匹配率最高的數字。

完整代碼

from imutils import contours
import cv2
import os


def cv_show(name, img):
 cv2.imshow(name, img)
 cv2.waitKey(0)
 cv2.destroyAllWindows()


def resize(image, width=None, height=None, inter=cv2.INTER_AREA):
 dim = None
 (h, w) = image.shape[:2]
 if width is None and height is None:
  return image
 if width is None:
  r = height / float(h)
  dim = (int(w * r), height)
 else:
  r = width / float(w)
  dim = (width, int(h * r))
 resized = cv2.resize(image, dim, interpolation=inter)
 return resized


def load_digits():
 # 加載數字模板
 path = numbers_address
 filename = os.listdir(path)
 for file in filename:
  # print(file)
  img = cv2.imread(
   numbers_address + "\\" + file)
  img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  img_temp = cv2.threshold(
   img_gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
  cnt = cv2.findContours(img_temp, cv2.RETR_EXTERNAL,
        cv2.CHAIN_APPROX_NONE)[0]
  x, y, w, h = cv2.boundingRect(cnt[0])
  digit_roi = cv2.resize(img_temp[y:y+h, x:x+w], (57, 88))
  # 將數字模板存到列表中
  digits.append(digit_roi)


def demo(index):
 rectKernel = cv2.getStructuringElement(cv2.MORPH_RECT, (25, 25))
 sqKernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
 target_path = now_dir + "\\" + "demo_" + str(index) + ".png"
 img_origin = cv2.imread(target_path)
 img_origin = resize(img_origin, width=300)
 img_gray = cv2.cvtColor(img_origin, cv2.COLOR_BGR2GRAY)
 gaussian = cv2.GaussianBlur(img_gray, (5, 5), 1)
 img_temp = cv2.threshold(
  gaussian, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
 img_top = cv2.morphologyEx(img_temp, cv2.MORPH_TOPHAT, rectKernel)
 img_sobel_x = cv2.Sobel(img_top, cv2.CV_64F, 1, 0, ksize=7)
 img_sobel_x = cv2.convertScaleAbs(img_sobel_x)
 img_sobel_y = cv2.Sobel(img_top, cv2.CV_64F, 0, 1, ksize=7)
 img_sobel_y = cv2.convertScaleAbs(img_sobel_y)
 img_sobel_xy = cv2.addWeighted(img_sobel_x, 1, img_sobel_y, 1, 0)
 img_closed = cv2.morphologyEx(img_sobel_xy, cv2.MORPH_CLOSE, rectKernel)
 thresh = cv2.threshold(
  img_closed, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
 img_closed = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, sqKernel)
 cnts = cv2.findContours(
  img_closed.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)[0]
 (cnts, boundingBoxes) = contours.sort_contours(cnts, "top-to-bottom")
 draw_img = img_origin.copy()
 draw_img = cv2.drawContours(draw_img, cnts, -1, (0, 0, 255), 1)
 cv_show("666", draw_img)

 # 存放正確數字序列(包含逗號)的輪廓,即過濾掉不需要的輪廓
 right_loc = []
 for c in cnts:
  x, y, w, h = cv2.boundingRect(c)
  ar = w/float(h)
  if ar > 2:
   right_loc.append((x, y, w, h))
 for (gx, gy, gw, gh) in right_loc:
  # 用于存放識別到的數字
  digit_out = []
  if (gy-10  0):
   now_gy = gy
  else:
   now_gy = gy-10
  if (gx - 10  0):
   now_gx = gx
  else:
   now_gx = gx-10
  img_digit = gaussian[now_gy:gy+gh+10, now_gx:gx+gw+10]
  # 二值化處理
  img_thresh = cv2.threshold(
   img_digit, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
  # 尋找輪廓 找出每個數字的輪廓(包含逗號) 正確的話應該有9個輪廓
  digitCnts = cv2.findContours(
   img_thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)[0]
  # 從左到右排列
  (cnts, boundingBoxes) = contours.sort_contours(digitCnts, "left-to-right")
  cnts = list(cnts)
  flag = 0
  if len(cnts) == 9:
   del cnts[1]
   del cnts[2]
   del cnts[3]
   del cnts[4]
   cnts = tuple(cnts)
   num_roi = []
   for c in cnts:
    x, y, w, h = cv2.boundingRect(c)
    num_roi.append((x, y, w, h))
   for (rx, ry, rw, rh) in num_roi:
    roi = img_digit[ry:ry+rh, rx:rx+rw]
    roi = cv2.resize(roi, (57, 88))
    roi = cv2.GaussianBlur(roi, (5, 5), 1)
    roi = cv2.threshold(
     roi, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
    source = []
    for digitROI in digits:
     res = cv2.matchTemplate(
      roi, digitROI, cv2.TM_CCOEFF_NORMED)
     max_val = cv2.minMaxLoc(res)[1]
     source.append(max_val)
    digit_out.append(str(source.index(max(source))))
   cv2.rectangle(img_origin, (gx-5, gy-5),
       (gx+gw+5, gy+gh+5), (0, 0, 255), 1)
   print(digit_out)
  else:
   print("讀取失敗")
   flag = 1
  t = ''
  with open(now_dir + "\\temp.txt", 'a+') as q:
   if flag == 0:
    for content in digit_out:
     t = t + str(content) + " "
    q.write(t.strip(" "))
    q.write('\n')
    t = ''
   else:
    q.write("讀取失敗")
    q.write('\n')


if __name__ == "__main__":
 # 存放數字模板列表
 digits = []
 # 當前運行目錄
 now_dir = os.getcwd()
 print("當前運行目錄:" + now_dir)
 numbers_address = now_dir + "\\numbers"
 load_digits()
 times = input("請輸入程序運行次數:")
 for i in range(1, int(times) + 1):
  demo(i)
 print("輸出成功,請檢查本地temp.txt文件")
 cv2.waitKey(0)
 cv2.destroyAllWindows()
 while True:
  if input("輸入小寫‘q'并回車退出") == 'q':
   break

整個文件下載地址:https://wwe.lanzous.com/iLSDunf850b

注意:如果想同時識別多個圖片話,需要將圖片統一改名為“demo_ + 數字序號.png” 例如:demo_1.png demo_2.png 同時在運行代碼時輸入圖片個數即可。

總結

這個程序代碼相對來說不算復雜,主要是對圖像的一些基礎處理需要注意。因為不同的圖像想要識別成功需要進行不同程度的基礎處理,所以在做的時候可以多輸出幾張圖片檢查一下那一步效果不太好并及時進行修改調整,這樣才能達到最終比較好的效果。

以上就是python基于OpenCV模板匹配識別圖片中的數字的詳細內容,更多關于python 識別圖片中的數字的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • opencv-python圖像配準(匹配和疊加)的實現
  • Opencv Python實現兩幅圖像匹配
  • Python使用Opencv實現圖像特征檢測與匹配的方法
  • Python和OpenCV進行多尺度模板匹配實現
  • OpenCV-Python模板匹配人眼的實例
  • OpenCV-Python實現多模板匹配
  • Python開發之基于模板匹配的信用卡數字識別功能
  • Python+Opencv實現圖像匹配功能(模板匹配)

標簽:西安 安慶 錦州 隨州 股票 天水 日照 白城

巨人網絡通訊聲明:本文標題《python基于OpenCV模板匹配識別圖片中的數字》,本文關鍵詞  python,基于,OpenCV,模板,匹配,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python基于OpenCV模板匹配識別圖片中的數字》相關的同類信息!
  • 本頁收集關于python基于OpenCV模板匹配識別圖片中的數字的相關信息資訊供網民參考!
  • 推薦文章
    91蜜桃网址入口| 亚洲级视频在线观看免费1级| 久久久国产精品视频| 中文字幕第80页| 国产成人aaa| 国产视频精品一区二区三区| 国产精品美女主播| 欧美午夜性生活| 久久精品72免费观看| 噜噜噜久久,亚洲精品国产品| 国产日韩在线观看一区| 欧美一级成年大片在线观看| 日本大片免费看| 91资源在线视频| 色综合天天性综合| 日韩视频免费观看高清完整版在线观看 | 国产欧美一区在线| 亚洲精品99久久久久中文字幕| 国产精品成人一区二区三区吃奶| 亚洲爆乳无码专区| 激情欧美日韩一区二区| 九一久久久久久| xxxxx成人.com| 国产这里有精品| 国产精品午夜免费| 性欧美激情精品| 中文字幕一区日韩电影| 国产九九热视频| av男人天堂一区| 日本成人在线不卡| 色av成人天堂桃色av| 岛国精品资源网站| 精品999在线播放| 日日躁夜夜躁aaaabbbb| www成人在线| 欧美视频在线观看免费| 国产91在线亚洲| 中文字幕永久免费| www.xxxx国产| 久久66热这里只有精品| 高潮毛片7777777毛片| 美女啪啪无遮挡免费久久网站| 人妻av一区二区| 九九热国产精品视频| 精品视频偷偷看在线观看| 午夜精品一区二区三区视频| 成人黄色短视频在线观看 | 91国产精品91| 成人久久视频在线观看| 茄子视频成人在线观看 | …久久精品99久久香蕉国产| 中国一区二区三区| 婷婷中文字幕一区三区| 久久精品国产精品亚洲精品色| 国产精品99久久久久久久女警| 你懂的视频在线一区二区| 国产中文字幕视频在线观看| 欧美国产丝袜视频| 国产男女无遮挡猛进猛出| 久久久久久久一区二区三区| 久久久五月婷婷| 欧美激情久久久久久久| 欧美专区中文字幕| 亚洲 小说区 图片区 都市| 欧美日韩午夜在线视频| 日本 片 成人 在线| 亚洲成人久久影院| 亚洲一区二区三区在线视频| 88av在线播放| 一本一本久久a久久精品牛牛影视| 日本特级黄色片| 亚洲精品久久久一区二区三区| 亚洲熟女乱综合一区二区三区| 日本成人中文字幕在线视频| 中文字幕av日韩| 国产无套内射又大又猛又粗又爽| 欧美日韩在线高清| 日韩电影视频免费| 激情欧美日韩一区二区| 三级一区二区三区| 国产精品中文字幕欧美| 国产黑丝一区二区| 91在线视频在线| 亚洲成年人在线| 亚洲精品一区二区三区蜜桃久 | 久久欧美一区二区| 欧美日韩国产成人高清视频| 国产91在线免费| 91久久国产综合| 国产精品国产三级国产aⅴ原创 | 欧美日韩ab片| 日韩一本精品| 精品久久久久久久久久久久久久久久 | 91精品国产手机| 中文字幕日韩一区二区三区 | 亚洲成年人影院在线| 中文字幕一区二区中文字幕| 久操视频免费在线观看| 亚洲第一主播视频| 国产成人精品视| 精品一区二区在线观看视频| 粉嫩一区二区三区性色av| 久久国产天堂福利天堂| 极品白嫩的小少妇| 国产日韩欧美高清在线| 伦理中文字幕亚洲| 欧美在线a视频| 福利网址在线观看| 精品在线亚洲视频| 国内精品一区二区三区| 国产在线综合视频| 国产精品麻豆久久久| 久久久久一本一区二区青青蜜月| 国产女主播喷水高潮网红在线| 亚洲码国产岛国毛片在线| 国产精品久久久久久中文字| 小早川怜子久久精品中文字幕| 中文字幕一区av| 成人免费xxxxx在线观看| 久草免费资源站| av动漫一区二区| 国产精品美女免费| 成人小视频在线播放| 亚洲激情在线观看| 日韩人妻一区二区三区| 久久久国产综合精品女国产盗摄| 国产精品美女久久| 亚洲综合久久av一区二区三区| 国产精品大尺度| 国产精品视频二| 性xxxx视频| 国产色综合天天综合网| 亚洲欧美另类在线视频| 久久久久久久久久av| 三级网站在线播放| 一区二区三区在线播放欧美| 久久精品久久99| 亚洲国产精品久久不卡毛片| 亚洲一卡二卡三卡| 91视视频在线直接观看在线看网页在线看 | 国产又黄又爽又无遮挡| 7777精品伊人久久久大香线蕉经典版下载 | 99se婷婷在线视频观看| 久久成人久久鬼色| 国产在线欧美日韩| 精品综合久久久久久8888| 国产精品色悠悠| 成人va在线观看| 久久夜精品香蕉| 久久久久成人精品无码| 亚洲娇小xxxx欧美娇小| 天堂av网手机版| 日韩欧美在线123| 欧美三级在线免费观看| 欧美日本高清视频| 成人av无码一区二区三区| 隔壁老王国产在线精品| 精品欧美一区二区精品少妇| 国产欧洲精品视频| 奇米影视7777精品一区二区| 日韩在线第一区| 亚洲日本va午夜在线影院| 欧美深夜福利视频| 欧美日韩高清在线| mm131丰满少妇人体欣赏图| 欧美区一区二区三区| 久久久久亚洲av无码专区首jn| 精品久久久久久久中文字幕| 国产91丝袜美女在线播放| 日韩h在线观看| 国产又粗又大又黄| 国产精品美女久久| 久久久久9999亚洲精品| 日韩一级免费片| 日韩午夜激情av| 亚洲一级生活片| 成人黄色中文字幕| 久久女同精品一区二区| 天天操天天操天天| 日本学生初尝黑人巨免费视频| 国产婷婷色一区二区三区| 黄色一级大片免费| 欧美高清一级片在线观看| 疯狂试爱三2浴室激情视频| 成人精品小蝌蚪| 好吊色这里只有精品| 亚洲欧洲成人精品av97| 国产a级片视频| 影音先锋欧美精品| 久久99精品久久久久久国产越南| 国产91免费看| 青春草在线视频免费观看| 日韩毛片精品高清免费| 国产乱了高清露脸对白| 国产精品专区一| 色婷婷综合久久久久中文一区二区 | 日韩视频一区二区三区| 亚洲国产精品无码久久久| 成人免费午夜电影| 欧美另类极品videosbest最新版本| 成人免费电影视频| 青青青在线视频| 国产亚洲在线播放| 永久免费看片直接| 国产在线播放一区二区| 中文字幕精品一区久久久久| 中文字幕日本欧美| 色婷婷一区二区| 国内精品视频666| 精品欧美一区二区久久久| 欧美日韩电影一区二区三区| 精品在线观看国产| 亚洲精品日日夜夜| 日本免费网站在线观看| 久久人人爽人人人人片| 成人免费激情视频| 亚洲精品视频在线观看视频| 亚洲乱码国产乱码精品精98午夜| 国产99免费视频| 伊人成人222| 91啪国产在线| 日韩亚洲欧美综合| jiyouzz国产精品久久| 久久r这里只有精品| 91免费视频网站在线观看| 国产精品视频区1| www.日韩欧美| 1024成人网| 国产成人免费视频网站高清观看视频 | 欧美视频在线第一页| 日韩亚洲第一页| 欧美视频中文字幕在线| 国产综合色在线| 色av性av丰满av| 国产av无码专区亚洲av毛网站| 色之综合天天综合色天天棕色| 国产在线观看精品一区二区三区| 欧美亚洲自拍偷拍| 亚洲国产精品一区二区第一页| 亚洲欧美日韩国产另类专区 | 国内精品小视频| 在线视频你懂得一区| 国产一区二区不卡老阿姨| 日韩成人免费在线观看| 欧美 日韩 国产在线观看| 日韩一区不卡| 国产97免费视| www.xxxx欧美| 亚洲欧美国产视频| 欧美日韩国产免费| 香蕉影视欧美成人| 国产精品 欧美精品| 免费日韩一级片| 欧美亚洲日本一区二区三区| 久久国产日韩欧美| 97超碰国产精品女人人人爽 | 欧美mv日韩mv| 色老汉av一区二区三区| 久久日韩精品一区二区五区| 国产91丝袜在线播放九色| 精品一区二区三区视频在线观看| 欧美一区二区在线观看视频| 六月婷婷综合网| av观看在线免费| 精品处破女学生| 黄色片视频网站| 日韩在线视频不卡| 成人av网站在线播放| 亚洲国产精品一区二区久久hs| 亚洲自拍第三页| 亚洲女则毛耸耸bbw| www.99在线| 六月丁香婷婷在线| 三级网站免费看| 黄色录像a级片| 国产sm调教视频| 日韩av一二三区| 日韩美女毛茸茸| 精品一区二区电影| 日韩欧美电影在线| 国产午夜精品全部视频在线播放| 精品国产一区二区三区久久久| 亚洲第一免费网站| 欧美激情免费观看| 国产成人精品久久亚洲高清不卡| 欧美精品久久久久a| 韩国福利视频一区| 春色成人在线视频| 中文字幕免费高| 亚洲一级片网站| 国产精品熟女一区二区不卡| 18精品爽国产三级网站| 成年人网站在线观看视频| 青青草原在线免费观看| www.成人精品| 亚洲国产成人在线| 欧美视频在线观看免费网址| 在线看片第一页欧美| 国产+成+人+亚洲欧洲| 99久久伊人精品影院| 国产香蕉一区二区三区| aaaaaav| 99在线小视频| 国产精品18久久久久久vr| 亚洲欧洲日产国码二区| 日本精品视频一区二区三区| 欧美一区午夜精品| 国产精品日韩电影| 视频一区二区三| 成人精品小视频| 亚洲毛片亚洲毛片亚洲毛片| 亚洲国产综合网| 精品免费在线视频| 久久亚洲国产精品| 手机成人av在线| 少妇一级黄色片| 精品在线播放午夜| 日韩一区二区免费在线观看| 欧美大片免费看| 狠狠色综合一区二区| 鲁一鲁一鲁一鲁一av| 可以直接看的黄色网址| 成人av在线网站| 夜夜嗨av色一区二区不卡| 91文字幕巨乱亚洲香蕉| 狠狠爱免费视频| 精品久久免费视频| 国产精品久久久久久久久久久免费看 | 永久免费看mv网站入口78| 婷婷五月综合激情| 欧美日韩国产首页| 精品一区二区三区国产| 呻吟揉丰满对白91乃国产区| 伊人国产在线观看| 人人妻人人澡人人爽人人欧美一区 | 久久久久五月天| 日韩精品――色哟哟| 国产在线不卡一区| 亚洲欧洲午夜一线一品| 色噜噜色狠狠狠狠狠综合色一 | 中文国产成人精品| 亚洲va久久久噜噜噜久久狠狠 | 国产一区二区三区美女| 欧美熟乱第一页| 久久久久一区二区| 日韩精品视频播放| 亚洲高清视频在线| 国产三区二区一区久久| 一区二区三区影视| www精品美女久久久tv| 欧美精品久久久久久久| 久久久久亚洲AV成人网人人小说| 国产一区福利在线| 亚洲国产精品久久| 青春草在线视频免费观看| 香蕉影院在线观看| 亚洲成人免费视| 动漫3d精品一区二区三区| 影音先锋在线国产| 日韩欧美国产一区二区三区| 亚洲欧洲精品一区二区| 日韩在线一区二区三区四区| www.亚洲男人天堂| 短视频在线观看| 国产精品国产精品国产专区不蜜| 久久99视频精品| 毛片aaaaaa| 欧美日韩中文精品| 加勒比成人在线| 久久er精品视频| 欧美激情一区二区三区在线视频观看 | 中文字幕日韩有码| 中文字幕人妻一区| 亚洲一区二区三区小说| 久99久视频| 午夜av免费观看| 欧美又大粗又爽又黄大片视频| 欧美做爰啪啪xxxⅹ性| 国产精品久久久久桃色tv| 国产精品色悠悠| 亚洲系列在线观看| 日韩精品在线播放| 日本免费www| 亚洲精品99久久久久| 白嫩情侣偷拍呻吟刺激| 色哦色哦哦色天天综合| 992kp免费看片| 激情懂色av一区av二区av| 中文字幕超清在线免费观看| 天堂在线视频免费观看| 国产欧美精品日韩精品| 涩涩视频免费看| 欧美在线观看一区二区三区| 久久机热这里只有精品| 中文日韩电影网站| 色老板免费视频| 亚洲欧美中文日韩在线v日本| 欧美成人三级视频| 亚洲福利精品在线| 91精品一区二区三区蜜桃| 色偷偷av亚洲男人的天堂| 偷偷操不一样的久久| 日韩在线免费av| 亚洲图片小说视频| 成人写真福利网| 国产成人av一区二区三区在线观看| 色99中文字幕| 一二三四社区欧美黄| 六月婷婷七月丁香| 欧美黑人xxx|