1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        干貨 | 手把手教你用115行代碼做個(gè)數(shù)獨(dú)解析器!

        共 9892字,需瀏覽 20分鐘

         ·

        2020-09-02 01:16

        大數(shù)據(jù)文摘出品

        來源:medium

        編譯:牛婉楊


        你也是數(shù)獨(dú)愛好者嗎?


        Aakash Jhawar和許多人一樣,樂于挑戰(zhàn)新的難題。上學(xué)的時(shí)候,他每天早上都要玩數(shù)獨(dú)。長大后,隨著科技的進(jìn)步,我們可以讓計(jì)算機(jī)來幫我們解數(shù)獨(dú)了!只需要點(diǎn)擊數(shù)獨(dú)的圖片,它就會為你填滿全部九宮格。


        叮~ 這里有一份數(shù)獨(dú)解析教程,等待你查收~ 喜歡收藏硬核干貨的小伙伴看過來~


        我們都知道,數(shù)獨(dú)由9×9的格子組成,每行、列、宮各自都要填上1-9的數(shù)字,要做到每行、列、宮里的數(shù)字都不重復(fù)。


        可以將解析數(shù)獨(dú)的整個(gè)過程分成3步:


        第一步:從圖像中提取數(shù)獨(dú)

        第二步:提取圖像中出現(xiàn)的每個(gè)數(shù)字

        第三步:用算法計(jì)算數(shù)獨(dú)的解


        第一步:從圖像中提取數(shù)獨(dú)


        首先需要進(jìn)行圖像處理。


        1、對圖像進(jìn)行預(yù)處理


        首先,我們應(yīng)用高斯模糊的內(nèi)核大小(高度,寬度)為9的圖像。注意,內(nèi)核大小必須是正的和奇數(shù)的,并且內(nèi)核必須是平方的。然后使用11個(gè)最近鄰像素自適應(yīng)閾值。


        proc = cv2.GaussianBlur(img.copy(),(9,9),0proc?=?cv2.adaptiveThreshold(proc,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2


        為了使網(wǎng)格線具有非零像素值,我們顛倒顏色。此外,把圖像放大,以增加網(wǎng)格線的大小。


        proc = cv2.bitwise_not(proc,proc)   kernel = np.array([[0。,1.,0.],[1.,1.,1.],[0.,1.,0.]] ,np.uint8)proc = cv2.dilate(proc,kernel)

        ? ? ? ?

        閾值化后的數(shù)獨(dú)圖像


        2、找出最大多邊形的角


        下一步是尋找圖像中最大輪廓的4個(gè)角。所以需要找到所有的輪廓線,按面積降序排序,然后選擇面積最大的那個(gè)。


        _, contours, h = cv2.findContours(img.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)contours = sorted(contours, key=cv2.contourArea, reverse=True)polygon = contours[0]


        使用的操作符。帶有max和min的itemgetter允許我們獲得該點(diǎn)的索引。每個(gè)點(diǎn)都是有1個(gè)坐標(biāo)的數(shù)組,然后[0]和[1]分別用于獲取x和y。


        右下角點(diǎn)具有最大的(x + y)值;左上角有點(diǎn)最小(x + y)值;左下角則具有最小的(x - y)值;右上角則具有最大的(x - y)值。


        bottom_right, _ = max(enumerate([pt[0][0] + pt[0][1] for pt in                      polygon]), key=operator.itemgetter(1))top_left, _ = min(enumerate([pt[0][0] + pt[0][1] for pt in                  polygon]), key=operator.itemgetter(1))bottom_left, _ = min(enumerate([pt[0][0] - pt[0][1] for pt in                     polygon]), key=operator.itemgetter(1))top_right, _ = max(enumerate([pt[0][0] - pt[0][1] for pt in                   polygon]), key=operator.itemgetter(1))


        現(xiàn)在我們有了4個(gè)點(diǎn)的坐標(biāo),然后需要使用索引返回4個(gè)點(diǎn)的數(shù)組。每個(gè)點(diǎn)都在自己的一個(gè)坐標(biāo)數(shù)組中。


        [polygon[top_left][0], polygon[top_right][0], polygon[bottom_right][0], polygon[bottom_left][0]]


        最大多邊形的四個(gè)角


        3、裁剪和變形圖像


        有了數(shù)獨(dú)的4個(gè)坐標(biāo)后,我們需要剪裁和彎曲一個(gè)矩形部分,從一個(gè)圖像變成一個(gè)類似大小的正方形。由左上、右上、右下和左下點(diǎn)描述的矩形。


        注意:將數(shù)據(jù)類型顯式設(shè)置為float32或‘getPerspectiveTransform’會引發(fā)錯(cuò)誤。


        top_left, top_right, bottom_right, bottom_left = crop_rect[0], crop_rect[1], crop_rect[2], crop_rect[3]src = np.array([top_left, top_right, bottom_right, bottom_left], dtype='float32') side = max([  distance_between(bottom_right, top_right),             distance_between(top_left, bottom_left),            distance_between(bottom_right, bottom_left),               distance_between(top_left, top_right) ])


        用計(jì)算長度的邊來描述一個(gè)正方形,這是要轉(zhuǎn)向的新視角。然后要做的是通過比較之前和之后的4個(gè)點(diǎn)來得到用于傾斜圖像的變換矩陣。最后,再對原始圖像進(jìn)行變換。


        dst = np.array([[0, 0], [side - 1, 0], [side - 1, side - 1], [0, side - 1]], dtype='float32')m = cv2.getPerspectiveTransform(src, dst)cv2.warpPerspective(img, m, (int(side), int(side)))


        裁剪和變形后的數(shù)獨(dú)圖像


        4、從正方形圖像中推斷網(wǎng)格


        從正方形圖像推斷出81個(gè)單元格。我們在這里交換 j 和 i ,這樣矩形就被存儲在從左到右讀取的列表中,而不是自上而下。


        squares = [] side = img.shape[:1] side = side[0] / 9for j in range(9):    for i in range(9):        p1 = (i * side, j * side)  #Top left corner of a box           p2 = ((i + 1) * side, (j + 1) * side)  #Bottom right corner                 squares.append((p1, p2)) return squares


        5、得到每一位數(shù)字


        下一步是從其單元格中提取數(shù)字并構(gòu)建一個(gè)數(shù)組。


        digits = []img = pre_process_image(img.copy(), skip_dilate=True)for square in squares:    digits.append(extract_digit(img, square, size))


        extract_digit 是從一個(gè)數(shù)獨(dú)方塊中提取一個(gè)數(shù)字(如果有的話)的函數(shù)。它從整個(gè)方框中得到數(shù)字框,使用填充特征查找來獲得框中間的最大特征,以期在邊緣找到一個(gè)屬于該數(shù)字的像素,用于定義中間的區(qū)域。接下來,需要縮放并填充數(shù)字,讓適合用于機(jī)器學(xué)習(xí)的數(shù)字大小的平方。同時(shí),我們必須忽略任何小的邊框。


        def extract_digit(img, rect, size):    digit = cut_from_rect(img, rect)    h, w = digit.shape[:2]    margin = int(np.mean([h, w]) / 2.5)    _, bbox, seed = find_largest_feature(digit, [margin, margin], [w    - margin, h - margin])    digit = cut_from_rect(digit, bbox)         w = bbox[1][0] - bbox[0][0]    h = bbox[1][1] - bbox[0][1]     if w > 0 and h > 0 and (w * h) > 100 and len(digit) > 0:        return scale_and_centre(digit, size, 4)    else:        return np.zeros((size, size), np.uint8)

        ? ? ? ?

        最后的數(shù)獨(dú)的形象


        現(xiàn)在,我們有了最終的數(shù)獨(dú)預(yù)處理圖像,下一個(gè)任務(wù)是提取圖像中的每一位數(shù)字,并將其存儲在一個(gè)矩陣中,然后通過某種算法計(jì)算出數(shù)獨(dú)的解。


        第二步:提取圖像中出現(xiàn)的每個(gè)數(shù)字

        ?

        對于數(shù)字識別,我們將在MNIST數(shù)據(jù)集上訓(xùn)練神經(jīng)網(wǎng)絡(luò),該數(shù)據(jù)集包含60000張0到9的數(shù)字圖像。從導(dǎo)入所有庫開始。


        import numpyimport cv2from keras.datasets import mnistfrom keras.models import Sequentialfrom keras.layers import Densefrom keras.layers import Dropoutfrom keras.layers import Flattenfrom keras.layers.convolutional import Conv2Dfrom keras.layers.convolutional import MaxPooling2Dfrom keras.utils import np_utilsfrom keras import backend as Kimport matplotlib.pyplot as plt


        需要修復(fù)隨機(jī)種子以確保可重復(fù)性。


        K.set_image_dim_ordering('th')seed = 7numpy.random.seed(seed)(X_train, y_train), (X_test, y_test) = mnist.load_data()


        然后將圖像重塑為樣本*像素*寬度*高度,并輸入從0-255規(guī)范化為0-1。在此之后,對輸出進(jìn)行熱編碼。


        X_train = X_train.reshape(X_train.shape[0], 1, 28,                           28).astype('float32')X_test = X_test.reshape(X_test.shape[0], 1, 28,                           28).astype('float32') X_train = X_train / 255X_test = X_test / 255y_train = np_utils.to_categorical(y_train)y_test = np_utils.to_categorical(y_test)num_classes = y_test.shape[1]


        接下來,我們將創(chuàng)建一個(gè)模型來預(yù)測手寫數(shù)字。


        model = Sequential()model.add(Conv2D(32, (5, 5), input_shape=(1, 28, 28),          activation='relu'))model.add(MaxPooling2D(pool_size=(2, 2)))model.add(Conv2D(16, (3,          3), activation='relu'))model.add(MaxPooling2D(pool_size=(2, 2)))model.add(Dropout(0.2))model.add(Flatten())model.add(Dense(128, activation='relu'))model.add(Dense(64, activation='relu'))model.add(Dense(num_classes, activation='softmax'))


        模型總結(jié)


        在創(chuàng)建模型之后,需要進(jìn)行編譯,使其適合數(shù)據(jù)集并對其進(jìn)行評估。


        model.compile(loss='categorical_crossentropy', optimizer='adam',               metrics=['accuracy'])model.fit(X_train, y_train, validation_data=(X_test, y_test),               epochs=10, batch_size=200)scores = model.evaluate(X_test, y_test, verbose=0)print("Large CNN Error: %.2f%%" % (100-scores[1]*100))


        現(xiàn)在,可以測試上面創(chuàng)建的模型了。


        test_images = X_test[1:5]test_images = test_images.reshape(test_images.shape[0], 28, 28)print ("Test images shape: {}".format(test_images.shape))for i, test_image in enumerate(test_images, start=1):    org_image = test_image    test_image = test_image.reshape(1,1,28,28)    prediction = model.predict_classes(test_image, verbose=0)    print ("Predicted digit: {}".format(prediction[0]))    plt.subplot(220+i)    plt.axis('off')    plt.title("Predicted digit: {}".format(prediction[0]))    plt.imshow(org_image, cmap=plt.get_cmap('gray'))plt.show()


        手寫體數(shù)字分類模型的預(yù)測數(shù)字


        神經(jīng)網(wǎng)絡(luò)的精度為98.314%!最后,保存序列模型,這樣就不必在需要使用它的時(shí)候反復(fù)訓(xùn)練了。


        # serialize model to JSONmodel_json = model.to_json()with open("model.json", "w") as json_file:    json_file.write(model_json)# serialize weights to HDF5model.save_weights("model.h5")print("Saved model to disk")


        更多關(guān)于手寫數(shù)字識別的信息:

        https://github.com/aakashjhawar/Handwritten-Digit-Recognition


        下一步是加載預(yù)先訓(xùn)練好的模型。


        json_file = open('model.json', 'r')loaded_model_json = json_file.read()json_file.close()loaded_model = model_from_json(loaded_model_json)loaded_model.load_weights("model.h5")


        調(diào)整圖像大小,并將圖像分割成9x9的小圖像。每個(gè)小圖像的數(shù)字都是從1-9。


        sudoku = cv2.resize(sudoku, (450,450))grid = np.zeros([9,9])for i in range(9):    for j in range(9):        image = sudoku[i*50:(i+1)*50,j*50:(j+1)*50]        if image.sum() > 25000:                grid[i][j] = identify_number(image)        else:            grid[i][j] = 0    grid =  grid.astype(int)


        identify_number 函數(shù)拍攝數(shù)字圖像并預(yù)測圖像中的數(shù)字。


        def identify_number(image):    image_resize = cv2.resize(image, (28,28))    # For plt.imshow    image_resize_2 = image_resize.reshape(1,1,28,28)    # For input to model.predict_classes#    cv2.imshow('number', image_test_1)    loaded_model_pred = loaded_model.predict_classes(image_resize_2                                                       , verbose = 0)    return loaded_model_pred[0]

        ?

        完成以上步驟后,數(shù)獨(dú)網(wǎng)格看起來是這樣的:


        提取的數(shù)獨(dú)


        第三步:用回溯算法計(jì)算數(shù)獨(dú)的解

        ?

        我們將使用回溯算法來計(jì)算數(shù)獨(dú)的解。


        在網(wǎng)格中搜索仍未分配的條目。如果找到引用參數(shù)行,col 將被設(shè)置為未分配的位置,而 true 將被返回。如果沒有未分配的條目保留,則返回false?!發(fā)” 是 solve_sudoku 函數(shù)傳遞的列表變量,用于跟蹤行和列的遞增。


        def find_empty_location(arr,l):    for row in range(9):        for col in range(9):            if(arr[row][col]==0):                l[0]=row                l[1]=col                return True    return False


        返回一個(gè)boolean,指示指定行的任何賦值項(xiàng)是否與給定數(shù)字匹配。


        def used_in_row(arr,row,num):    for i in range(9):           if(arr[row][i] == num):              return True    return False


        返回一個(gè)boolean,指示指定列中的任何賦值項(xiàng)是否與給定數(shù)字匹配。


        def used_in_col(arr,col,num):    for i in range(9):          if(arr[i][col] == num):              return True    return False


        返回一個(gè)boolean,指示指定的3x3框內(nèi)的任何賦值項(xiàng)是否與給定的數(shù)字匹配。


        def used_in_box(arr,row,col,num):    for i in range(3):        for j in range(3):            if(arr[i+row][j+col] == num):                 return True ????return?False


        檢查將num分配給給定的(row, col)是否合法。檢查“ num”是否尚未放置在當(dāng)前行,當(dāng)前列和當(dāng)前3x3框中。


        def check_location_is_safe(arr,row,col,num):    return not used_in_row(arr,row,num) and            not used_in_col(arr,col,num) and            not used_in_box(arr,row - row%3,col - col%3,num)


        采用部分填入的網(wǎng)格,并嘗試為所有未分配的位置分配值,以滿足數(shù)獨(dú)解決方案的要求(跨行、列和框的非重復(fù))。“l(fā)” 是一個(gè)列表變量,在 find_empty_location 函數(shù)中保存行和列的記錄。將我們從上面的函數(shù)中得到的行和列賦值給列表值。


        def solve_sudoku(arr):    l=[0,0]     if(not find_empty_location(arr,l)):        return True     row=l[0]    col=l[1]     for num in range(1,10):         if(check_location_is_safe(arr,row,col,num)):             arr[row][col]=num             if(solve_sudoku(arr)):                 return True             # failure, unmake & try again             arr[row][col] = 0         return False


        最后一件事是print the grid。


        def print_grid(arr):    for i in range(9):        for j in range(9):               print (arr[i][j])  ????????print?('\n')


        最后,把所有的函數(shù)整合在主函數(shù)中。


        def sudoku_solver(grid):    if(solve_sudoku(grid)):        print('---')    else:        print ("No solution exists")    grid = grid.astype(int)    return grid


        這個(gè)函數(shù)的輸出將是最終解出的數(shù)獨(dú)。


        最終的解決方案


        當(dāng)然,這個(gè)解決方案絕不是萬無一失的,處理圖像時(shí)仍然會出現(xiàn)一些問題,要么無法解析,要么解析錯(cuò)誤導(dǎo)致無法處理。不過,我們的目標(biāo)是探索新技術(shù),從這個(gè)角度來看,這個(gè)項(xiàng)目還是有價(jià)值的。


        相關(guān)報(bào)道:

        https://medium.com/@aakashjhawar/sudoku-solver-using-opencv-and-dl-part-1-490f08701179

        https://medium.com/@aakashjhawar/sudoku-solver-using-opencv-and-dl-part-2-bbe0e6ac87c5




        實(shí)習(xí)/全職編輯記者招聘ing

        加入我們,親身體驗(yàn)一家專業(yè)科技媒體采寫的每個(gè)細(xì)節(jié),在最有前景的行業(yè),和一群遍布全球最優(yōu)秀的人一起成長。坐標(biāo)北京·清華東門,在大數(shù)據(jù)文摘主頁對話頁回復(fù)“招聘”了解詳情。簡歷請直接發(fā)送至[email protected]




        點(diǎn)「在看」的人都變好看了哦!
        瀏覽 49
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            日韩无码性爱视频| 亚洲va国产天堂va久久en| 熟女人妻一区二区| 欧美黄片无码| 亚洲一本在线电影av| 人妻日韩| 色婷婷亚洲婷婷| 大伊香蕉在线| 久久无码人妻精品一区二区三区| 中文无码人妻少妇| 欧美在线天堂| 91日逼视频| 国产女主播在线| 肏逼免费视频| 亚洲五月六月| 少妇无码中文| 中文字幕欧美日韩| 亚洲一区二区av| 草久网| 青青青亚州视频在线| 亚洲一区图片| 欧美一区二区丁香五月天激情| 无码一区二区三区免费| 肏屄视频在线| 99在线国产| 2025中文字幕在线| 久草视频2| 伊人久综合| 波多野结衣高清无码| 影音AV| 九九九免费| 黑人AV在线观看| 国产综合无码| 成人性生交大片免费看小芳| 中文字幕淫乱视频欧美| 日韩视频中文字幕| 国产成人一区二区三区| 波多野结衣av在线播放| 超碰97免费在线| 91精品国产成人做爰观看奶头| 嗯啊在线视频| 手机AV免费| 搡BBBB推BBBB推BBBB| 成人不卡| 宅男视频| 国产无套内射在线观看| 日本在线黄色视频| 欧美一级日韩| 韩国gogogo高清在线完整版| 3D精品啪啪一区二区三区| 午夜亚洲AV永久无码精品蜜芽| www.久草| 国产综合视频| 久久久久久AV| 国产成人午夜福利在线| 亚洲天码中字| www.日韩无码| 无码中文AV| 亚洲黄色免费观看| 99精品视频网站| AV成人无码| 91久久久久久久久久久| 国产精品一区网站| 精品一区二区三区蜜桃臀www | 一级a免一级a做免费线看内裤| 老熟女--91XX| 成人a片在线免费观看| 殴美色色网| 黄片免费大全| 亚洲精品一区二区三区| 免费草逼视频| 亚洲无aV在线中文字幕| 精品乱子伦一区二区三区免费播放 | 奶头和荫蒂添的好舒服囗交漫画 | 在线观看的av| 日日夜夜av| 五月丁香花| 国产精品无码7777777| 日本无码在线视频| 成人精品一区二区三区中文字幕| 成人免费视频国产在线观看| 嫩草久久99www亚洲红桃| 日韩免费精品视频| 亚洲五月丁香婷婷| 亚洲精品成人AV| 91红桃视频| 大香蕉网站视频| 七区九区一区在线| 无码婬片A片AAA毛片艳谭| 国产精品三级在线| 偷拍九九热| 怍爱视频| 亚洲性爱AV网站| 怡春院中文字幕| 91熟女丰满原味| 毛片A级成人片| 亚洲日韩在线播放| 高清无码在线免费观看| 波多野结衣黄色| 免费的av| 国产乱子伦日B视频| 日韩黄色毛片| 天天拍天天干| 精品秘无码一区二区三区老师| 久草超碰| 91AV在线播放| 久久福利导航| 波多野结衣网站| 操逼视频免费| 少妇被躁到高潮无码| gay成人在线观看| 91大神久久| 大香蕉伊人在线手机网| 国产乱伦片、| 日狠狠| YOUjiZZ欧美大全| 亚洲日韩网站| 91伊人久热精品| 男人天堂网av| 欧美另类极品| 免费国产成人看片在线| 国产午夜激情视频| 亚洲无码蜜桃| av午夜激情| 国产a片免费看| 日韩婬乱片A片AAA真人视频| 欧美日韩爱爱| 国产综合久久777777麻豆| 中文字幕久久人妻无码精品蜜桃| 宅男视频| 日韩精品人妻中文字幕蜜乳| 波多野结衣无码视频在线观看| 色老板网站| 国产色婷婷| 色婷婷av| 99青青草| 五月色视频| 精品国产午夜福利| 国产精品无| 伊人久久AV| 精品丰满人妻一区二区三区免费观| 超碰在线人妻| 91蜜桃传媒在线观看| 欧美人人爱| A一级黄色片| 成人大香蕉网站精品免费| 啪啪视频最新地址发布页| 久久九九国产| 97超碰人人操| 99热网站| 日韩欧美综合| 五月丁香激情六月| 亚洲无码一区二区三区妃光| 国产无码自拍偷拍| 久久看片| 我和岳m愉情XXXⅩ视频| 亚洲激情黄色| 欧美日韩一区在线| 成人不卡| 自拍偷拍网| 国产av一二三区| 中文字幕高清视频| 久久国产2025| 亚洲黄色在线看| 亚洲日韩欧美成人| 97在线视频免费观看| 日韩伊人| 欧美色图在线播放| 麻豆性爱| 麻豆国产成人AV一区二区三区| 成人国产三级| 17c白丝喷水自慰| yw在线播放| 欧美成人免费电影| 黄色国产av| 俺去俺来也www色视频| 国产三级片在线观看| 美女啪啪网站| 悠悠色导航| AV大片在线观看| 日韩高清无码三级片| 日韩成人黄色电影| 日本无码一区二区三区| 国产视频福利| 国产乱伦精品视频| 四虎影院污| 五月丁香视频在线观看| 久久99久久99久久99| 中文字幕在线观看免费高清电影| 樱桃码一区二区三区| 中国A级片| 337P大胆粉嫩银噜噜噜| 老鸭窝成人视频| 麻豆md0049免费| 麻豆视频在线| 日韩精品成人| 亚洲AV无码日韩AV无码导航| 日韩无码福利| 色综合天天操| 狠狠躁夜夜躁人爽| 亚洲AV无码专区一级婬片毛片| 国产日韩性爱视频| 午夜激情操一操| 北条麻妃在线视频| 亚洲专区在线播放| 国产91白丝在一线播放| 日韩精品一区二区三区免费观看高清 | 精品久久久久久久| 伊人二区| 国产愉拍91九色国产愉拍| 超碰女人| 人人澡人人看| 丰满人妻一区二区免费看| 91人妻最真实刺激绿帽| 在线观看禁无码精品| 黄片av| AV青青草原| 高清无码视频免费| 欧美激情另类| 一级女婬片A片AAAA片| 日韩插泄| 无码在线播| 国产又爽又黄免费| 四川少扫搡BBBBB搡B| 亚洲一区二区无码| 欧美激情婷婷| 黄av在线| 国产一级女婬乱免费看| 日韩精品免费| 成年人性生活免费视频| 麻豆一二三区| 91蜜桃精品| 久久免费精品视频| 婷婷色情网| 日本熟妇无码一区二区| 92久久| 看毛片的网站| 九九九色视频| 日本三级片网址| 日本免费在线观看| 樱桃码一区二区三区| 91操视频| 久久久久极品| 亚洲欧美性爱视频| 青草中文娱乐网在线| 久久不雅视频| 三级片导航| 日韩黄页网站| 超碰小说| 日韩中文字幕av在线| A在线免费观看| 黃色一级一片免费播放| 亚洲国产精品18久久久久久 | 日韩毛片中文字幕| 成人视频免费在线观看| 天天射天天干天天| 天天日狠狠操| 91偷拍网| 99热思思| 草在线| 欧美一级免费| 人妻无码91| 欧美性爱XXXX黑人XYX性爽| 男女啪啪网| 无码一区精品久久久成人| 欧美一区在线视频| 国产黄色性爱视频| 成人三级电影| 亚洲日韩精品欧美一区二区yw| 成人无码免费看| 三级网址在线观看| 成人亚洲性情网站www在线| 久久成人无码| 在线无码免费观看| 三级黄色小视频| 一级电影视频去去去| 亚洲AV男人天堂| 天天天天毛片| 国产A片电影| 日韩无码视| 久久精品禁一区二区三区四区五区 | 久久天堂一区| 国产黄色视频网站在线观看| 日韩A片在线观看| 日本www视频| 韩日一区二区三区| 乱婬妺妺躁爽A片| 日韩成人无码特集| 日韩91在线| 欧美老妇性猛交| 男女一区| 亚洲精品人妻在线| 无码精品一区二区三区在线| 日本免费版网站nba| 国产资源在线观看| 麻豆MD传媒MD0071| 日本暖暖视频| 欧美日韩性| 亚洲高清无码在线观看视频| 国产精品第二页| 无码免费播放| 深爱五月天| 日本AⅤ在线观看| 肏少妇女情人大骚逼直播一区二区 | 九色自拍视频| 日韩精品高清中文| 亚洲成人无码视频在线观看| 亚洲精品中文字幕无码| 久色婷婷在线| 亚洲性天堂| 黄色电影免费看| 波多野结衣操逼| 五月婷婷亚洲| 日韩五月婷婷| 免费的av网站| 激情婷婷| 丁香五月天天| 精品无码秘人妻一区二区三区| 亚洲高清无码在线观看视频| 亚洲成人影音| 一级黄色毛片| 日韩一级片网站| 免费高清无码视频| 日韩无码2024| 激情国产av| 91精品国产闺蜜国产在线闺蜜 | 五月丁香天堂网| 91精品人妻人人爽| 色九九九九| 另类老妇奶性生BBwBB| 国产三级无码视频| 天天操天天拍| 91视频入口| 黄色日逼片| 国产成人tv| 国产精品77777| 成人aV免费观看| 国产区在线| 日韩人妻精品中文字幕免费| 豆花视频免费| 日本草逼| 草逼综合网| 色婷婷一区二区| 亚洲色综合网| 北岛玲在线视频| 777性爱| 三级片网站视频| 日韩AV在线直播| 黄色草逼视频| 午夜毛片| 精品无码人妻一区二区媚黑| 天堂a中文在线| 久久久久久久久久成人| 欧美三P囗交做爰| 亚洲天堂在线免费| 国产做受91一片二片老头| 亚洲精品无码更新| 尻屄视频在线观看| 狠狠做深爱婷婷久久综合一区| 亚洲中文字幕视频在线观看| 91丨九色丨蝌蚪丨对白| 波多野结衣东京热| 国产精品午夜在线观看| 国产美女av| 波多野结衣高清av久久直播免| 翔田千里無碼破解| 国产精品久久久一区二区三区| 一本色综合亚洲精品| 青青操国产乱伦| AV福利在线| 久久视频理论| 国产黄色视屏| 肥臀AV在线| 黄色片在线观看视频| youjizzcom日本| 亚洲黄色视频网站在线观看| 日韩ava| 逼特逼视频在线| 成人一二区| 乱子伦国产精品一区二区| 日本不卡一区二区三区四区| 亚洲天码中字| 国产乱婬AV片免费| 操bbbb| 久久高清亚洲| 一本色道久久综合亚洲精品久久| 国产一级黄色大片| 嫩草亚洲小泬久久夂| 日韩群交视频| 久久精品一区二区| 九九九AV| 色婷婷天天操天天干| 免费的av网站| 大香蕉视频国产| 奇米色五月| 天天拍夜夜爽| 中文字幕日韩在线观看| 亚洲国产精品VA在线看黑人| 日韩黄色电影在线观看| 亚洲国产成人在线视频| 日韩中文字幕无码| 91久久免费视频| 日本麻豆| av无码一区| 亚洲AV国产| 三级乱伦| 真人BBwBBWBBw另类视频| 黑人av| 3d动漫精品H区XXXXX区| 欧美成人一区二区三区片| 日韩成人精品视频| 亚洲国产综合AV在线| www.高清无码| 免费无码在线视频| 精品人妻一区二区三区四区不卡在 | 久热官网| 黄色一级大片在线免费看国产| GOGO人体做爰大胆视频| 成人网站无码| 精品福利一区二区三区| xxx日韩| 国产精品嫩草久久久久yw193| 二区视频| 蜜桃系列一区二区精品| 日韩欧美在线中文| 日本黄色一级| 国产高清无码免费在线观看| 国产在线观看免费视频| 亚州在线中文字幕经典a| AV无码精品| 99免费观看视频| 嫩草国产在线| 99久久久| 国产学生妹| 99久久精品一区二区成人| 国产AV黄色| 天堂va欧美ⅴa亚洲va一夜| 午夜小电影| 青草福利在线| 国产在线观看一区| 亚洲无码不卡| 日本中文字幕亚洲| 久久久久久成人无码| 人人看人人做| 18啪啪网站| 麻豆免费版在线观看| 翔田千里无码在线| 久久久久久久久久久久高清毛片一级| 亚洲一区av| 日本三级黄色| 日本精品视频在线| 神马午夜福利视频| 色色一区二区| 思思热在线视频播放| 婷婷精品视频| 国产男女视频| 91大熟女91大腚女人| 国产乱码一区二区三区四区在线| 91爱在线| 亚洲vs无码蜜桃少妇| 日韩午夜精品| 午夜探花在线观看| 亚洲国产视频在线观看| 国产精品美女毛片真酒店| 五月丁香色播| 欧美日本一区二区三区| 日韩一级欧美一级| 日本操B视频| 91蝌蚪视频在线| 成人一区二区三区四区| 欧美日韩不卡视频| av黄色网| 精品欧美无人区乱码毛片| 怡春院AV| 国产成人午夜视频| 婷婷午夜| 安徽妇搡BBBB搡BBBB| 18禁网站免费观看| 午夜操p| 3344gc在线观看入口| 黄色大片在线| 黄网| 日韩欧美黄色| 狠狠躁日日躁夜夜躁2022麻豆| 亚洲av高清| 青青草AV| 成人三级电影在线观看| 国产aaaaaa| 手机AV免费| 五月天婷婷视频| 欧美视频a| 精品无码9| 国产中文字幕AV在线播放| 久久93| 91大神在线观看入口| 狠狠躁夜夜躁人人爽视频| 国产免费A片| 三级免费| 免费在线观看一区| 色av影音先锋无吗一区| 苍井空二区| 再深点好爽灬轻点久久国产| AV国产精品| 俺来也官网欧美久久精品| 日韩亚洲在线| 伊人综合大香蕉| 欧美一级性爱在线观看| 成人视频18| 色呦呦中文字幕| 艹逼网| 久久久久久久久久久久成人| 天天看天天干| 日韩午夜剧场| 艹逼视频在线观看| 日韩一级免费观看| 暗呦罗莉精品一区二区| 亚洲天堂免费| 亚洲人成色777777无码| 日批视频免费观看| 国产精品无码永久免费A片| 毛片一区二区三区| jizz国产精品| 亚洲AV无码国产精品久久不卡 | 黄色免费无码| 亚洲精品系列| 久久大香蕉| 超碰人人操人人| 91狠狠色丁香婷婷综合久久精品| 操屄视频免费观看| 亚洲AV在线看| 日韩人妻精品无码久久| 亚洲av免费看| 成人小说视频| 一级免费爱爱视频| 欧美自拍性爱视频| 亚洲无码视频免费看| 欧美一级性爱视频| 性爱视频久久| 欧一美一婬一伦一区二区三区自慰国 | 99视频精品全部免费看| 91极品视觉盛宴| 爆操视频| 亚洲中文视频| 99精品视频在线观看免费| 波多野结衣无码高清视频| 日韩高清无码观看| 免费看V片| 大鸡巴午夜爽视频电影| 日韩高清不卡| 国产区AV| 亚洲精选中文字幕| 国产系列第一页| 自拍毛片| 一区二区三区精品| 人妻p| 97人人射| 亚洲无码一卡二卡| 激情五月天激情网| 国产一级二级三级视频| 色男人天堂| 中文字幕一区二区三区精华液| 日韩一卡二卡| 91人妻人人澡人人爽人人爽| 先锋影音资源一区| 麻豆国产成人AV一区二区三区| 丁香五月婷婷五月| 色五月视频| 亚洲成人AV在线播放| 99精品免费在线观看| 黄片网站在线免费观看| 国产黄色一区| 久久永久免费精品人妻专区| 中文字幕av久久久久久欧洲尺码| 人妻久久久| 91丨露脸丨熟女抽搐| 欧美BBWBBWBBWBBWBBwBBW| 大香蕉网站视频| 黄色一级爱爱| 一级片在线播放| 亚洲一级黄色| 无码人妻精品一区二区三千菊电影| 中文无码字幕在线| 久久精品波多野结衣| 久久久久亚洲AV无码成人片| 免费AV黄色| 杨晨晨不雅视频| 日本免费在线| 日韩午夜福利视频| 91免费在线看| 日韩AV无码一区二区三区| 国产精品av在线播放| 国产无码做爱视频| 欧美色图亚洲另类| 水果派成人播放无码| 免费一级A片| 97人人妻| 大鸡吧在线视频| 做爰视频毛片蜜桃| 可以在线观看的AV| 国产精品日韩高清北条麻衣| 精品人妻在线| 人人人人摸| 亚洲美女网站在线观看| 日本乱伦电影中文字幕| 西西444WWW大胆无| jizz在线观看视频| 成人免费黄色| 1插菊花综合| 蜜桃精品视频在线观看| 亚洲综合在线播放| 成人免费A片在线观看直播96| 国产伦精品一级A片视频夜夜| 特一级黄A片| 六月丁香久久| 懂色在线精品分类视频| 操逼视频免费观看| 搡BBBB搡BBB搡Bb| 日韩欧美成人电影| 青青草原在线| 午夜成人无码| 日韩激情AV| 精品国产久| 插插插菊花综合网| 蜜桃成人无码区免费视频网站| 中文字幕亚洲天堂| 日逼| 水蜜桃视频在线播放| 99热黄色| 无码人妻精品一区二区三区温州| 日韩精品久| 阿拉伯三级片| 一级大黄色毛片| 麻豆三级片| 免费AV在线| 欧美精产国品一二三区| 国产综合视频| 国产123区| 亚洲精品三级片| 国产伊人大香蕉| 亚洲av在线免费观看| 人妻人人操人人爽| 北条麻妃在线观看| 中文字幕在线观看不卡| 国产116页| 欧美日韩国产精品成人| 美日韩视频| 五月婷婷五月| 欧美成人免费A级在线观看| 大香蕉东京热| 国产精品一区二区三区在线| 欧美激情区| 免费观看在线无码视频| 丁香五月中文| 粉嫩99精品99久久久久| 免费看操逼逼| 中文久久久| 免费视频A| 麻豆视频一区二区三区| 精产国品一区二区三区| 国产女人18毛片水真多成人如厕 | 无码成人A片在线观看| 国产成人精品123区免费视频 | 亚州中文字幕| 日韩AV无码一区二区三区| 91超碰久久在线| 国产精品美女视频| 亚洲高清无码视频在线| 激情丁香婷婷| 日韩AV一级片| 人妻无码高清| 日韩性爱AV| 国产精品国产精品国产专区| h网站在线| 成人视频在线观看免费| 日韩五月天| sesese999| 2025国产精品| 国产熟女乱伦视频| 日韩视频在线观看免费| 午夜国产| 麻豆三级电影| 国产三级| 日韩av三级在线观看| 九九草在线视频| 欧美久久电影| 爱爱高清视频| 久久艹骚逼| 欧美中文字| 日韩在线中文字幕| 亚洲少妇人妻| 在线免费观看黄色视频网站| NP玩烂了公用爽灌满视频播放| 国产精品黄色片| 亚洲中文字幕在线视频观看| 国产嫩草精品A88AV| 精品无码专区| 成人做爰黄AAA片免费直播岛国 | 伊人色女操穴综合网| 女BBBBBB女BBB| 日本肏逼视频| 国产黄色片免费| 动漫人物插画动漫人物的视频软件| 丁香五月在线播放| 伊人黄色视频| 玖玖在线播放| 久久久久久久97| 日本高清无码视频| 日韩无码视| 在线无码AV| 伊人亚洲| 无码高清视频| 免费人成年激情视频在线观看| 小黃片秘嗯嗯啊| 伊人网视频在线播放| 亚洲日本无码50p| 黄色av免费网站| 人人干日日干| 欧美成人精品在线观看| 国产成人精品免高潮在线人与禽一 | 亚洲天堂视频在线观看免费| 69色综合| 日韩人妻无码中文字幕| 欧美在线一区二区| 亚洲三级网站| 男女啪网| 欧美熟女内射| 日韩V片| 香蕉成人网站| 青青草原视频在线| 色色视频在线观看| 无码人妻精品一区二区三| 熟妇人妻中文字幕无码老熟妇| 大香蕉网址| 中日美朝美女一级片免费看| 亚洲一区日韩| 国产主播一区二区| 91综合视频在线播放| 五月天精品| 天堂а√在线中文在线新版 | 乱伦中文| 亚洲一级免费在线观看| 国产欧美一区二区三区特黄手机版| 全国男人的天堂网站| 中文字幕亚洲第一| 国产伊人影院| 国产成人免费观看| 亚洲成人无码电影| 免费一级黄色片| 国产成人精品视频免费看| 久久久久久无码精品亚洲日韩麻豆| 男人的天堂一区| 日韩无码中文字幕视频| 免费观看成人| 大香蕉在线精品视频| 四虎网站| 女人高潮天天躁夜夜躁| 婷婷五月亚洲精品AAA片在| 欧美日韩日逼视频| 色网站在线| 色呦呦一区二区三区| 91偷拍视频| 日韩经典视频在线播放| 国产AV高潮| 午夜试看120秒体验区的特点| 黄色工厂这里只有精品| 三级无码中文| 久久婷婷国产| 韩日无码| 日韩欧美性爱网站| 日韩在线成人中文字幕亚洲| 在线观看操逼视频| 人妻人人澡| 牛牛Av| 欧美成人视频电影无码高清| 婷婷爱五月天| 成人不卡在线| 在线亚洲小视频| 在线观看禁无码精品| 91香蕉视频| 五月婷婷性爱| 免费黄色a片| 久久大屌| 欧美性爱福利| jizz亚洲| 亚洲高清无码在线观看视频| 亚洲免费大片| 911国产精品| 国产在线导航| 日韩欧美综合| 先锋影音一区| 九一亚洲精品| 亚洲欧美国产视频| 色九九九| 健身房被教练3p喷水了| 超碰在线观看免费版| 人人操国产| 91人人妻人人澡| 色久综合| 1024手机在线观看| 欧美国产操逼| 午夜骚影| 欧洲一级片| 阿拉伯三级片| 99精品国产热久久91色欲| jzzijzzij亚洲成熟少妇在线播放 黑人猛躁白人BBBBBBBBB | 国产特级婬片免费看| 国产免费内射| 日本中文字幕在线播放| A在线观看| 内射学生妹视频| 亚洲无码中文字幕在线| 白嫩在线| 婷婷日韩一区二区三区| 最新中文字幕视频| 人妻无码中文字幕蜜桃| 粉嫩99精品99久久久久久夜| 亚洲精品视频无码| 成人AV免费观看| 欧美日韩性色无码免费| 婷婷在线电影| 欧美1区| 欧洲毛片基地c区| 成人无码网站在线观看| 日本操逼片| 欧美黄色一级视频| 欧美黄色网视频| 高清无码视频免费| 日韩一卡二卡| 草逼com| 国产一区二区免费在线观看| 日本在线一区二区| 成人无码视频在线观看| 另类老妇奶性生BBwBB| 无码国产精品一区二区性色AV | 中文字幕一区三区三A片密月| 高清无码在线免费视频| 免费播放婬乱男女婬视频国产| 大香蕉久久草| 91亚色视频| 日韩精品成人免费观看视频| 亚洲小视频在线| 日韩性爱网站| 人妻中文字幕久久| 日韩一级黄色毛片| 国产性爱AV| 色老板在线精品免费观看| 国产乱伦毛片| 殴美A片| 中文无码久久| 亚洲欧美v在线视频| 色综合久久天天综合网| 蜜桃视频在线观看18| 黄色片一级片| 日韩美女在线| 青青操在线观看| 乱伦91视频| 二区三区免费视频| 香蕉视频色| 日本不卡在线观看| 精品中文字幕在线| 豆花视频成人网站入口免费观看 | 日韩一区二区无码视频| 欧美日韩在线视频观看| 日韩A| 人人弄人人| 亚洲AV小说| 亚洲成人黄色电影| 麻豆网站91| 西西人体444rt高清大胆模特 | 亚洲成人在线一区| 免费黄色一级电影| 日韩欧美黄色| 手机看片福利视频| 小视频你懂的| 黑人av在线| 午夜老湿机| 亚洲区在线| 99爱视频| 亚洲视频天天射| 国产视频一区二区三区四区五区| 亚洲日本中文字幕| 日韩精品无码人妻| 2025av天堂| 肉片无遮挡一区二区三区免费观看视频| 秋霞丝鲁片一区二区三区手机在绒免| AV网站免费看| 男人天堂手机视频| 91丨PORN丨国产| 欧美成人在线观看视频| 手机AV网站| 久久九九热| 人人看人人射| 久久久久久免费一级A片| 安微妇搡BBBB搡BBBB| 无码激情视频| 久久视频99| 亚洲精品人伦一区二区| 五月伊人婷婷| 国产jizz| 苍井空一区|