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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

基于opencv的车牌号码识别 必备基础知识

發布時間:2023/12/31 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于opencv的车牌号码识别 必备基础知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

車牌號碼識別 必備基礎知識

  • 1、cv2.split 拆分通道
  • 2、cv2.merge 通道合并
  • 3、cv2.imshow() 和 plt.show()
  • 4、卷積及相關操作
  • 5、cv2.GaussianBlur() 高斯模糊
  • 6、cv2.medianBlur() 中值模糊
  • 7、去噪
  • 8、cv2.cvtColor (顏色空間轉換函數)
  • 9、灰度處理
  • 10、cv2.Sobel()
  • 11、cv2.convertScaleAbs()函數
  • 12、cv2.imshow() 顯示圖像
  • 13、cv2.threshold() 簡單閾值函數
  • 14、cv2.getStructuringElement()
  • 15、cv2.morphologyEx() 形態學變化函數
  • 16、開運算、閉運算
  • 17、cv2.dilate()、cv2.erode() 膨脹和腐蝕
  • 18、cv2.findContours()查找輪廓,cv2.drawContours() 繪制輪廓
  • 19、cv2.boundingRect()cv2.rectangle()
  • 20、for in 循環
  • 21、range()
  • 21、image.shape
  • 22、list.append()
  • 23、plt.barh() plt.bar()繪制柱狀圖
  • 24、sorted() 排序函數
  • 25、enumerate() 函數
  • 26、os.listdir()
  • subplot() 切割
  • python 創建數組,創建列表
    • (1)創建數組
    • (2)創建列表
  • python 切片操作

1、cv2.split 拆分通道

#拆分通道 import cv2img = cv2.imread('D:/z/car.png') #opencv讀取圖像文件 b, g ,r =cv2.split(img) #順序是b,g,r,不是r,g,b merged = cv2.merge([b,g,r])cv2.imshow('image',img) cv2.imshow("Blue 1", b) cv2.imshow("Green 1", g) cv2.imshow("Red 1", r) cv2.imshow("merged 1", merged) cv2.waitKey(0)

運行結果如下圖:

2、cv2.merge 通道合并

import cv2 import numpy as npimg = cv2.imread('D:/z/car.png') b, g ,r =cv2.split(img)zeros = np.zeros(img.shape[:2], dtype = "uint8") merged_r = cv2.merge([zeros,zeros,r]) #通道分量為零可以理解為零矩陣cv2.imshow('image',img) cv2.imshow("Red 1", r) cv2.imshow("merged_r",merged_r) cv2.waitKey(0)

運行結果如下:

注:

zeros = np.zeros(img.shape[:2], dtype = "uint8")


在用numpy 去創建一個矩陣并想用它生成圖片時一定要記住,矩陣中每個元素的類型必須是 dtype=np.uint8 也可以這樣寫 dtype = “uint8”

[0:2]是切片的意思,.shape 應當是OpenCV模塊中處理圖片的,是圖片的一個屬性,這個屬性是個列表 ,然后對這個列表切片操作。

img.shape[ : 2] 表示取彩色圖片的長、寬。
img.shape[ : 3] 則表示取彩色圖片的長、寬、通道。

關于img.shape[0]、[1]、[2]
img.shape[0]:圖像的垂直尺寸(高度)
img.shape[1]:圖像的水平尺寸(寬度)
img.shape[2]:圖像的通道數
在矩陣中,[0]就表示行數,[1]則表示列數。

3、cv2.imshow() 和 plt.show()

在用plt.imshow和cv2.imshow顯示同一幅圖時可能會出現顏色差別很大的現象。
這是因為:opencv的接口使用BGR,而matplotlib.pyplot 則是RGB模式

例一:

import cv2 import numpy as np import matplotlib.pyplot as plt img = cv2.imread('D:/z/love.jpg') #opencv接口 BGR !!!!!! b,g,r = cv2.split(img) img2 = cv2.merge([r,g,b]) #plt接口 RGB !!!!! plt.subplot(121);plt.imshow(img) plt.subplot(122);plt.imshow(img2) plt.show()

運行結果如下圖所示:

例二:

import cv2 import matplotlib.pyplot as pltimg = cv2.imread('D:/z/car.png') b,g,r = cv2.split(img) image= cv2.merge([r,g,b]) image_merged = cv2.merge([r,g,b])plt.figure(figsize=(10,6)) plt.subplot(2,3,1), plt.title('image') #原圖 plt.imshow(image), plt.axis('on') plt.subplot(2,3,2), plt.title('image_gray') #灰度圖片 plt.imshow(img,cmap='gray'), plt.axis('off') plt.subplot(2,3,3), plt.title('image_merged') plt.imshow(image_merged), plt.axis('off') plt.subplot(2,3,4), plt.title('r') plt.imshow(r,cmap='gray'), plt.axis('off') # r通道 plt.subplot(2,3,5), plt.title('g') plt.imshow(g,cmap='gray'), plt.axis('off') # g通道 plt.subplot(2,3,6), plt.title('b') plt.imshow(b,cmap='gray'), plt.axis('off') # b通道 plt.show()

運行結果如下:

plt.imshow(img,cmap='gray')

轉換為灰度圖

plt.subplot(2,3,1)

一個窗口顯示多幅圖像,要用到subplot
使用 plt.subplot 來創建小圖。
eg:plt.subplot (2,3,1) 表示將整個圖像窗口分為2行3列,當前位置為1

plt.axis('off')

關閉坐標軸

4、卷積及相關操作


在數字圖像處理領域,早就被廣泛應用于鄰域處理,只是當年的叫法是“濾波器”。
卷積是一種廣泛使用的數學運算,它在處理圖像時對每個像素都計算該像素值和它相鄰的像素值的一個加權和。其實很好理解,就是內積操作。


用模板(掩膜/卷積核/濾波器)來進行卷積是非常通用的圖像處理方法,現在的卷積神經網絡就是最成功的一個應用。
傳統的方法是人工挑選卷積核,對于不同的卷積核,可以獲得不同的結果,如圖像模糊、圖像銳化或邊緣檢測


利用水平邊緣卷積核,可以提取出水平的一些直線出來,當然還有垂直邊緣檢測卷積核,可以提取垂直的一些線條出來,這在字符識別、車牌識別很有用。

卷積和相關操作
除了這篇,還有個專題,有很多介紹。

5、cv2.GaussianBlur() 高斯模糊


高斯模糊GaussianBlur()中 參數詳解
原型:
cv2.GaussianBlur( SRC,ksize,sigmaX [,DST [,sigmaY [,borderType ] ] ] ) →DST
參數:
src 輸入圖像;圖像可以具有任何數量的信道,其獨立地處理的,但深度應CV_8U,CV_16U,CV_16S,CV_32F或CV_64F。
dst 輸出與圖像大小和類型相同的圖像src。
ksize 高斯核大小。 ksize.width 并且 ksize.height 可以有所不同,但它們都必須是正數和奇數。或者,它們可以為零,然后從計算 sigma*。
sigma 如果sigma為非正數(負數或0)的話,就會根據ksize來自動計算sigma,計算公式為sigma = 0.3*((ksize-1)*0.5-1)+0.8

sigmaX – X方向上的高斯核標準偏差。
sigmaY – Y方向上的高斯核標準差;如果 sigmaY 為零,則將其設置為等于 sigmaX;如果兩個西格瑪均為零,則分別根據ksize.width 和 進行計算 ksize.height(getGaussianKernel()有關詳細信息,請參見 link);完全控制的結果,無論這一切的語義未來可能的修改,建議指定所有的ksize,sigmaX和sigmaY。
borderType –像素外推方法。


在不知道用什么濾波器好的時候,優先高斯濾波 cv2.GaussianBlur(),然后均值濾波 cv2.blur()


高斯濾波是一種線性平滑濾波
高斯濾波是對整幅圖像進行加權平均的過程,每一個像素點的值都由其本身和鄰域內的其他像素值經過加權平均后得到。高斯濾波的具體操作是:用一個模板(或稱卷積、掩模)掃描圖像中的每一個像素,用模板確定的鄰域內像素的加權平均灰度值去替代模板中心像素點的值。
基于二維高斯函數,構建權重矩陣,進而構建高斯核,最終對每個像素點進行濾波處理(平滑、去噪)

6、cv2.medianBlur() 中值模糊

概念:
中值濾波法是一種非線性平滑技術,它將每一像素點的灰度值設置為該點某鄰域窗口內的所有像素點灰度值的中值。

函數原型:
cv2.medianBlur(src, ksize[, dst]) -> dst

