久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

python利用opencv如何實現答題卡自動判卷

瀏覽:111日期:2022-07-28 11:12:02
目錄1、設定答題卡模板2、讀取答題卡圖像并對圖像進行灰度化處理3、高斯模糊圖像去噪點4、使用大津法二值分割圖像5、使用開運算去噪點6、使用canny邊緣檢測算法7、篩選答題區域輪廓,透視變換矯正目標區域使用攝像頭實時判卷部分總結1、設定答題卡模板

該圖像為答題卡的答題區域,黑色邊框是為了能夠在各種環境中輕易的檢測,左部分和上部分的黑色矩形,是為能夠定位到答題選項的坐標而設置,同時題目數量為20×3共60道選擇題,在進行批改試卷之前,需要手動輸入該次考試的正確答案作為模板來對識別的內容進行比較判分。

python利用opencv如何實現答題卡自動判卷

2、讀取答題卡圖像并對圖像進行灰度化處理

python利用opencv如何實現答題卡自動判卷

# 最大值法求圖像灰度值def graying(image): h, w = image.shape[0], image.shape[1] gray = np.zeros((h, w), np.uint8) for i in range(h):for j in range(w): gray[i, j] = max(image[i,j][0], image[i,j][1], image[i,j][2]) return gray3、高斯模糊圖像去噪點

python利用opencv如何實現答題卡自動判卷

gray = cv2.GaussianBlur(gray, (3, 3), 0)4、使用大津法二值分割圖像

經過上一步操作后,答題卡的前背景分明,已經能夠輕易將標識矩陣和答題區域涂改信息和背景分離開來,接下來需要將圖像的標識矩陣和答題區域的涂改信息提取出來,需要進一步規劃數字圖像信息,二值化圖像能使圖像的數據量大大減少,既保留原有的數字信息,又能將無用的數據舍去,將原本數值范圍為0-255的圖像信息分割成像素值為0或255的二值圖像,在這里0值代表背景,無用且不需要處理的信息,255表示目標信息(標識矩陣和答題區域的涂改信息),其算法原理非常簡單,圖像中像素值大于閾值時為255,小于閾值時為0。在二值化時,需要確定一個閾值,而這個閾值人為來定義是無法隨著環境變換隨時處于最優狀態,在這里我們使用1979年由學者大津提出的對圖像分割的高效算法來處理。大津法算法原理:

有假設如下:

u: 圖像像素值平均值 g: 圖像類間方差 w0: 圖像背景像素點數占圖像的比例 u0: 圖像背景像素點的平均值 w1: 圖像前景像素點數占圖像的比例 u1: 圖像前景像素點的平均值

算法公式為:

python利用opencv如何實現答題卡自動判卷

將第一個公式代入第二個得:

python利用opencv如何實現答題卡自動判卷

5、使用開運算去噪點

此時已經得到較為完美的預處理圖,但是不難發現,我們答題卡有一小塊干擾像素。在實際情況中,這種干擾信息是有可能出現的,且大小與清晰度并沒有固定范圍,因此,在判卷之前,需要盡可能的將這種干擾信息去除,前面的各種圖像預處理方法僅僅是將圖像的前景和背景分離提取出定位標識信息和涂改信息,面對這樣的情況,選擇使用機器視覺中

常用的開運算方法處理圖像可以得到較好的效果。

python利用opencv如何實現答題卡自動判卷

開運算:先對圖像進行腐蝕操作,再進行膨脹操作,就是開運算操作,能夠消除細小的物體,將兩個物體的細小的連接處去除從而分離兩個物體,且擁有平滑邊界的效果,被廣泛應用于去除圖像噪聲。

腐蝕算法原理:

步驟1:定義一個卷積核B,卷積核可以是隨意的大小與形狀,但通常是帶參考點的正方形或圓形,作為腐蝕的模板。

步驟2:將卷積核與原圖像進行卷積操作,計算原圖像包裹卷積核B的區域的像素最小值,這個區域則作為腐蝕操作后的結果。

例如有原圖像A,卷積核B

python利用opencv如何實現答題卡自動判卷

則經過腐蝕算法操作之后可得實驗結果為如下:

python利用opencv如何實現答題卡自動判卷

實驗發現,右上角的小塊圖像噪聲被腐蝕掉了,同時,下方的像素塊被腐蝕了一圈且兩塊被分割開來,為了盡量減少圖像的信息被過度腐蝕掉,接下來一步需要使用膨脹算法,將圖像像素膨脹回來,盡可能去掉圖像噪聲的同時,也減少圖像信息的過度減少。

膨脹算法原理:

步驟1:定義一個卷積核B,開運算時直接使用腐蝕操作時使用的卷積核B。

步驟2:將卷積核B與原圖像進行卷積操作,計算原圖像包裹卷積核B的區域的像素最大值,這個區域則作為膨脹操作后的結果。使用腐蝕操作后的結果來進行膨脹操作,實驗效果如下:

python利用opencv如何實現答題卡自動判卷