參數說明:
src:待處理的輸入圖像;
ksize:參數表示濾波窗口尺寸,必須是奇數并且大于 1。比如這里是 5,中值濾波器就會使用 5×5 的范圍來計算,即對像素的中心值及其 5×5 鄰域組成了一個數值集,對其進行處理計算,當前像素被其中值替換掉;
dst:參數表示輸出與 src 相同大小和類型的圖像。

中值模糊一般用在存在一些躁聲點圖像,例如白噪聲,可以去除。
一般用來處理圖像的椒鹽噪聲

7、去噪

去噪有分為時域去噪頻域去噪

時域去噪通常手法為:
中值濾波: Media_Image 中值濾波的原理是拿特征區域在圖像滑動,每一點(與特征區域的中點重合)的值為特征區域所覆蓋的范圍的中值
均值濾波: mean_image 均值濾波的原理是拿特征區域在圖像滑動,每一點(與特征區域的中點重合)的值為特征區域所覆蓋的范圍的均值
高斯濾波: guss_image 高斯濾波的原理類似,只不過特征區域內的每個點做了加權處理,可以根據需要讓哪個單元的權重大,哪個單元的權重小


頻域內的去噪
高通濾波 :讓圖像中高頻部分通過,通常會留下邊緣,起到銳化的作用
低通濾波 :讓圖像的低頻部分通過,通常弱化邊緣,會得到比較平緩的圖像
中通濾波:讓圖像中中頻部分通過
高斯濾波


關于濾波和模糊:
它們都屬于卷積,不同濾波方法之間只是卷積核不同(對線性濾波而言)

低通濾波器是模糊,高通濾波器是銳化
低通濾波器就是允許低頻信號通過,在圖像中邊緣和噪點都相當于高頻部分,所以低通濾波器用于去除噪點、平滑和模糊圖像。
低通濾波器則是在像素與周圍像素的亮度差值小于一個特定值時,平滑該像素的亮度。主要用于去噪和模糊化,如高斯模糊是最常用的模糊濾波器,是一個削弱高頻信號強度的低通濾波器。
高通濾波器則反之,用來增強圖像邊緣,進行銳化處理。
高通濾波器(HPF)是檢測圖像的某個區域,然后根據像素與周圍像素的亮度差值來提升該像素的亮度的濾波器。也就是說,如果一個像素比它周圍的像素更突出,就會提升它的亮度。
【注意常見的噪聲有椒鹽噪聲和高斯噪聲,椒鹽噪聲可以理解為斑點,隨機出現在圖像中的黑點或白點;高斯噪聲可以理解為拍攝圖片時由于光照等原因造成的噪聲。】


模糊
均值模糊:一般用來處理圖像的隨機噪聲;
中值模糊:一般用來處理圖像的椒鹽噪聲;
自定義模糊:對圖像進行增強,銳化等操作。

8、cv2.cvtColor (顏色空間轉換函數)

cv2.cvtColor(p1, p2) 是顏色空間轉換函數,p1是需要轉換的圖片,p2是轉換成何種格式。
cv2.COLOR_BGR2RGB 將BGR格式轉換成RGB格式
cv2.COLOR_BGR2GRAY 將BGR格式轉換成灰度圖片 (效果不同3、①,我也暫時不知道為啥…)

import matplotlib.pyplot as plt import cv2# cv2.imread()接口讀圖像,讀進來直接是BGR 格式數據格式在 0~255,通道格式為(W,H,C) img_BGR = cv2.imread('D:/z/love.jpg') # BGR plt.subplot(2,3,1) plt.imshow(img_BGR) plt.axis('off') plt.title('BGR')img_RGB = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2RGB) # BGR 轉化為 RGB plt.subplot(2,3,2) plt.imshow(img_RGB) plt.axis('off') plt.title('RGB')img_GRAY = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2GRAY) # BGR 轉化為 GRAY plt.subplot(2,3,3) plt.imshow(img_GRAY) plt.axis('off') plt.title('GRAY')plt.subplot(2,3,4) img_GRAY1 = plt.imshow(img_RGB, cmap='gray') plt.show plt.axis('off') plt.title('GRAY_')plt.subplot(2,3,5) img_GRAY1 = plt.imshow(img_GRAY, cmap='gray') plt.show plt.axis('off') plt.title('GRAY_real')

運行結果如下:

9、灰度處理

在圖像處理過程中,三個通道的數據比較復雜,那就可以先將圖像進行灰度化處理。
灰度化的過程就是將每個像素點的RGB值統一成同一個值。灰度化后的圖像將由三通道變為單通道,單通道的數據處理起來就會簡單許多。

具體見上例后兩張圖

處理1、

img_GRAY = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2GRAY) img_GRAY1 = plt.imshow(img_GRAY, cmap='gray')

兩步一起會得到灰色的圖

處理2、
img = cv2.imread('D:/z/car.png',cv2.IMREAD_GRAYSCALE)
運行代碼發現這樣竟然可以直接變成灰度圖,amazing,不知道能不能直接用。


plt 畫出的圖像和原圖有色差
opencv的顏色通道順序為[B,G,R],而matplotlib的顏色通道順序為[R,G,B]。
需要把R和B的位置調換一下。

進行灰度處理之后,plt顯示的圖片是綠色的
因為還是直接使用plt顯示圖像,它默認使用三通道顯示圖像
在plt.imshow()添加參數:plt.imshow(img_gray,cmap="gray")就可以顯示灰色

不過,為什么單獨使用plt.imshow(img_gray,cmap="gray")一點用都沒有呀!!(見 5、中最后一張圖)
生氣,如果有機會問問。


灰度圖像
指的是R=G=B,灰度圖像只有256種取值可能。

灰度化處理
減少在圖像處理過程中的計算量。將彩色圖像灰度化處理以后可從起初的0-256256256縮小到0-255這256種情況,能夠大大降低運算量,這是我們在進行圖像處理希望看到的。
(emm…還是不理解為啥就降低運算量了,那圖片不就顏色少了)

10、cv2.Sobel()

概述: 利用Sobel算子進行圖像梯度計算
使用函數 cv2.Sobel()獲取圖像水平、垂直 及 水平和垂直疊加方向的完整邊緣信息。

格式:
cv2.Sobel(src, ddepth, dx, dy[, ksize[, scale[, delta[, borderType]]]])

參數:
src: 輸入圖像
ddepth: 輸出圖像的深度(可以理解為數據類型),-1表示與原圖像相同的深度
圖像深度是指存儲每個像素值所用的位數,例如cv2.CV_8U,指的是8位無符號數,取值范圍為0~255,超出范圍則會被截斷(截斷指的是,當數值大于255保留為255,當數值小于0保留為0,其余不變)。
具體還有:CV_16S(16位無符號數),CV_16U(16位有符號數),CV_32F(32位浮點數),CV_64F(64位浮點數)

dx,dy: 當組合為dx=1,dy=0時求x方向的一階導數;當組合為dx=0,dy=1時求y方向的一階導數(如果同時為1,通常得不到想要的結果)
ksize: (可選參數)Sobel算子的大小,必須是1,3,5或者7,默認為3。
求X方向和Y方向一階導數時,卷積核分別為:
scale:(可選參數)將梯度計算得到的數值放大的比例系數,效果通常使梯度圖更亮,默認為1
delta:(可選參數)在將目標圖像存儲進多維數組前,可以將每個像素值增加delta,默認為0
borderType:(可選參數)決定圖像在進行濾波操作(卷積)時邊沿像素的處理方式,默認為BORDER_DEFAULT

返回值: 梯度圖

測試① 理解一下獲取水平垂直方向邊緣信息(?白色的就略掉了)
例1(水平方向):

import cv2 img = cv2.imread('D:/z/gezi.png',cv2.IMREAD_GRAYSCALE) sobelx = cv2.Sobel(img,cv2.CV_64F,1,0) sobelx = cv2.convertScaleAbs(sobelx) # 轉回uint8 cv2.imshow("original",img) cv2.imshow("x",sobelx) cv2.waitKey() cv2.destroyAllWindows()

結果如下圖所示:

例2(垂直方向):

import cv2 img = cv2.imread('D:/z/gezi.png',cv2.IMREAD_GRAYSCALE) sobely = cv2.Sobel(img,cv2.CV_64F,0,1) sobely = cv2.convertScaleAbs(sobely) cv2.imshow("original",img) cv2.imshow("y",sobely) cv2.waitKey() cv2.destroyAllWindows()

結果如下:

測試② 深度值不同時:

import cv2#載入原圖 img_original=cv2.imread('D:/z/hb.png',0) #求X方向梯度,并且輸出圖像一個為CV_8U,一個為CV_64F img_gradient_X_8U=cv2.Sobel(img_original,-1,1,0) img_gradient_X_64F=cv2.Sobel(img_original,cv2.CV_64F,1,0)#將圖像深度改為CV_8U img_gradient_X_64Fto8U=cv2.convertScaleAbs(img_gradient_X_64F)#圖像顯示 cv2.imshow('X_gradient_8U',img_gradient_X_8U) cv2.imshow('X_gradient_64F',img_gradient_X_64F) cv2.imshow('X_gradient_64Fto8U',img_gradient_X_64Fto8U) cv2.waitKey() cv2.destroyAllWindows()

運行結果如下圖所示:
例1:

例2:

(具體為啥會有這種區別,emm…時間問題暫時不展開了,如果小趙老師會而且愿意給我講的話,我再回來給解答哈)

11、cv2.convertScaleAbs()函數

函數格式:cv2.convertScaleAbs(src[,alpha[,beta]])
概述:
通過線性變換將數據轉換成8位[uint8]
先計算數組絕對值,后轉化為8位無符號數

參數:
src:輸入圖像(多維數組)
alpha:比例因子
beta:保存新圖像(數組)前可以增加的值

使用了函數cv2.convertScaleAbs()將圖像深度為其他梯度圖像重新轉化為CV_8U,這是由于函數cv2.imshow()的默認顯示為8位無符號數,即[0,255]

12、cv2.imshow() 顯示圖像

cv2.imread(圖片,**cv2.IMREAD_GRAYSCALE**)
cv2.IMREAD_COLOR:默認參數,讀入一副彩色圖片,忽略alpha通道
cv2.IMREAD_GRAYSCALE:讀入灰度圖片(竟然可以直接變成灰色的)
cv2.IMREAD_UNCHANGED:顧名思義,讀入完整圖片,包括alpha通道

13、cv2.threshold() 簡單閾值函數

閾值的作用是根據設定的值處理圖像的灰度值,比如灰度大于某個數值像素點保留。通過閾值以及有關算法可以實現從圖像中抓取特定的圖形,比如去除背景等。

函數
Python: cv2.threshold(src, thresh, maxval, type[, dst]) → retval, dst

參數:
src:表示的是圖片源
thresh:表示的是閾值(起始值)
maxval:表示的是最大值(待填充色值?)
type:表示的是這里劃分的時候使用的是什么類型的算法,常用值為0(cv2.THRESH_BINARY)

cv2.THRESH_BINARY_INV

另外的取值為:
cv2.THRESH_OTSU
cv2.THRESH_TRIANGLE
cv2.THRESH_MASK

cv2.THRESH_BINARY 大于閾值的部分被置為255,小于部分被置為0
cv2.THRESH_BINARY_INV 大于閾值部分被置為0,小于部分被置為255
cv2.THRESH_TRUNC 大于閾值部分被置為threshold,小于部分保持原樣
cv2.THRESH_TOZERO 小于閾值部分被置為0,大于部分保持不變
cv2.THRESH_TOZERO_INV 大于閾值部分被置為0,小于部分保持不變
cv2.THRESH_OTSU,并且把閾值thresh設為0,算法會找到最優閾值,并作為第一個返回值ret返回。

當使用cv2.THRESH_OTSU或cv2.THRESH_TRIANGLE時,閾值是動態的,會根據計算結果返回相應的數值。
尋找方法是遍歷所有可能的閾值,通過一個公式,計算方差,方差最小的閾值就是選中的閾值。
自適應閾值分割。

cv2.THRESH_OTSU使用最小二乘法處理像素點
cv2.THRESH_TRIANGLE使用三角算法處理像素點。
一般情況下,cv2.THRESH_OTSU適合雙峰圖。cv2.THRESH_TRIANGLE適合單峰圖。單峰圖或者雙峰圖指的是灰度直方圖。

14、cv2.getStructuringElement()

Opencv中函數getStructuringElement()可以生成形態學操作中用到的核,函數原型:
getStructuringElement(shape, ksize,Point anchor=Point(-1,-1));

參數
shape:核的形狀
ksize:核的大小
Point anchor:核中心位置,默認位于形狀中心處

矩形:MORPH_RECT;
交叉形:MORPH_CROSS;
橢圓形:MORPH_ELLIPSE;
第二和第三個參數分別是內核的尺寸以及錨點的位置。一般在調用erode以及dilate函數之前,先定義一個Mat類型的變量來獲得

返回值:
對于錨點的位置,有默認值Point(-1,-1),表示錨點位于中心點。element形狀唯一依賴錨點位置,其他情況下,錨點只是影響了形態學運算結果的偏移。

膨脹或者腐蝕操作就是將圖像(或圖像的一部分區域,我們稱之為A)與核(我們稱之為B)進行卷積。

kernelX = cv2.getStructuringElement(cv2.MORPH_RECT, (17, 5)) print(kernelX)

運行結果如下:

15、cv2.morphologyEx() 形態學變化函數

函數形式:dst = cv.morphologyEx(src, op, kernel)

參數:
src: 輸入圖片
op:
MORPH_OPEN – 開運算(Opening operation)先腐蝕再膨脹。開運算可以用來消除小黑點,在纖細點處分離物體、平滑較大物體邊界的同時并不明顯改變其面積。
MORPH_CLOSE – 閉運算(Closing operation)先膨脹再腐蝕。閉運算可以用來排除小黑洞。
MORPH_GRADIENT - 形態學梯度(Morphological gradient)邊緣。可以突出團塊(blob)的邊緣,保留物體的邊緣輪廓。
MORPH_TOPHAT - 頂帽(Top hat)突出亮區。突出比原輪廓亮的部分。
MORPH_BLACKHAT - 黑帽(Black hat)突出暗區。將突出比原輪廓暗的部分。
MORPH_ERODE - 腐蝕 (erode)
MORPH_DILATE - 膨脹 (dilate)
kernel: 利用cv2.getStructuringElement()函數構造

16、開運算、閉運算

開運算和閉運算就是將腐蝕和膨脹按照一定的次序進行處理。但這兩者并不是可逆的,即先開后閉并不能得到原先的圖像。
閉運算用來連接被誤分為許多小塊的對象,而開運算用于移除由圖像噪音形成的斑點。

開運算可以用來消除小黑點,在纖細點處分離物體、平滑較大物體的邊界的 同時并不明顯改變其面積。
閉運算可以用來排除小黑洞。

因此,某些情況下可以連續運用這兩種運算。如對一副二值圖連續使用閉運算和開運算,將獲得圖像中的主要對象。同樣,如果想消除圖像中的噪聲(即圖像中的“小點”),也可以對圖像先用開運算后用閉運算,不過這樣也會消除一些破碎的對象。

17、cv2.dilate()、cv2.erode() 膨脹和腐蝕

這里有比較詳細介紹:形態學圖像處理:膨脹和腐蝕
膨脹與腐蝕能實現多種多樣的功能,主要如下:
消除噪聲;分割(isolate)出獨立的圖像元素,在圖像中連接(join)相鄰的元素;尋找圖像中的明顯的極大值區域或極小值區域;求出圖像的梯度。

腐蝕和膨脹是對 白色部分(高亮部分) 而言的,不是黑色部分。膨脹就是圖像中的高亮部分進行膨脹,“領域擴張”,效果圖擁有比原圖更大的高亮區域。腐蝕就是原圖中的高亮部分被腐蝕,“領域被蠶食”,效果圖擁有比原圖更小的高亮區域。

膨脹就是求局部最大值的操作,腐蝕就是求局部最小值的操作。

使用erode函數,一般我們只需要填前面的三個參數,后面的四個參數都有默認值。而且往往結合getStructuringElement一起使用。

import cv2 import numpy as npimg = cv2.imread('D:/binary.bmp',0) #OpenCV定義的結構元素 kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3, 3))#腐蝕圖像 eroded = cv2.erode(img,kernel) #顯示腐蝕后的圖像 cv2.imshow("Eroded Image",eroded);#膨脹圖像 dilated = cv2.dilate(img,kernel) #顯示膨脹后的圖像 cv2.imshow("Dilated Image",dilated); #原圖像 cv2.imshow("Origin", img)#NumPy定義的結構元素 NpKernel = np.uint8(np.ones((3,3))) Nperoded = cv2.erode(img,NpKernel) #顯示腐蝕后的圖像 cv2.imshow("Eroded by NumPy kernel",Nperoded);cv2.waitKey(0) cv2.destroyAllWindows()

運行結果如下:

18、cv2.findContours()查找輪廓,cv2.drawContours() 繪制輪廓

cv2.findContours()函數接受的參數為二值圖,即黑白的(不是灰度圖),所以讀取的圖像要先轉成灰度的,再轉成二值圖

函數形式:(查找輪廓)
cv2.findContours(image, mode, method[, contours[, hierarchy[, offset ]]])

參數:
image: 輸入圖像
mode: 表示輪廓的檢索模式,有四種:
cv2.RETR_EXTERNAL表示只檢測外輪廓
cv2.RETR_LIST檢測的輪廓不建立等級關系
cv2.RETR_CCOMP建立兩個等級的輪廓,上面的一層為外邊界,里面的一層為內孔的邊界信息。如果內孔內還有一個連通物體,這個物體的邊界也在頂層。
cv2.RETR_TREE建立一個等級樹結構的輪廓。
method: 輪廓的近似辦法
cv2.CHAIN_APPROX_NONE存儲所有的輪廓點,相鄰的兩個點的像素位置差不超過1,即max(abs(x1-x2),abs(y2-y1))==1
cv2.CHAIN_APPROX_SIMPLE壓縮水平方向,垂直方向,對角線方向的元素,只保留該方向的終點坐標,例如一個矩形輪廓只需4個點來保存輪廓信息
cv2.CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS使用teh-Chinl chain 近似算法

返回值:
contours: 一個列表,每一項都是一個輪廓, 不會存儲輪廓所有的點,只存儲能描述輪廓的點
hierarchy: 一個ndarray, 元素數量和輪廓數量一樣, 每個輪廓contours [ i ] 對應4個hierarchy元素hierarchy [i] [0] ~ hierarchy[i][3],分別表示后一個輪廓、前一個輪廓、父輪廓、內嵌輪廓的索引編號,如果沒有對應項,則該值為負數。

函數形式:(繪制輪廓)
cv2.drawContours(image, contours, contourIdx, color, thickness=None, lineType=None, hierarchy=None, maxLevel=None, offset=None)

參數:
image: 指明在哪幅圖像上繪制輪廓。image為三通道才能顯示輪廓
contours: 輪廓本身,在Python中是一個list
contoursldx: 指定繪制輪廓list中的哪條輪廓,如果是 -1,則繪制其中的所有輪廓。
thickness: 表明輪廓線的寬度,如果是-1(cv2.FILLED),則為填充模式。
lineType: 線型
hierarchy: 輪廓結構信息

19、cv2.boundingRect()cv2.rectangle()

用一個最小的矩形,把找到的形狀包起來。

函數形式:
cv2.boundingRect(img) -->(x, y, w, h)

參數:
img是一個二值圖

返回:
四個值,分別是x,y,w,h;
x,y是矩陣左上點的坐標,w,h是矩陣的寬和高

然后利用cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2) 畫出矩形
參數解釋
第一個參數:img是輸入圖像
第二個參數:(x,y)是矩陣的左上點坐標
第三個參數:(x+w,y+h)是矩陣的右下點坐標
第四個參數:(0,255,0)是畫線對應的rgb顏色
第五個參數:2是所畫的線的寬度

import cv2 import matplotlib.pyplot as plt img = cv2.imread('D:/z/hb.png')x,y,w,h = cv2.boundingRect(img) cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2) plt.imshow(img)

運行結果…

哭了…為啥運行不出來…
我也整不明白為啥,就這吧,氣死我啦!!!
小趙老師理理我吧,孩子敲不下去了T_T

20、for in 循環

循環結構的一種,經常用于遍歷字符串、列表、元組、字典等。
格式:

for x in y:循環體

執行流程:
x 依次表示 y 中的一個元素,遍歷完所有元素循環結束

21、range()

函數形式:
range(start, stop[, step])
Python3 range() 返回的是一個可迭代對象(類型是對象),而不是列表類型, 所以打印的時候不會打印列表

參數說明:
start: 計數從 start 開始。默認是從 0 開始。例如range(5) 等價于range(0,5);
stop: 計數到 stop 結束,但不包括 stop。例如:range(0,5)是[0, 1, 2, 3, 4]沒有5
step:步長,默認為1。例如:range(0,5)等價于 range(0, 5, 1)

21、image.shape

輸出三個參數
(高,寬,通道數)
image.shape[0], 圖片高
image.shape[1], 圖片寬
image.shape[2], 圖片通道數
貌似得到的是數組。

22、list.append()

描述:
用于在列表末尾添加新的對象。

語法:
list.append(obj)

參數:
obj:添加到列表末尾的對象。

返回值:
該方法無返回值,但是會修改原來的列表。

eg:

List = [123, 'zxx', 'love', 'z'] List.append( 2022 ) print("New List:", List)

運行結果如下:

23、plt.barh() plt.bar()繪制柱狀圖

plt.bar():正常柱狀圖,常見的統計圖;
plt.barh():橫向的柱狀圖,可以理解為正常柱狀圖旋轉了90°。

參數解釋:
plt.bar()
函數形式:bar(x, height, width=0.8, bottom=None, ***, align='center', data=None, **kwargs)
x:表示x坐標,數據類型為int或float類型,刻度自適應調整;也可傳dataframe的object,x軸上等間距排列;
height:表示柱狀圖的高度,也就是y坐標值,數據類型為int或float類型;
width:表示柱狀圖的寬度,取值在0~1之間,默認為0.8;
bottom:柱狀圖的起始位置,也就是y軸的起始坐標;
align:柱狀圖的中心位置,默認"center"居中,可設置為"lege"邊緣;
color:柱狀圖顏色;“r",“b”,“g”,“#123465”,默認“b"
edgecolor:邊框顏色;同上
linewidth:邊框寬度; 像素,默認無,int
tick_label:下標標簽;
log:柱狀圖y周使用科學計算方法,bool類型;
orientation:柱狀圖是豎直還是水平,豎直:“vertical”,水平條:“horizontal”;

plt.barh()
y:表示y坐標,數據類型為int或float類型,刻度自適應調整;也可傳dataframe的object,y軸上等間距排列;
height:表示柱狀圖的長度,也就是x坐標值,數據類型為int或float類型;
width:表示柱狀圖的高度,取值在0~1之間,默認為0.8;
其他參數與plt.bar()類似。

plt.xlabel() 設置x軸標簽
plt.xticks() 設置刻度

24、sorted() 排序函數

函數形式:
sorted(iterable, cmp=None, key=None, reverse=False)

參數說明:
iterable :可迭代對象。
cmp :比較的函數,這個具有兩個參數,參數的值都是從可迭代對象中取出,此函數必須遵守的規則為,大于則返回1,小于則返回-1,等于則返回0。
key :主要是用來進行比較的元素,只有一個參數,具體的函數的參數就是取自于可迭代對象中,指定可迭代對象中的一個元素來進行排序。
reverse :排序規則,reverse = True 降序 , reverse = False 升序(默認)。

返回值:
返回重新排序的列表。

eg:

L = [('b',3),('a',4),('c',2),('d',1)] newL = sorted(L, key=lambda x:x[1]) #key=lambda x:x[1] 表示按第二個元素升序排列 print(newL)

運行結果如下:

25、enumerate() 函數

描述:
enumerate() 函數用于將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列,同時列出數據和數據下標,一般用在 for 循環當中。
Python 2.3. 以上版本可用,2.6 添加 start 參數。

函數形式:
enumerate(sequence, [start=0])

參數:
sequence:一個序列、迭代器或其他支持迭代對象。
start:下標起始位置的值。

返回值:
返回 enumerate(枚舉) 對象。

eg:

seasons = ['Spring', 'Summer', 'Fall', 'Winter'] list(enumerate(seasons)) seasons = ['Spring', 'Summer', 'Fall', 'Winter'] list(enumerate(seasons, start=1)) seq = ['one', 'two', 'three'] for i, element in enumerate(seq):print(i, element) #輸出的時候i值自動加一,element后移輸出,結果同如下for循環i = 0 seq = ['one', 'two', 'three'] for element in seq:print(i, seq[i]) i += 1

運行結果如下:

26、os.listdir()

描述:
用于返回指定的文件夾包含的文件或文件夾的名字的列表

函數形式:
os.listdir(path)

參數:
path:需要列出的目錄路徑

返回值:
返回指定路徑下的文件和文件夾列表

subplot() 切割

描述:
把figure分成nrows*ncols的子圖表示

函數形式:
subplot(nrows, ncols, plot_number)
或者寫成subplot(nrows ncols plot_number)(中間不用逗號,前提是只能是三位數)