觀察開運算操作的前后對比,可以得知,右上角的噪聲完全去除的同時,與原圖像信息相比較,僅僅有五個像素點被去除,是完全可以接受的。

開運算操作實際實驗效果如下:

python利用opencv如何實現答題卡自動判卷

步驟進行到這,發現右下角那塊較大的圖像噪聲,仍舊無法消除,主要原因是該噪聲較大,形狀大小與顏色深度與目標信息相似,在準確保留目標信息的情況下難以將其分割開來,因此接下來選擇通過定位圖像信息來排除該圖像噪聲,對其不進行操作。

代碼網上找的,忘記從哪抄的了,百度一下都有。。。

# 圖像腐蝕def etch(img, size): h=img.shape[0] w=img.shape[1] img1=np.zeros((h,w),np.uint8) for i in range (1,h-1):for j in range (1,w-1): min=img[i,j] for k in range (i-size,i+size):for l in range (j-size,j+size): if k<0|k>=h-1|l<0|l>=w-1:continue if img[k,l]<min:min=img[k,l] img1[i,j]=min return img1# 圖像膨脹def expand(img, size): h=img.shape[0] w=img.shape[1] img1=np.zeros((h,w),np.uint8) for i in range (1,h-1):for j in range (1,w-1): max=img[i,j] for k in range (i-size,i+size):for l in range (j-size,j+size): if k<0|k>=h-1|l<0|l>=w-1:continue if img[k,l]>max: max=img[k,l] img1[i,j]=max return img1# 開運算def opening(image, size): etch_img = etch(image, size) expand_img = expand(etch_img, size) return expand_img6、使用canny邊緣檢測算法

canny邊緣檢測算法是一種運用非常廣泛的算法,由john F.Canny在1986年提出的,一種多階段的算法:

步驟1:對圖像進行去噪

步驟2:計算圖像的強度梯度

步驟3:在邊緣上進行非極大值抑制

步驟4:對檢測得到的邊緣使用雙閾值排查

步驟5:分析邊緣之間的連接

通過這一系列的操作后便可得到圖像內容里的邊緣信息,我們前面已經對圖像進行了深度的去噪操作,已經將大部分噪音完全清除,接下來的操作應該是區分定位區域和判卷區域的坐標,來對其進行判斷處理,這一步只是為了觀察圖像的邊緣信息,屬于測試步驟,在實際的運用中,并不會使用該步驟來處理圖像。

實驗結果如下:

python利用opencv如何實現答題卡自動判卷

7、篩選答題區域輪廓,透視變換矯正目標區域

通過輪廓檢測可以計算多邊形的外界,在這里我們需要檢測出答題卡涂改區域的黑色邊框位置,定位得到邊框的四個頂點坐標,再對目標進行透視矯正操作。到這一步驟,已經得到矯正后的答題區域,接下來需要對圖像的答題區域進行定位判斷。

具體實驗效果如下:

python利用opencv如何實現答題卡自動判卷

# 透視變換from imutils.perspective import four_point_transformdef wPs(image, points): warped = four_point_transform(image, points) return warped

python利用opencv如何實現答題卡自動判卷

最后判斷黑色集中的地方就可以判斷選項了

python利用opencv如何實現答題卡自動判卷

使用攝像頭實時判卷部分

調用攝像頭部分的處理方式是對圖像處理里使用的方法的一個總和。最終該系統的實時判卷,準確率達到百分之百,并且是在環境較差的的情況下進行判卷。

python利用opencv如何實現答題卡自動判卷

python利用opencv如何實現答題卡自動判卷

python利用opencv如何實現答題卡自動判卷

全部代碼如下