參數:
nrows:子圖的行數
ncols:子圖的列數
plot_number :索引值,表示把圖畫在第plot_number個位置(從左下角到右上角)。即圖形的標號

python 創建數組,創建列表

(1)創建數組

Python中沒有數組只有元組和列表
Python中的NumPy模塊最主要的特點就是引入了數組的概念。數組是一些相公類型的數據集合,這些數據按照一定的順序排列,并且每個數據占用大小相同的存儲空間。要使用數組組織數據,首先就要創建數組。NumPy模塊提供了多種創建數組的方法,如下列舉一下:

(1)使用array()函數創建數組
函數可基于序列型的對象(如列表、元組、集合等,還可以是一個已經創建好的數組)

(2)創建等差數組
用arange()函數創建數組
eg:

import numpy as np d=np.arange(1,20,3)#起始值是1,結束值是20(結果不含該值),步長為1 print(d)

(3)創建隨機數組
引用numpy模塊的子模塊random中的函數,主要有rand()函數、randn()函數、randint()函數。
rand()函數創建的數組中每個元素都是[0,1)區間內的隨機數
randn()函數創建的數組中的元素是符合標準正態分布(均值為0,標準差為1)的隨機數
randint()函數創建的數組中元素是制定范圍內的隨機整數

(2)創建列表

創建列表的4種方式:
(1)基本語法創建
零個,一個或一系列數據用逗號隔開,放在方括號[ ]內就是一個列表對象。列表內的數據可以是多個數目,不同類型。
eg:
a = [1,23,’開心’,’nice’]
a = [ ] # 創建一個空的列表對象

(2)list創建
①使用list()可以將任意可迭代的數據轉化成列表。用 list([iterable])函數返回一個列表。可選參數iterable是可迭代的對象,例如字符串,元組。list()函數將可迭代對象的元素重新返回為列表。
②將字典類型數據作為參數時,返回的列表元素是字典的鍵。
③將range()函數作為參數,返回一個整數元素的列表。
④如果沒有參數list()函數將返回一個空列表。eg:a = list() #創建一個空的列表對象

(3)range()創建整數列表
range() 可以方便的創建整數列表,這在開發中很有用, 語法格式為:
range( [start,] end [,step] )
Start 參數: 可選, 表示起始數字,默認是0;
End 參數: 必選, 表示結尾數字;
Step 參數: 可選, 表示步長, 默認為1
Python3中 range() 返回的是一個range對象, 而不是列表; 我們需要通過 list() 方法將其轉換成列表對象;
注意: 步長為負數, 從右往回數,此時,start應該大于end

(4)推導式生成列表
使用列表推導式可以非常方便的創建列表, 在開發中經常使用;在for循環和if語句重點練習

(5)利用split分割字符串生成列表
字符串調用split方法返回一個由分開的子串組成的列表。

求列表長度:len(list)

python 切片操作

Python切片操作的一般方式:
一個完整的切片表達式包含兩個“ :”,用于分隔三個參數(start_index、end_index、step),當只有一個“ :”時,默認第三個參數step=1。

切片操作基本表達式:
object [ start_index : end_index : step ]
step:正負數均可,其絕對值大小決定了切取數據時的“步長”,而正負號決定了“切取方向”,正表示“從左往右”取值,負表示“從右往左”取值。當step省略時,默認為1,即從左往右以增量1取值。
start_index:表示起始索引(包含該索引本身);該參數省略時,表示從對象“端點”開始取值,至于是從“起點”還是從“終點”開始,則由step參數的正負決定,step為正從“起點”開始,為負從“終點”開始。
end_index:表示終止索引(不包含該索引本身);該參數省略時,表示一直取到數據”端點“,至于是到”起點“還是到”終點“,同樣由step參數的正負決定,step為正時到“終點”,為負時到“起點”。

具體例子:Python切片操作

總結

以上是生活随笔為你收集整理的基于opencv的车牌号码识别 必备基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。

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

久草精品视频在线观看 | av福利网址导航大全 | 超碰国产在线 | 嫩草伊人久久精品少妇av | 国产精品视频免费看 | 一级黄色片毛片 | 成人黄在线观看 | 日本女人的性生活视频 | 日韩av一区在线观看 | 深爱激情站 | 久草在线欧美 | 日韩精品免费一区二区 | 国产精品男女视频 | 中文字幕一区二区三区在线视频 | 日本电影黄色 | www.一区二区三区 | 一区二区三区精品在线视频 | 亚洲国产69 | 毛片久久久 | 亚洲午夜久久久影院 | 91久久人澡人人添人人爽欧美 | 国产资源在线免费观看 | 日本不卡123区 | a亚洲视频 | av一区在线| 国产一二三区av | 青青视频一区 | 国产精品日韩在线播放 | 中文字幕日本在线观看 | 国产成人精品一区在线 | 黄色三级在线看 | 91精品久久久久久久久 | 视频在线日韩 | 天天操比| 99视频精品全国免费 | 欧美日韩二区三区 | 国产精品手机看片 | 国产视频一区二区在线观看 | 深夜免费网站 | 午夜色影院| 99r在线精品 | 国产福利免费在线观看 | 91看片在线播放 | 久久久91精品国产一区二区三区 | 中文超碰字幕 | 国内视频1区 | 91免费高清视频 | 亚洲一区天堂 | 欧美午夜视频在线 | 久久久久久久久综合 | 99av在线视频 | 免费看搞黄视频网站 | 在线亚洲天堂网 | 色夜影院 | 国产色视频一区二区三区qq号 | 久久a国产| av在线播放亚洲 | 99热精品国产一区二区在线观看 | 日本精品中文字幕在线观看 | 国产理论影院 | 3d黄动漫免费看 | 一区二区精品国产 | 亚洲码国产日韩欧美高潮在线播放 | 国产成人三级三级三级97 | 日韩免费视频线观看 | 最近高清中文字幕 | 免费观看成年人视频 | 69av免费视频 | 精品久久久久久综合日本 | 久久在线电影 | 日韩高清三区 | 激情在线网址 | 成人超碰97 | 成人av电影在线观看 | 亚洲春色综合另类校园电影 | 狠狠干天天干 | 中文在线8资源库 | 久久99国产精品自在自在app | 成人网页在线免费观看 | 91av超碰 | 久久久亚洲麻豆日韩精品一区三区 | 国产精品免费久久 | 美女免费视频一区二区 | 久久精品福利视频 | 五月天色丁香 | 精品国产一区二区三区久久久久久 | 国产精品影音先锋 | 人人超碰人人 | 亚洲另类人人澡 | 国产精品视频线看 | 日批在线观看 | 粉嫩av一区二区三区四区在线观看 | 国产在线不卡一区 | 亚洲国产剧情 | 亚洲国产操 | 美女av免费看 | 国产麻豆电影在线观看 | 五月开心激情网 | 四虎成人精品永久免费av | 欧美大jb | 亚洲国产日韩一区 | av再线观看| 日韩精品在线免费观看 | 曰韩在线| 日本久久电影网 | 三上悠亚一区二区在线观看 | 午夜精品一二区 | 国产精品美女毛片真酒店 | 日本激情视频中文字幕 | 中文视频在线 | 狠狠五月天 | 国产精品久久久久久久久久久久 | 国产精品久久一区二区三区, | 国产一级片网站 | 可以免费观看的av片 | 国产视频一级 | 日韩小视频网站 | 久草视频国产 | 国产丝袜制服在线 | 高潮久久久 | 日韩一区正在播放 | 国产又粗又猛又色又黄视频 | 中文在线字幕观看电影 | 日韩av资源在线观看 | 国产精品中文字幕在线 | 91精品国产自产91精品 | 麻豆视频在线免费看 | 麻豆国产网站 | 精品亚洲va在线va天堂资源站 | 国产精品99久久久精品 | 最近中文字幕免费大全 | 久草综合在线 | 天天插夜夜操 | 天堂中文在线视频 | 97在线观看免费视频 | 成人性生交大片免费观看网站 | 日韩免费一二三区 | 少妇资源站| 超碰人人舔 | 欧美韩日在线 | 欧美伊人网 | 国产护士hd高朝护士1 | 国产精品综合久久久久 | 亚洲电影图片小说 | 欧美亚洲一级片 | 免费男女羞羞的视频网站中文字幕 | 色综合婷婷 | 香蕉视频最新网址 | 91精品在线免费视频 | 青草视频网 | 人人草在线视频 | 精品亚洲成人 | av网站有哪些 | 国产视频精品免费播放 | 狠狠狠色丁香婷婷综合久久88 | 国产91对白在线 | 亚洲美女在线一区 | 国产三级视频 | 天天干干| 永久免费av在线播放 | 黄色大片日本免费大片 | 午夜视频福利 | av免费黄色 | 在线视频精品播放 | 久久久国产在线视频 | 香蕉视频色 | 99久久爱 | 日韩a级黄色 | 久久久久观看 | 欧美了一区在线观看 | 中文字幕a∨在线乱码免费看 | 人人看黄色| 99re8这里有精品热视频免费 | www.久久免费 | 国产麻豆精品免费视频 | 国产一区二区在线免费 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 午夜精品久久久久久99热明星 | 欧美激情综合色综合啪啪五月 | 中文字幕在线看视频国产中文版 | 日韩在线视频国产 | a色网站| 你操综合 | 国产精品欧美久久久久三级 | 国产99久久久国产精品免费二区 | 激情欧美一区二区免费视频 | av中文字幕在线看 | 欧美精品久久人人躁人人爽 | 午夜av在线播放 | 精品国产a| 欧美 日韩 国产 成人 在线 | а天堂中文最新一区二区三区 | 中文字幕免费观看视频 | 人人人爽 | 亚洲精品视频在线观看免费 | 天天曰天天干 | 国产精品一区二区久久久 | 日本中文字幕视频 | 在线播放视频一区 | 成人国产精品免费观看 | 亚洲一区二区三区毛片 | 日韩欧美精品免费 | 97电影手机 | 91精品一区在线观看 | 中国一级片免费看 | 一级免费黄视频 | 黄色软件在线观看 | 99av在线视频 | 日韩欧美在线高清 | 久久综合狠狠综合久久综合88 | 狠狠干狠狠色 | 日本美女xx| 久久精彩 | 韩国av在线播放 | 一二三区av | 午夜精品在线看 | 韩国视频一区二区三区 | 久久成人在线 | 欧美一区二区精美视频 | 激情电影影院 | 久久精品视频3 | 精品国产一区二区三区不卡 | 日韩 在线 | 91黄色小网站| 欧美日韩国产在线精品 | 去看片 | 九九热视频在线 | 亚洲国产精品人久久电影 | 欧美激情精品久久久 | 91大神精品视频在线观看 | 中文字幕你懂的 | 亚洲欧美成人网 | 一区精品在线 | 天天干天天操天天爱 | 亚洲精品乱码久久久久久蜜桃91 | 成人久久久久 | 国产精品中文久久久久久久 | 国产在线日韩 | 欧美国产高清 | 日韩一区二区三区免费视频 | 激情五月亚洲 | 精品久久一二三区 | 在线电影av | 又长又大又黑又粗欧美 | 国产91影视 | 国产成人精品一区二区三区福利 | 九九热视频在线免费观看 | 青春草免费视频 | 国产成人久久精品亚洲 | 亚洲日b视频 | 99视频精品在线 | 久久久18| 国产乱对白刺激视频在线观看女王 | 在线成人av | 91尤物在线播放 | 欧美一级艳片视频免费观看 | 久久久久久高潮国产精品视 | 亚洲精品456在线播放第一页 | 国产中文字幕在线播放 | 色婷婷av在线 | 五月天免费网站 | 一区二区不卡 | 亚洲在线观看av | av一级网站 | 日日操天天操狠狠操 | 国产精品美女久久久久久免费 | 成全免费观看视频 | 激情久久影院 | 一级黄色免费网站 | 久草在线视频新 | 人人讲下载 | 色噜噜狠狠狠狠色综合久不 | 九九九九免费视频 | 在线免费观看一区二区三区 | 午夜少妇| 99精品视频免费看 | 亚洲电影久久久 | 午夜视频亚洲 | 91插插视频 | 日韩三级免费观看 | 天天操天天舔天天干 | 欧美性久久久久久 | 99久久久成人国产精品 | 99av在线视频 | 久久国产精品色婷婷 | 精品国产乱码久久久久 | 久久久久成人精品亚洲国产 | 特级毛片在线免费观看 | wwxxxx日本| 精品一区二区在线观看 | 中文字幕a∨在线乱码免费看 | 中文字幕视频一区 | 国产成人精品一区二区在线 | 久久婷婷一区二区三区 | 国产一区二区在线影院 | 视频国产一区二区三区 | 日韩欧美中文 | 美女久久视频 | 日韩精品一二三 | 麻豆精品在线 | 波多野结衣在线播放一区 | 免费高清在线观看成人 | 日韩欧美视频在线观看免费 | 欧美综合久久久 | 国产激情小视频在线观看 | 国产亚洲在线视频 | 黄色精品网站 | 香蕉在线播放 | 91在线视频播放 | 欧美精品久久久久久久免费 | 人人人爽| 99视频精品全国免费 | 色99视频| 日韩欧美一区二区三区在线 | 96av视频| 亚洲综合成人专区片 | 欧美一级片在线播放 | 亚洲精品永久免费视频 | 99中文视频在线 | 久久久久久片 | 97超碰色偷偷| 久久综合久色欧美综合狠狠 | 日韩欧美一级二级 | 国产精品 999 | 2021国产在线视频 | 亚洲国产精品电影 | 又粗又长又大又爽又黄少妇毛片 | 国产裸体永久免费视频网站 | 精品国产精品一区二区夜夜嗨 | 亚州精品在线视频 | 久草在线视频首页 | 91久久丝袜国产露脸动漫 | 成+人+色综合 | 久久精品屋| 久久电影色| 国产在线观看一 | 成人在线免费观看视视频 | 69国产盗摄一区二区三区五区 | 久久久免费高清视频 | 成人免费亚洲 | 久草在线视频资源 | 国产精品永久在线观看 | 91人人视频在线观看 | 在线天堂中文在线资源网 | 久久久久国产一区二区三区四区 | 91在线在线观看 | 亚洲精品自拍 | 很黄很色很污的网站 | 日本韩国精品一区二区在线观看 | 天天视频亚洲 | 怡红院久久 | 日日干美女| 精品亚洲在线 | 正在播放国产一区二区 | av中文字幕在线看 | 国产精品毛片久久久久久久 | 啪啪免费视频网站 | 2021国产视频| 欧美老人xxxx18 | 国产日韩精品在线观看 | 综合在线观看色 | www.久久久久 | 美女性爽视频国产免费app | 国产精品日韩久久久久 | 91丨九色丨高潮丰满 | 中文字幕免费播放 | 国产色就色 | 欧美一区二区在线刺激视频 | 久久精品久久久精品美女 | 国产一区二区三区网站 | 日韩专区在线播放 | 久久精品一区二区三区中文字幕 | 人人爽人人爱 | 日韩欧美精品一区二区 | 99久久精品国产网站 | 亚洲h在线播放在线观看h | 福利一区二区三区四区 | 97超碰国产在线 | 激情丁香综合五月 | www夜夜操 | 亚洲精品小视频在线观看 | 国产精品色婷婷视频 | 亚洲精品乱码久久久久久 | 亚洲精品在线播放视频 | 在线影院中文字幕 | 中文字幕高清有码 | 国产最新网站 | 久久久久久久久久久久久久电影 | 国产精品毛片 | 伊人一级 | 涩涩网站在线播放 | 天天爽天天射 | 天天操天天干天天综合网 | 日韩亚洲在线视频 | 国产在线观看午夜 | 亚洲九九 | 国产精品手机在线观看 | 日免费视频 | 久久国产电影院 | 久香蕉| 国产高清视频在线免费观看 | 四虎成人精品永久免费av | 亚洲精品一区中文字幕乱码 | 91成人免费看片 | 91免费在线| 日b黄色片| 国产精品麻豆一区二区三区 | 国产免费成人av | 欧美中文字幕第一页 | 欧美激情综合色综合啪啪五月 | 国产精品99久久久精品 | 久久蜜桃av| 视频在线观看入口黄最新永久免费国产 | 日韩在线视频免费播放 | 中文字幕一区二区三区四区在线视频 | 狠狠狠色丁香婷婷综合久久五月 | 午夜私人影院 | 丁香5月婷婷久久 | 久久精品久久精品 | 天天操天天操天天 | 日韩精品中文字幕在线 | 四虎在线观看视频 | 欧美日韩中文字幕视频 | 五月天激情在线 | 操夜夜操 | 国产中文字幕久久 | 成人中文字幕在线观看 | 中文av资源站| 亚洲精品国产日韩 | 久久影院精品 | 日韩在线网 | 日韩欧美在线中文字幕 | 麻豆视频免费在线播放 | av性网站 | 日本二区三区在线 | 激情网在线视频 | 久久久久亚洲精品男人的天堂 | 午夜精品久久久久久久久久久久久久 | 精品嫩模福利一区二区蜜臀 | 久草综合在线观看 | 在线国产中文字幕 | 亚洲精品久久在线 | 亚洲免费专区 | 在线天堂中文www视软件 | 网址你懂的在线观看 | 99视频精品在线 | av网站免费看| 91精品电影 | 一区中文字幕 | 国内精品久久久久影院男同志 | 久久亚洲影视 | 日本xxxxav | 日韩av成人在线观看 | 国内久久| 天天插狠狠干 | 在线亚洲精品 | 国产亚洲视频在线 | 天天爱综合 | 一区二区三区影院 | 丁香婷婷综合激情 | 久久五月精品 | 在线免费观看欧美日韩 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产免费av一区二区三区 | 国产区免费 | 欧美最猛性xxxxx亚洲精品 | 在线免费观看不卡av | 日韩欧美国产免费播放 | 国产首页 | 精品国产伦一区二区三区观看说明 | 亚洲精品视频在线播放 | 国产精品久久久久久影院 | 免费观看成年人视频 | 国产婷婷| 亚洲国产精品资源 | 国产午夜精品理论片在线 | 狠狠五月婷婷 | 亚洲一级免费观看 | 欧美美女一级片 | 最新av免费在线 | 美女黄视频免费 | 久久精品女人毛片国产 | 久久少妇免费视频 | 久久国产精品精品国产色婷婷 | 九九视频精品免费 | 日韩精品一区二区免费视频 | 在线免费色视频 | 探花系列在线 | 最新影院 | 婷婷丁香花五月天 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 久久综合色一综合色88 | 91网页版在线观看 | 爱av在线网 | 天天摸天天操天天爽 | 国产精品久久久av久久久 | 免费av观看 | 国产最顶级的黄色片在线免费观看 | 欧美性极品xxxx娇小 | 久久观看最新视频 | 视频在线精品 | 91麻豆看国产在线紧急地址 | 午夜性色| 天天躁天天操 | 99九九视频| 久久激情精品 | 在线黄色国产 | 久草在在线视频 | 中文字幕资源网 国产 | 免费特级黄毛片 | 国产无套精品久久久久久 | 精品国产福利在线 | 97超碰国产在线 | 97色噜噜| 米奇狠狠狠888| 日韩av成人在线 | 精品国产乱码久久久久久三级人 | 亚洲日本va午夜在线电影 | 国产资源精品 | 97av.com| 人人添人人澡 | 99国产一区二区三精品乱码 | 久精品一区 | 丰满少妇在线观看网站 | 91在线播| 九九日韩 | 日韩电影在线观看中文字幕 | 欧美久久久久久久久久久久久 | 色999精品| 在线观看中文字幕av | 狠狠色狠狠色 | 国产亚洲午夜高清国产拍精品 | 国产精品美女久久久久久久久 | 日韩av图片 | 欧美精品生活片 | 国产精品久久久久久久7电影 | 亚洲闷骚少妇在线观看网站 | 黄色av播放 | 91av视频网站| 国产一级电影 | 91视频久久 | 天天射一射 | 国产第一页在线观看 | 午夜精品中文字幕 | 久久新视频 | 免费一级毛毛片 | 国产裸体永久免费视频网站 | 99精品一级欧美片免费播放 | 欧美最新另类人妖 | 99看视频在线观看 | 午夜私人影院久久久久 | 六月丁香伊人 | 99视频精品全部免费 在线 | 在线看片91 | 久99久中文字幕在线 | 国产精品涩涩屋www在线观看 | 中文字幕中文字幕在线中文字幕三区 | 中文字幕日韩无 | 久久美女电影 | 天天夜夜亚洲 | 一区二区三区在线电影 | 波多野结衣视频一区二区三区 | 国产一区 在线播放 | 91综合视频在线观看 | 日韩av网站在线播放 | 久久国产欧美日韩 | 日本女人的性生活视频 | 国产精品九九九 | 日韩黄色av网站 | 一级性生活片 | 国内毛片毛片 | 国产精品系列在线观看 | 日韩欧美一区二区在线 | 狠狠干夜夜操天天爽 | 成人综合日日夜夜 | 亚洲狠狠干 | 久久久99精品免费观看 | 摸bbb搡bbb搡bbbb| 国产高清永久免费 | 国产一区国产二区在线观看 | 色婷婷综合成人av | 精品国产乱码久久久久久浪潮 | 手机成人在线电影 | 国产精品久久久久久久久久久久久久 | 久久久精品免费观看 | 91精品色 | 国产精品精品 | 欧美国产日韩在线视频 | 美女视频久久久 | 美女视频网站久久 | 亚洲观看黄色网 | 91麻豆精品一区二区三区 | 狠狠色丁香久久婷婷综合五月 | 日韩两性视频 | 中文字幕在线观看网 | 91在线精品一区二区 | 色在线亚洲| 在线亚洲午夜片av大片 | 国产91免费在线观看 | 亚洲免费资源 | 免费成人黄色片 | 国产天天爽 | 伊人久久一区 | 亚洲精品在 | 久久免费av| 精品亚洲成a人在线观看 | 成人羞羞视频在线观看免费 | 国产不卡视频 | 中文字幕五区 | 亚洲日本三级 | 国产精品日韩在线观看 | 日韩一级黄色av | 日日干天天射 | 国产日产精品一区二区三区四区的观看方式 | 成人午夜黄色影院 | 91亚洲国产 | 狠狠操综合网 | 久久免费福利 | 色婷婷导航| 国产99爱| 五月天婷婷在线播放 | 日本黄色大片免费 | 成人动漫一区二区三区 | 国产精品入口66mio女同 | 国产成人精品av | 久草在线在线精品观看 | 视频国产精品 | 激情视频一区二区三区 | 玖玖在线观看视频 | 欧美在线视频日韩 | 久久免费成人网 | 看av在线| 久久成人黄色 | 久久久久亚洲精品国产 | 亚洲色图 校园春色 | 91香蕉久久 | 亚洲精品一区二区三区在线观看 | av免费观看高清 | 高清不卡毛片 | 永久免费精品视频网站 | 免费国产在线视频 | 国产在线观看地址 | 精品视频中文字幕 | 国产高清在线免费视频 | 一级黄色网址 | 91看片网址| 91在线看 | 久久99久久99精品免费看小说 | 久久精品aaa| 亚洲a网 | 国产日韩欧美在线观看视频 | 国产丝袜高跟 | 九色精品免费永久在线 | 久久精品国产免费 | 97电影院网 | а中文在线天堂 | 国产高清免费av | 91大神视频网站 | 狠狠色噜噜狠狠狠狠 | 国产国产人免费人成免费视频 | 91喷水 | 婷婷五月情| 最近中文字幕高清字幕在线视频 | 国产精品理论在线观看 | 午夜在线资源 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 日韩欧美在线免费观看 | 中文字幕 欧美性 | 中文字幕国语官网在线视频 | 99久久电影 | 天天插日日插 | 欧美贵妇性狂欢 | 手机av网站 | 国产精品 日本 | 九九热免费在线视频 | 久草久草久草久草 | 成年人黄色在线观看 | 亚洲欧洲日韩在线观看 | 91成人在线观看喷潮 | 日本3级在线观看 | 六月激情久久 | 久久日本视频 | 国产不卡一区二区视频 | 日韩天堂在线观看 | 日韩一区二区三区免费电影 | 黄色av高清| 亚洲最新在线视频 | 在线观看国产亚洲 | 99精品一级欧美片免费播放 | 黄色免费高清视频 | 黄色片免费看 | 国产精品欧美一区二区三区不卡 | 亚洲成av人影院 | 国内精品久久久久久久影视简单 | 永久免费的av电影 | 国内精品福利视频 | 色吧av色av | 国产精品久久久久av福利动漫 | 国产色女人 | 日日爽天天 | 日韩欧美综合在线视频 | 丁香高清视频在线看看 | 天堂av免费观看 | 久草在线资源免费 | 午夜色婷婷 | 国产剧情一区二区 | 美国三级黄色大片 | 久久久国产一区 | 亚州精品成人 | 欧美一区中文字幕 | 超碰人人在线 | 亚洲成aⅴ人片久久青草影院 | 国产精品久久久久久久久久久久冷 | 国产成人亚洲在线观看 | 久久99国产精品久久99 | 亚洲精品黄色在线观看 | 特黄色大片 | 亚洲综合色av | 天天射综合网站 | 人人爽人人澡 | 国产精品区一区 | 国产又粗又硬又爽的视频 | 日韩福利在线观看 | 色五月成人 | 日本中文乱码卡一卡二新区 | 美腿丝袜一区二区三区 | 天天爽夜夜爽人人爽曰av | 久久激情电影 | 亚洲男人天堂2018 | 人人爽人人香蕉 | 国产精品免费在线观看视频 | 91福利免费 | 欧美一级久久久久 | 国产一区二区在线观看视频 | 欧美精品一区二区在线观看 | 综合色天天| 色操插 | 激情综合五月天 | 亚洲午夜久久久久久久久电影网 | v片在线看 | 国产一级视频免费看 | 亚洲日本中文字幕在线观看 | 亚洲国产精品久久久久婷婷884 | 日韩av电影中文字幕 | 欧美日bb | 日韩在线观看高清 | 热99在线视频| 亚洲成年人在线播放 | 丁香六月伊人 | 亚洲欧美少妇 | 日本夜夜草视频网站 | 五月天色丁香 | 国产成人精品久久亚洲高清不卡 | 97精品国自产拍在线观看 | 婷婷5月激情5月 | 国产福利一区二区在线 | 国产99久久久精品视频 | 国产中文字幕网 | 国产精品v a免费视频 | 日日爽天天爽 | 亚洲a成人v | 国产精品欧美一区二区 | 亚洲精品在线观看不卡 | 国产在线最新 | 久久久久日本精品一区二区三区 | 在线激情影院一区 | 黄色小视频在线观看免费 | 欧美一二三区在线播放 | 特级黄色一级 | 97精品国自产拍在线观看 | 韩日视频在线 | 日韩在线视频一区二区三区 | 久在线观看 | 日韩高清免费在线观看 | 黄色精品国产 | 国产成人一区二区三区电影 | 91综合视频在线观看 | 天天干天天操天天入 | 日韩啪视频 | 国产高清在线精品 | 日韩黄色软件 | 国产精品免费久久 | 91精品一区在线观看 | 中文国产字幕在线观看 | 一级性视频 | 久久精品aaa | av在线永久免费观看 | 嫩草av在线 | 久久久久久国产精品久久 | 激情视频免费在线观看 | 中文乱码视频在线观看 | 国产无遮挡又黄又爽馒头漫画 | 黄网站大全| 久久观看免费视频 | 在线精品视频免费观看 | 少妇性bbb搡bbb爽爽爽欧美 | 精品久久中文 | 在线观看国产区 | 久久精彩免费视频 | 一区二区三区在线观看中文字幕 | 久久精品99久久久久久 | 91在线一区二区 | 久草在线资源网 | 天天操天天干天天 | 黄色小网站在线 | 久久一区国产 | 91九色porny蝌蚪主页 | 91完整版观看 | 亚洲欧美国产精品va在线观看 | 国产资源精品在线观看 | 亚洲精品www | 天天在线视频色 | 99 色| 色六月婷婷 | 国产在线精品一区二区 | av 一区二区三区 | 波多野结衣动态图 | 99情趣网视频 | 欧美日韩啪啪 | a黄色 | 久久这里只有精品9 | 九九视频免费在线观看 | 一区二区三区四区在线 | 成人影视免费看 | 免费男女羞羞的视频网站中文字幕 | 久久久久久久久毛片 | 国产成人中文字幕 | 亚洲h色精品 | 色黄www小说| 在线观看一级片 | 国产视频精品视频 | 国产精品久久久久久久久久免费 | 国产小视频在线观看免费 | 日本公妇在线观看 | 中文字幕在线观看视频网站 | www.久草视频 | 亚洲 中文字幕av | 久久久久久久影院 | 国产玖玖在线 | 久草视频首页 | 欧美日韩国产一区二区三区在线观看 | 久久免费成人 | 国产一区精品在线 | 一区二区三区在线观看 | 激情图片久久 | 91精品国产99久久久久久红楼 | 国产91精品欧美 | 人人爽人人爽人人爽学生一级 | 成人黄色大片网站 | 日韩成人高清在线 | 久久久久久久久福利 | 免费亚洲片 | 黄色免费大片 | 欧美色久| 91综合视频在线观看 | 久久久免费 | 激情综合国产 | 亚洲视频久久 | 日韩中文字幕免费电影 | www色com | 久久情网 | 在线你懂 | 伊人成人久久 | 青青啪 | 中文字幕在线免费看线人 | 日韩特级毛片 | 在线日本v二区不卡 | 丁香婷婷自拍 | 3d黄动漫免费看 | 97在线观看免费视频 | 欧美日本不卡高清 | 国产精品黄网站在线观看 | 91色一区二区三区 | 亚洲欧美国产视频 | bayu135国产精品视频 | 婷婷在线不卡 | 日本黄网站 | 久久久福利视频 | 成年人黄色大全 | 黄av资源 | 亚洲精品国产区 | 三级免费黄色 | 91精品免费在线观看 | 午夜精品一区二区三区可下载 | 日韩精品一区二区久久 | 又黄又爽又无遮挡免费的网站 | 国产高清视频 | 亚洲免费精彩视频 | 国产精品麻豆99久久久久久 | 精品国产成人av | 中国一级片免费看 | bbw av| 91精品一区二区三区蜜臀 | 狠狠插狠狠干 | x99av成人免费| 欧美精品v国产精品v日韩精品 | 天天干天天在线 | 免费在线观看午夜视频 | 制服丝袜亚洲 | 日韩免费电影在线观看 | 亚洲精品综合一二三区在线观看 | 国产一区二区不卡视频 | 欧美国产精品久久久久久免费 | 国产精品99久久免费观看 | 天天操夜夜做 | 美女很黄免费网站 | 91精品黄色 | 日韩久久精品一区二区 | 天天玩天天操天天射 | 国产精品二区在线 | 亚洲欧美一区二区三区孕妇写真 | 婷婷精品国产欧美精品亚洲人人爽 | 免费久久久久久 | 欧美性久久久久久 | 国产高清日韩 | 特级毛片在线免费观看 | 美女网站黄在线观看 | 日韩在线视频线视频免费网站 | 国产视频欧美视频 | 青青草国产精品 | 综合国产在线观看 | 首页中文字幕 | 国产日韩精品久久 | 玖玖999 | 欧美精品亚洲精品日韩精品 | 日日操日日插 | 日本久久久久久久久久久 | 最近2019年日本中文免费字幕 | 在线中文字幕播放 | 久草视频免费在线播放 | 久久精品一区二区三区四区 | 人人草在线视频 | 日韩在线观看视频网站 | 国产成人精品一区在线 | 成人一级电影在线观看 | 午夜视频在线观看一区二区三区 | 天天天在线综合网 | 日本久久精品 | 国产第一页在线观看 | 欧美精品乱码久久久久久按摩 | 欧美在线观看视频一区二区 | 一区二区国产精品 | 免费视频三区 | 久久久久国产精品一区 | 日韩欧美在线免费观看 | 黄色av免费电影 | 欧美日韩视频在线观看一区二区 | 国产成人精品综合久久久久99 | 91新人在线观看 | 日本精品va在线观看 | 国产99久久久欧美黑人 | 国产精品完整版 | 久久久久久久久久久久影院 | 日韩中文字幕电影 | 日韩视频三区 | 久久理论电影 | 开心色插 | 成人中心免费视频 | 国产成人一区二区精品非洲 | 国产黑丝一区二区 | 欧美日韩国产高清视频 | 久久精品亚洲国产 | 午夜狠狠操 | 婷婷色网站 | 欧美中文字幕第一页 | 国产成人一区二区三区免费看 | 欧美成人日韩 | 中文字幕在线视频一区 | 免费看国产精品 | 成人动漫精品一区二区 | 99精品热视频只有精品10 | 亚洲午夜久久久久久久久 | 国产精品一区二区久久 | 91成人短视频在线观看 | 天天操偷偷干 | 九九视频精品在线 | 五月香视频在线观看 | 国产精品激情在线观看 | 久久夜色精品国产欧美乱极品 | 国产免费又爽又刺激在线观看 | 五月婷婷综 | 2024国产精品视频 | 亚洲影音先锋 | 狠狠干婷婷色 | 91在线日本 | 欧美动漫一区二区三区 | 高清av免费看| 日韩在线不卡视频 | 亚洲国产精品视频在线观看 | 亚洲国产丝袜在线观看 | 色a4yy| 久久久久久久久久久免费 | av日韩在线网站 | 欧美乱码精品一区 | av电影在线不卡 | 成年人在线免费视频观看 | 亚洲精品视频一二三 | 国内精品久久久精品电影院 |