import cv2import numpy as np# 選取區域去除邊緣dist = 5# 畫圖線粗度line_w = 2# 畫筆顏色red = (0, 0, 255)green = (0, 255, 0)blue = (255, 0, 0)# 高斯模糊算法#防止顏色值超出顏色取值范圍(0-255)# 開運算,先腐蝕,后膨脹# 圖像腐蝕def etch(img, size): h=img.shape[0] w=img.shape[1] img1=np.zeros((h,w),np.uint8) for i in range (1,h-1):for j in range (1,w-1): min=img[i,j] for k in range (i-size,i+size):for l in range (j-size,j+size): if k<0|k>=h-1|l<0|l>=w-1:continue if img[k,l]<min:min=img[k,l] img1[i,j]=min return img1# 圖像膨脹def expand(img, size): h=img.shape[0] w=img.shape[1] img1=np.zeros((h,w),np.uint8) for i in range (1,h-1):for j in range (1,w-1): max=img[i,j] for k in range (i-size,i+size):for l in range (j-size,j+size): if k<0|k>=h-1|l<0|l>=w-1:continue if img[k,l]>max: max=img[k,l] img1[i,j]=max return img1# 開運算def opening(image, size): etch_img = etch(image, size) expand_img = expand(etch_img, size) return expand_img# 最大值法求圖像灰度值def graying(image): h, w = image.shape[0], image.shape[1] gray = np.zeros((h, w), np.uint8) for i in range(h):for j in range(w): gray[i, j] = max(image[i,j][0], image[i,j][1], image[i,j][2]) return gray# OTSU# 二值化def otsu(img): h=img.shape[0] w=img.shape[1] m=h*w otsuimg=np.zeros((h,w),np.uint8) threshold_max=threshold=0 histogram=np.zeros(256,np.int32) probability=np.zeros(256,np.float32) for i in range(h):for j in range(w): s=img[i,j] histogram[s]+=1 for k in range(256):probability[k]=histogram[k]/m for i in range(255):w0 = w1 = 0fgs = bgs = 0for j in range (256): if j<=i:w0+=probability[j]fgs+=j*probability[j] else:w1+=probability[j]bgs+=j*probability[j]u0=fgs/w0u1=bgs/w1g=w0*w1*(u0-u1)**2if g>=threshold_max: threshold_max=g threshold=i for i in range (h):for j in range (w): if img[i,j]<threshold:otsuimg[i,j]=255 else:otsuimg[i,j]=0 return otsuimg# 透視變換from imutils.perspective import four_point_transformdef wPs(image, points): warped = four_point_transform(image, points) return warped# 輪廓檢測函數def find_contour(image): contours = cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[0] return contours# 冒泡排序def bubble_sort(lists, type): ’’’ :param lists: 排序列表 :param type: 排序類型 :return: 排序結果 ’’’ count = len(lists) for i in range(0, count):xi, yi = cv2.boundingRect(lists[i])[0], cv2.boundingRect(lists[i])[1]for j in range(i + 1, count): xj, yj = cv2.boundingRect(lists[j])[0], cv2.boundingRect(lists[j])[1] if type == 'title':if yi > yj: lists[i], lists[j] = lists[j], lists[i] elif type == 'answer':if xi > xj: lists[i], lists[j] = lists[j], lists[i] else:return print('排序出錯') return lists#統計結果def count(roi): ’’’ :param roi: 答題選項區域 :return: 選擇結果 ’’’ grade = 0 long = roi.shape[1] / 8 contour = find_contour(roi) if len(contour) == 0:return 0 elif len(contour) >= 2:return -2 for c in contour:perimeter = cv2.arcLength(c, True)if perimeter > 5: x = cv2.boundingRect(c)[0] if x < long:grade = 1 elif x < long*3:grade = 2 elif x < long*5:grade = 3 else:grade = 4 return grade# 輪廓檢測處理def contours(img, dst): ’’’ :param img: 查看效果圖像 :param dst: 輪廓檢測對象 :return: 效果圖像,輪廓檢測效果圖像,檢測結果 ’’’ img_dst = img.copy() edged = cv2.Canny(dst, 10, 100) img_cnts = find_contour(edged) # 如果未檢測到輪廓則退出 c_len = len(img_cnts) if c_len == 0:print('error:No find contours!')return img, dst # 畫出所有輪廓 ## 得到答題區域 pt = None for c in img_cnts:cv2.drawContours(img, [c], -1, red, line_w)perimeter = cv2.arcLength(c, True)if perimeter < 40: continueapprox = cv2.approxPolyDP(c, 0.02*perimeter, True)if len(approx) == 4: pt = approxhull = cv2.convexHull(c)cv2.polylines(img, [hull], True, green, line_w) pt = pt.reshape(4,2) # 透視變換 img_dst = wPs(img_dst, pt) dst = wPs(dst, pt) img_dst = img_dst[dist:img_dst.shape[0]-dist,dist:img_dst.shape[1]-dist] dst = dst[dist:dst.shape[0]-dist,dist:dst.shape[1]-dist] # 處理答題卡答題區域部分 contours_roi = find_contour(dst) title, answer = [], [] for c in contours_roi:x, y, w, h = cv2.boundingRect(c)if x >= dist and y <= dist: answer.append(c)if x < dist and y > dist: title.append(c) # 冒泡排序 title = bubble_sort(title, 'title') answer = bubble_sort(answer, 'answer') # 判卷 result = np.zeros(60, dtype=np.int8) for title_number in range(60):miny = cv2.boundingRect(title[title_number%20])[1]x, y, w, h = cv2.boundingRect(answer[int(title_number/20+1)*4-1])x1= cv2.boundingRect(answer[int(title_number/20+1)*4-4])[0]maxx, maxy = x+w, miny+hcv2.rectangle(img_dst, (x1, miny), (maxx, maxy), blue, line_w)roi = dst[miny:maxy, x1:maxx]grade = count(roi)result[title_number] = gradeprint('title'+str(title_number+1)+':',grade) return img, img_dst, resultdef new_contours(img_dst, aim_otsu): ’’’ :param img_dst: 查看效果圖像 :param aim_otsu: 答題卡區域 :return: 效果圖像, 識別結果 ’’’ # 處理答題卡答題區域部分 contours_roi = find_contour(aim_otsu) title, answer = [], [] for c in contours_roi:x, y, w, h = cv2.boundingRect(c)if x >= dist and y <= dist: answer.append(c)if x < dist and y > dist: title.append(c) # 冒泡排序 title = bubble_sort(title, 'title') answer = bubble_sort(answer, 'answer') # 判卷 result = np.zeros(60, dtype=np.int8) for title_number in range(60):miny = cv2.boundingRect(title[title_number % 20])[1]x, y, w, h = cv2.boundingRect(answer[int(title_number / 20 + 1) * 4 - 1])x1 = cv2.boundingRect(answer[int(title_number / 20 + 1) * 4 - 4])[0]maxx, maxy = x + w, miny + hcv2.rectangle(img_dst, (x1, miny), (maxx, maxy), blue, 1)roi = aim_otsu[miny:maxy, x1:maxx]grade = count(roi)result[title_number] = grade return img_dst, result# 主要步驟def run(img): ’’’ :param img: 可操作的原圖像 :return: 預處理后的圖像 ’’’ print('image.shape:', img.shape) # 最小值法求圖像灰度值 gray = graying(img) # 二值分割大津法 thresh = otsu(gray) img_open = opening(thresh, 1) return img_openfrom PIL import Image, ImageDraw, ImageFontfont_china = ImageFont.truetype(’simhei.ttf’, 40, encoding='utf-8')def ChinaToImage(image, str, color): ’’’ :param image: 原圖像 :param str: 需要寫的字 :param color:畫筆顏色 :return:寫完字的圖像 ’’’ img_PIL = Image.fromarray(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)) draw = ImageDraw.Draw(img_PIL) draw.text((20, 20), str, color,font=font_china) return cv2.cvtColor(np.asarray(img_PIL),cv2.COLOR_RGB2BGR)# 提示是否可以開始函數def hint(image, b): ’’’ :param image: 攝像頭畫面 :param b: 提示是否可以批卷 :return: 返回寫入提示的畫面 ’’’ str_s = ’按下Esc退出!n按下空格開始!’ str_e = ’按下Esc退出!n請調整好角度!’ if b:image = ChinaToImage(image, str_s, green) else:image = ChinaToImage(image, str_e, red) return image# 查找答題卡輪廓,提示是否可以開始def star_bool(image): ’’’ :param image: 攝像頭畫面 :return: 是否可以開始批卷 ’’’ image_gray = graying(image) edged = cv2.Canny(image_gray, 10, 100) con = find_contour(edged) b = False points = None for c in con:cv2.drawContours(image, [c], -1, red, line_w)perimeter = cv2.arcLength(c, True)w, h = cv2.minAreaRect(c)[1]if w == 0 or h == 0 or w/h < 0.6: continueif perimeter < 200: continueapprox = cv2.approxPolyDP(c, 0.02 * perimeter, True)if len(approx) != 4: continueb = Truepoints = approxhull = cv2.convexHull(c)cv2.polylines(image, [hull], True, green, line_w) aim_c = None aim_otsu = None if b:try: points = points.reshape(4, 2) aim = wPs(image_gray, points) aim_c = wPs(image, points) aim = aim[dist:aim.shape[0] - dist, dist:aim.shape[1] - dist] aim_c = aim_c[dist:aim_c.shape[0] - dist, dist:aim_c.shape[1] - dist] aim_otsu = otsu(aim) cv2.imshow(’aim_otsu’, aim_otsu)except: print(’角度誤差大!’) return b, aim_c, aim_otsu# 批改函數def correct(model_answer, result): ’’’ :param model_answer: 該試卷正確答案 :param result: 識別答案 :return: 顯示批卷結果,顯示效果,可檢測對象 ’’’ if len(model_answer) != 60:print(’答案模板數量不對!n請重新設置答案。’)return 0 # 成績 grade = {’score’:0, ’no choice’:0, ’mul’:0} no_choice_number = [] mul_number = [] # 題的分值,topik考試基本每題兩分 cube = 2 # 計算分數 for index in range(len(model_answer)):if model_answer[index] > 4 or model_answer[index] < 1: print('答案模板有誤!n請重新設置答案。') return 0if result[index] == 0: no_choice_number.append(index+1) grade[’no choice’] += 1 continueif result[index] == -2: mul_number.append(index+1) grade[’mul’] += 1 continueif model_answer[index] == result[index]: grade[’score’] += cube # 批卷完成 print(’-’ * 70) print(’-’ * 70) print(’正確答案:n’, model_answer) print(’識別結果:n’, result) print(’-’*35) print(’分值:’, grade[’score’]) print(’-’ * 35) print(’空選數量:’, grade[’no choice’]) print(’空選題號:n’, no_choice_number) print(’-’ * 35) print(’多選數量:’, grade[’mul’]) print(’多選題號:n’, mul_number) print(’-’ * 70) print(’-’ * 70)def main(): # 該變量為本次試卷正確答案模板,需要根據試卷受到修改原本正確答案 model_answer = [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4,] cap = cv2.VideoCapture(0) cv2.namedWindow('image', 0) cv2.resizeWindow('image', 640, 480) while True:sucess, img = cap.read()img_temp = img.copy()b, aim, aim_otsu = star_bool(img_temp)img_temp = hint(img_temp, b)cv2.imshow('image', img_temp)k = cv2.waitKey(16)# Esc結束if k == 27: break# 空格按下開始elif k == 32: try:img_dst, result = new_contours(aim, aim_otsu)correct(model_answer, result)cv2.imshow(’answer_roi’, img_dst) except:print('您拍答題卡的角度誤差過大') else:if cv2.waitKey(0) == 27: breakelse: continue cap.release() cv2.destroyAllWindows()if __name__=='__main__': main()總結

到此這篇關于python利用opencv如何實現答題卡自動判卷的文章就介紹到這了,更多相關python opencv答題卡自動判卷內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国产成人精品免高潮在线观看 | 亚洲人人舔人人 | 国产最好的av国产大片 | 免费视频爱爱太爽了 | 亚洲a在线观看 | 国产精品九九久久99视频 | 成人性大片免费观看网站 | 久久成| 日日人人 | 91夜夜| 亚洲欧洲一区二区 | 欧美一二三区在线 | 精品亚洲自拍 | 日韩精品中文字幕在线播放 | 九九九色 | 亚洲这里只有精品 | 大桥未久亚洲精品久久久强制中出 | 国产日韩一区二区三免费高清 | 99久久婷婷国产精品综合 | 精品在线一区二区 | 午夜视频在线观看网站 | 古装三级在线播放 | 日本妇人成熟免费视频 | 51ⅴ精品国产91久久久久久 | 日韩一区二区成人 | 成人免费视频视频在线观看 免费 | 国产精品一区二区三区在线播放 | 国产精品久久久久久久久久久久 | 视频一区二区三区中文字幕 | a视频在线 | 美女二区 | 午夜在线观看免费 | 欧美一区二区三区黄 | 狠狠综合久久av一区二区小说 | 亚洲欧美一区二区三区在线 | 色吧久久| 亚洲精品自在在线观看 | 亚洲成人三级 | 久久一区| 久久99成人| 欧美午夜精品久久久久免费视 | 热99这里只有精品 | jlzzjlzz国产精品久久 | 成人午夜在线 | 国产精品久久久久一区二区三区 | 国产一区二区三区在线免费观看 | 亚洲国产视频精品 | 国产高清视频在线 | 欧美成人精品一区二区男人看 | 久久免费视频在线 | 一区在线观看 | 日韩亚洲| 黄色一级网站 | 日日夜夜天天 | 欧美 日韩 中文字幕 | 欧美一区二区三区视频 | 爱爱视频网站 | 精品久久久久久久久久久久久久 | 亚洲欧美精品一区二区三区 | 欧美精品国产精品 | 亚洲精品第一页 | 日韩视频精品 | 久久白虎| 色偷偷888欧美精品久久久 | 97操视频| 黄版视频在线观看 | 国产精品久久久久一区二区三区 | 国产伦精品一区二区三区照片91 | 久久国产精品99久久久久久老狼 | 国产精品一区二区在线 | 91亚洲一区 | 一区二区三区亚洲 | 日韩欧美大片在线观看 | 亚洲国产一区二 | jizzjizz亚洲中国少妇 | 精品一区二区三区四区视频 | 亚洲视频在线观看网址 | 亚洲a网| www久久久 | 国产成人精品免费 | 无码国模国产在线观看 | 中文字幕在线观看精品视频 | 国产一级黄色 | 国产亚洲精品美女久久久久久久久久 | 麻豆精品一区二区 | 波多野结衣一区在线观看 | 免费网站看v片在线a | 国产一区高清 | 国产精品午夜电影 | 一二三区在线 | 欧美乱淫 | 精品久久伊人 | 午夜精品一区二区三区在线播放 | 色综合天天综合网国产成人网 | 一区二区精品在线 | 日韩成人精品在线 | 欧美精品一区二区三区在线播放 | chinese中国真实乱对白 | 中文字幕一区二区在线观看 | 精品久久一二三区 | 婷婷色国产偷v国产偷v小说 | 国产精品亚洲一区二区三区 | 亚洲国产高清在线 | 日韩精品免费 | 蜜月久综合久久综合国产 | 一区二区三区精品 | 久久久蜜桃 | 国产一在线 | 亚洲第一中文字幕 | 欧美日韩中文字幕在线 | 国产成人av电影 | 亚洲a网 | 亚洲第一黄色 | 久久久精品一区二区三区 | 亚洲成人在线观看视频 | 日韩精品亚洲专区在线观看 | 中文字幕免费看 | 欧美一区二区三区在线看 | 中文字幕精品视频在线观看 | 久久国产精品视频 | 久久免费视频3 | 日韩在线视屏 | 欧美精品成人 | 91免费版在线看 | 精品99久久久久久 | 欧美一区二区大片 | 国产精品美女视频一区二区三区 | 色婷婷av久久久久久久 | 国产精品一区二 | 一区欧美 | 日韩亚洲 | 欧美成年视频 | 暖暖av| 在线观看免费av网 | 色av综合网 | 99免费看| 日韩高清不卡一区二区三区 | 久久中文字幕视频 | 免费成人在线网站 | 欧美激情在线播放 | av男人电影天堂 | 男人的天堂中文字幕 | 九九综合九九 | 91精品国产欧美一区二区 | 国产精品1区2区3区 中文字幕一区二区三区四区 | 国产一区二区三区免费 | av在线一区二区三区 | 久久9999久久| 亚洲综合大片69999 | 国产一区二区三区在线免费观看 | 色69av| 成人精品一区二区 | 欧美乱操| 在线播放91 | 国产亚洲精品美女久久久久久久久久 | 亚洲精品aaa | 美日一级毛片 | 一区二区三区亚洲视频 | 精品中文字幕一区二区 | 欧美久久成人 | 在线视频 亚洲 | 亚洲免费视频在线观看 | 成人福利在线观看 | 欧美精品成人 | 成人在线高清视频 | 精品国产污网站污在线观看15 | 国产精品视频一二三 | 精品欧美一区二区精品久久久 | 国产一级免费视频 | 天天干人人 | 中文字幕一区二区三区乱码图片 | 91免费影片 | 私人毛片免费高清视频 | 亚洲视频一区二区三区 | 欧美成人久久 | 蜜桃精品在线观看 | 成人精品在线观看 | 日韩在线短视频 | 91高清在线 | 久久99热精品免费观看牛牛 | 99精品久久久久久久免费看蜜月 | 在线视频 亚洲 | 亚洲男人天堂av | 亚洲精品中文字幕在线观看 | 亚洲 中文 欧美 日韩 在线观看 | 亚洲视频一区在线 | 伊人网站| 亚洲精品免费看 | www..99热| 综合二区 | 国产精品国产三级国产aⅴ无密码 | 成人精品 | 欧洲成人午夜免费大片 | 精品一区二区三区免费毛片爱 | 亚洲欧美一区二区三区在线 | 色网站在线观看 | 国产在线不卡 | 免费观看a视频 | 久久久久久亚洲精品 | 91精品久久久久久久久久久 | 在线观看亚洲视频 | 视频一区在线观看 | 亚洲三级网站 | 日本高清视频在线播放 | 国产乱码精品一区二区三区中文 | 国产精品二区一区二区aⅴ污介绍 | 亚洲久久在线 | 95香蕉视频| 一区福利 | 免费成人高清 | 国产精品久久久久久吹潮 | www.91av在线 | 成人网av | 在线精品一区二区 | 国产一区二区三区在线视频 | 超碰高清| 国产美女久久久 | 国产一区二区日韩 | 亚洲激情视频 | 欧美精品欧美极品欧美激情 | 国产精品久久久久久久久久久久冷 | 亚洲在线观看免费视频 | 中文字幕av第一页 | 久久久精品网站 | 男女啪啪无遮挡 | 日韩综合在线 | 国产精品一二区 | 欧美区在线 | 日韩精品一区二区三区视频播放 | 91免费在线播放 | 神马香蕉久久 | 成人精品免费视频 | 99久久99久久 | 中文字幕在线免费播放 | 久久久高清 | 成人小视频在线看 | 99精品欧美一区二区三区 | 91视频免费在线看 | 一区二区三区久久 | 精品久久久久国产 | 免费看片国产 | 免费在线一区二区 | 免费一区二区三区 | 欧美簧片在线 | 日韩精品视频在线观看一区二区 | 国产大奶视频 | 国产精品资源在线 | 亚洲一区二区中文字幕 | 毛片毛片毛片 | 日韩资源 | 少妇激烈床戏视频 | 久久午夜电影 | 成人精品 | 欧美黑人一级爽快片淫片高清 | 国产目拍亚洲精品99久久精品 | 精品久久一区 | 国产在线视频网 | 日韩在线播放网址 | 国产精品久久久久久久久小说 | 欧美精品在线一区二区 | 国产精品视频免费 | 日本免费视频在线观看 | 狠狠躁夜夜躁人人爽天天天天97 | av在线官网 | 亚洲一区二区三区在线 | 国产精品18久久久久久久久久久久 | 中文久久 | 精品国产一区二区三区性色av | 日韩欧美精品一区 | 求av网址| 中文字幕在线一区 | 欧美一区三区 | 一级欧美一级日韩 | 极品白嫩少妇无套内谢 | sis色中色 | 91久久九色 | 国产精品99久久免费观看 | 日韩欧美在线一区二区 | 成人在线免费观看 | 五月婷婷导航 | 亚洲乱码国产乱码精品精 | 中文字幕av一区 | 天天看天天摸天天操 | 波多野结衣一区二 | 男人的天堂一级片 | 国产精品777 | 麻豆亚洲 | 成人免费视频网站在线观看 | 亚洲成人日本 | 国产精品美女久久久久久不卡 | 人人干天天干 | 精品久久久免费视频 | av免费网站在线观看 | 日韩福利视频网 | 成人a在线视频免费观看 | 黄色片免费在线观看 | 亚洲成人av在线 | 国产一级视频 | 日本精品二区 | 农村妇女毛片精品久久久 | 成人精品久久久 | 99久久久 | 免费黄色电影在线观看 | 精品国产髙清在线看国产毛片 | 欧美色成人 | 成人精品久久久 | 日韩精品www | 日本成人在线视频网站 | 午夜免费电影 | 久久久久国产成人精品亚洲午夜 | 一区二区三区四区久久 | 黄色大片在线播放 | 人人玩人人添人人澡97 | 成人午夜精品久久久久久久蜜臀 | 日韩精品一区二区三区四区五区 | 亚洲最大av网站 | 久久人| 亚洲男人的天堂网站 | 亚洲成a人v欧美综合天堂麻豆 | 国外成人在线视频 | 精品国产乱码久久久久久1区2区 | 精品成人免费一区二区在线播放 | 亚洲免费精品网站 | 欧美片网站免费 | 三级视频在线观看 | 在线播放国产视频 | 亚洲国产中文字幕 | 91午夜精品一区二区三区 | 中字幕视频在线永久在线观看免费 | 中文字幕一区二区三区精彩视频 | 欧美日韩视频在线播放 | 日比视频网站 | 97碰碰碰免费公开在线视频 | 成人在线免费观看 | 美女又黄又免费 | 天天久久| 毛片精品 | 亚洲免费在线视频 | 国产成人午夜精品5599 | 亚洲日本国产 | 人人玩人人干 | 日本不卡一二三 | 天天操天天碰 | 中文字幕日韩一区二区 | 欧美一区二区三区在线观看 | 日韩啊啊啊 | 天天看天天做 | 国产精品久久久久久中文字 | 国产精品成人网 | 国产一区二区三区视频在线观看 | 精品一区二区三区久久久 | 成年免费视频 | 综合网视频 | 亚洲精品第一区在线观看 | 日韩精品一区二区三区在线 | 亚洲人在线观看视频 | 免费看国产片在线观看 | 国产亚洲精品久久久久久久久 | 天天干人人 | 久久精品一区视频 | 欧美国产高清 | 国产精品美女久久久久久久久久久 | 日本不卡视频 | 欧美日韩中文字幕在线 | 久久国产精品毛片 | 欧美日韩不卡在线 | √天堂在线 | 国产婷婷综合 | 亚洲人人艹| 国产精品久久久久久久久免费软件 | 成人在线一区二区三区 | 精品国产一区二区三区在线观看 | 精品国产乱码久久久久久久软件 | 国产猛男猛女超爽免费视频网站 | 欧美高清成人 | 久久精品久久精品 | 91短视频版在线观看www免费 | 少妇久久久| 国产不卡免费视频 | 91在线最新 | 欧美中文在线 | 九九久久久| 成人国产精品久久 | av免费在线播放 | 欧美黄色a视频 | 岛国一区 | 国产精品亚洲视频 | 国产精品成人国产乱一区 | 中文字幕日韩欧美一区二区三区 | 中文字幕日韩一区二区不卡 | www.操.com| 在线观看午夜免费视频 | 国产精品99久久久久久久vr | 亚洲日韩中文字幕一区 | 午夜视频在线免费观看 | 国产成人av综合 | 天天操天天添 | 午夜免费福利视频 | 美女久久久久 | av在线免费网址 | 毛片国产| 在线欧美亚洲 | 欧美视频一区 | www国产成人免费观看视频,深夜成人网 | 国内久久精品 | 成人在线视频免费观看 | 日韩资源在线 | 亚洲视频在线观看 | www婷婷 | 天堂精品 | 欧美精品一区二区蜜臀亚洲 | 久久久久国产精品免费免费搜索 | 高清国产一区二区三区四区五区 | 日韩久久网站 | 99精品国产在热久久 | 蜜桃视频成人m3u8 | 超碰人人操 | 国产精品视频一二三 | 久久99爱视频 | 精品国产欧美一区二区三区不卡 | 在线免费观看一区 | 亚洲精品一区二区三区在线看 | 精品国产一区二区三区性色av | 91视频一区二区 | av在线一区二区三区 | 亚洲一区二区三区四区 | 黄色国产大片 | 亚洲va中文字幕 | 91偷拍精品一区二区三区 | 国产美女网站视频 | 草草成人| 天堂资源网 | av一区二区三区在线观看 | 日韩精品一区二区三区在线 | 国产午夜精品一区二区三区视频 | а√天堂资源中文最新版地址 | 国产91av视频在线观看 | 国产高清在线a视频大全 | 国产中文字幕在线播放 | 成人欧美一区二区三区白人 | 精品久久久久久久久久久 | 免费观看黄a一级视频 | 国产精品一区二区在线 | 一区二区av| 一区二区三区视频在线观看 | 在线一区二区三区 | 国产福利在线免费 | 一区二区日韩 | 一级毛片在线播放 | 国产精品久久一区二区三区 | 成人日批视频 | 日本一区二区不卡 | 成人网电影 | 91精品久久久久久久久久 | 97超碰在线免费 | 亚洲一区二区三区爽爽爽爽爽 | 久久精品一区二区三区四区 | 一级毛片在线播放 | 欧美一级一区 | 国产成人小视频 | 久久久国产视频 | 欧美日韩一 | 国产成人综合一区二区三区 | 久久久亚洲精品视频 | www.青青草 | 国产精品久久久久久久久久久久冷 | 亚洲日韩中文字幕 | www.五月婷婷 | 国产精品1区2区3区 午夜视频网站 | 国产99999 | 午夜电影网| 在线a视频 | 国产成人自拍一区 | 一区二区三区影院 | 午夜精品一区二区三区在线观看 | 日韩欧美一区二区三区久久婷婷 | 亚洲成人综合网站 | 久久一 | 九九热在线视频 | 亚洲精品aaa | 国产成人综合av | 精品欧美乱码久久久久久1区2区 | 中国大陆高清aⅴ毛片 | 日韩一区二区中文字幕 | 国产亚洲精品美女久久久久久久久久 | 日韩一区二区在线观看 | 久久成人毛片 | 国产免费自拍 | 在线成人av | 成人精品网 | 成人免费视频网站 | 国产一区二区三区免费视频 | 久久久久一区二区三区 | 精品久久久久久 | 一级毛片免费 | 四虎影视免费在线观看 | 久久精品一区二区三区四区毛片 | 在线免费视频一区 | 日韩视频免费在线播放 | 国产精品天天干 | 国产一级片 | 97久久精品午夜一区二区 | 中文精品一区二区三区 | 日本欧美大片 | 久久99深爱久久99精品 | 日本久久精品视频 | 国产成人久久精品麻豆二区 | 精品免费国产一区二区三区 | 国产伊人99 | 亚洲精品自拍视频 | 欧美精品成人一区二区三区四区 | 久久99精品国产99久久6男男 | 日本一级毛片免费看 | 国产精产国品一二三产区视频 | 亚洲自拍在线观看 | 五月在线视频 | 中文字幕日韩欧美一区二区三区 | 国产免费拔擦拔擦8x高清在线人 | 一级毛片在线播放 | aaaaaa黄色片 | 日本免费在线视频 | 综合色久 | 91精品国产综合久久婷婷香蕉 | 国产一区二区精品在线观看 | 欧美亚洲啪啪 | 国产精品一区一区三区 | 亚洲综合二 | 欧美三级视频在线播放 | 久久99精品久久久久久琪琪 | 亚洲成人在线视频网站 | 亚洲天堂一区二区 | 日韩视频一区二区三区在线观看 | 黄色大片网站 | 91在线免费观看 | 亚洲成人av在线播放 | 欧美一区二区三区视频 | 久久综合色视频 | 国产日韩精品在线观看 | 成人一区二区在线观看 | 久久国产精品99久久久久久牛牛 | 成人欧美一区二区三区白人 | 日本久久网 | 日韩精品一区二区三区中文字幕 | 国产欧美久久久久久 | 中文二区| 中国大陆高清aⅴ毛片 | 亚洲人人 | 亚洲一区二区在线免费观看 | 一区二区三区日韩 | 亚洲精品乱码久久久久久 | 成人在线不卡 | 欧美日韩在线不卡 | 成人在线看片 | 一区二区影视 | 精品人伦一区二区三区蜜桃视频 | 日韩中文字幕av | 久久99国产精品久久99大师 | 国产精品99一区二区三区 | 成人a在线观看 | 国产在线国产 | 九九在线国产视频 | 欧美视频精品 | 狠狠做深爱婷婷综合一区 | 午夜在线观看视频网站 | 99综合| 色九九 | 日韩中文字幕在线免费观看 | 日韩久久精品 | 日韩视频―中文字幕 | 欧美成人黄色 | 国产精品一区二 | 国产人成精品一区二区三 | 精品久久久久久久久久久久久 | 日韩一区二区三区在线观看 | 韩国精品一区二区三区 | 一区二区中文 | 精品一区二区三区免费毛片 | 日本成人午夜影院 | 欧美视频一区 | 黄色地址 | 成人黄色在线视频 | 国产精品自产拍在线观看 | 国产综合区 | 爱爱精品| 欧美成人二区 | 日韩欧美国产精品综合嫩v 亚洲欧美日韩在线 | 久草新免费 | 亚洲午夜视频 | 亚洲天堂影视 | 国产精品久久久久久久久免费桃花 | 久久黑人| 国产一区二区在线看 | 日韩精品www | 免费的国产视频 | 国产电影一区二区三区图片 | 国产高清视频在线 | 亚洲国产精品久久久 | 超碰在线播| 亚洲国产成人av | 在线精品国产一区二区三区 | 久久久久久综合 | 色视频网站在线观看一=区 日韩一二三区 | 91久久爽久久爽爽久久片 | av网站免费在线 | 久久一区二区视频 | 中文字幕综合在线 | 久久一级 | 亚洲一区二区在线 | 亚洲视频在线观看免费 | 午夜亚洲| 亚洲欧洲免费视频 | 成人在线网 | 亚洲精品在线免费播放 | 99re6在线视频精品免费 | 欧美一级视频在线观看 |