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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

youcans 的 OpenCV 学习课—5.图像的几何变换

發布時間:2025/3/15 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 youcans 的 OpenCV 学习课—5.图像的几何变换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

youcans 的 OpenCV 學習課—5.圖像的幾何變換


本系列面向 Python 小白,從零開始實戰解說 OpenCV 項目實戰。

幾何變換是指對圖像的位置、大小、形狀、投影進行變換,是將圖像從原始平面投影到新的視平面。OpenCV 中的圖像以多維數組描述,幾何變換本質上是將一個多維數組通過映射關系求得另一個多維數組。

本節介紹圖像的幾何變換,提供完整例程和運行結果:位置變換:平移,旋轉,鏡像;形狀變換:縮放,扭變;投影變換:透視投影,平行投影;極坐標變換。


歡迎關注 『youcans 的 OpenCV 學習課』 系列,持續更新
youcans 的 OpenCV 學習課—1.安裝與環境配置
youcans 的 OpenCV 學習課—2.圖像讀取與顯示
youcans 的 OpenCV 學習課—3.圖像的創建與修改
youcans 的 OpenCV 學習課—4.圖像的疊加與混合
youcans 的 OpenCV 學習課—5.圖像的幾何變換
youcans 的 OpenCV 學習課—6.灰度變換與直方圖處理
youcans 的 OpenCV 學習課—7.空間域圖像濾波
youcans 的 OpenCV 學習課—8.頻率域圖像濾波(上)
youcans 的 OpenCV 學習課—9.頻率域圖像濾波(下)



1. 幾何變換簡介

幾何變換是指對對圖像的位置、大小、形狀、投影進行變換,是將圖像從原始平面投影到新的視平面。OpenCV 中的圖像以多維數組描述,幾何變換本質上是將一個多維數組通過映射關系求得另一個多維數組。

幾何變換可以分為等距變換、相似變換、仿射變換和投影變換。在很多書籍中把等距變換、相似變換都稱為仿射變換,常見的仿射變換包括平移、旋轉、縮放、翻轉、斜切等方法。

  • 等距變換:圖像中的長度、面積不變,典型的等距變換是 平移、旋轉。
  • 相似變換:圖像中的長度比、夾角、虛圓點不變,相似變換是在等距變換的基礎上進行了縮放,典型的相似變換是 縮放。
  • 仿射變換:圖像中的平行關系、面積比、共線線段或平行線段的長度比、矢量的線性組合不變,仿射變換是旋轉和非均勻縮放的復合,典型的仿射變換是 斜切
  • 投影變換:圖像中的共點、共線、相交、相切、拐點的關系不變,,投影變換是在仿射變換基礎上進行的非線性縮放,典型的投影變換是 透視。

1.1 仿射變換

仿射變換(affine)的特點是原始圖像中的平行關系和線段長度比例關系保持不變。

OpenCV 中的圖像以多維數組描述,通過仿射變換變換為另一個多維數組(轉換圖像)。

仿射變換中的校正圖像在二維空間中完成,在幾何上定義為一個線性變換接一個平移變換。

仿射變換由以下公式描述:
[x~y~1]=MA[xy1],MA=[a11a12a13a21a22a23001]\begin{bmatrix} \tilde{x}\\ \tilde{y}\\ 1 \end{bmatrix} = M_A \begin{bmatrix} x\\ y\\ 1 \end{bmatrix} ,\hspace{1em} M_A= \begin{bmatrix} a_{11} &a_{12} &a_{13}\\ a_{21} &a_{22} &a_{23}\\ 0 &0 &1 \end{bmatrix} ???x~y~?1????=MA????xy1????,MA?=???a11?a21?0?a12?a22?0?a13?a23?1????

OpenCV 提供了 cv2.warpAffine 函數實現仿射變換的操作。

仿射變換矩陣 MA 中有 6 個未知參數,cv2.getAffineTransform 根據圖像中不共線的 3 個點在變換前后的對應位置坐標,構造 6元一次方程組即可求出仿射變換矩陣 MA。cv2.warpAffine 再用變換矩陣 MA 計算得到變換后的圖像。

基本例程:1.33 圖像的仿射變換

# 1.33 仿射變換: 平移、鏡像、旋轉 (cv2.warpAffine)img = cv2.imread("../images/imgB2.jpg") # 讀取彩色圖像(BGR)rows, cols, ch = img.shapepts1 = np.float32([[50, 50], [200, 50], [50, 200]]) # 初始位置pts2 = np.float32([[50, 100], [200, 50], [100, 250]]) # 終止位置MA = cv2.getAffineTransform(pts1, pts2) # 計算 2x3 變換矩陣 MAdst = cv2.warpAffine(img, MA, (cols, rows)) # 實現仿射變換plt.figure(figsize=(9,6))plt.subplot(121), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)), plt.title("Original")plt.subplot(122), plt.imshow(cv2.cvtColor(dst, cv2.COLOR_BGR2RGB)), plt.title("warpAffine")plt.show()


1.2 投影變換

投影變換(Projective mapping)也稱透視變換(Perspective transformation),其特點是:原始圖像中的平行關系、比例關系在轉換后可以改變,但直線在轉換后仍然保持直線。

投影變換將圖片投影到一個新的視平面(Viewing plane),可以對三維空間中的物體旋轉進行校正,主要用于圖像拼接和校正透視投影導致的圖像失真 。


投影變換由以下公式描述:
[x~y~z~]=M[xyz],M=[a11a12a13a21a22a23a31a32a33]\begin{bmatrix} \tilde{x}\\ \tilde{y}\\ \tilde{z} \end{bmatrix} = M \begin{bmatrix} x\\ y\\ z \end{bmatrix} ,\hspace{1em} M= \begin{bmatrix} a_{11} &a_{12} &a_{13}\\ a_{21} &a_{22} &a_{23}\\ a_{31} &a_{32} &a_{33} \end{bmatrix} ???x~y~?z~????=M???xyz????,M=???a11?a21?a31??a12?a22?a32??a13?a23?a33?????

OpenCV 提供了 cv2.warpPerspective 函數實現投影變換的操作。cv2.getPerspectiveTransform 根據圖像中不共線的 4 個點在變換前后的對應位置求得 (3x3) 變換矩陣,cv2.warpPerspective 使用該 (3x3) 變換矩陣即可求出變換后的圖像。

1.3 極坐標變換

極坐標變換可以校正圖像中的圓形物體和圓環中所包含的物體。

極坐標變換由以下公式描述:

KaTeX parse error: No such environment: align* at position 8: \begin{?a?l?i?g?n?*?}? r &= \sqrt{(x-…

OpenCV 提供了 cv2.cartToPolar 函數和 cv2.ploarToCart 函數實現笛卡爾坐標與極坐標的相互轉換。



2. 圖像的平移

平移是物體位置在水平和垂直方向的移動。

像素點 (x,y) 沿 x 軸平移 dx、沿 y 軸平移 dy,可以由以下公式描述:
[x~y~1]=MAT[xy1],MAT=[10dx01dy001]\begin{bmatrix} \tilde{x}\\ \tilde{y}\\ 1 \end{bmatrix} = M_{AT} \begin{bmatrix} x\\ y\\ 1 \end{bmatrix} ,\hspace{1em} M_{AT} = \begin{bmatrix} 1 &0 &d_x\\ 0 &1 &d_y\\ 0 &0 &1 \end{bmatrix} ???x~y~?1????=MAT????xy1????,MAT?=???100?010?dx?dy?1????

由偏移量 (Tx, Ty) 按上式構造平移變換矩陣 MAT,由函數 cv2.warpAffine 可以計算變換后的平移圖像。

函數說明:

cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) → dst

函數 cv2.warpAffine() 通過變換矩陣 M 對圖像 src 進行仿射變換。

參數說明:

  • scr:變換操作的輸入圖像
  • M:仿射變換矩陣,2行3列
  • dsize: 輸出圖像的大小,二元元組 (width, height)
  • dst:變換操作的輸出圖像,可選項
  • flags:插值方法,整型(int),可選項
    • cv2.INTER_LINEAR:線性插值,默認選項
    • cv2.INTER_NEAREST:最近鄰插值
    • cv2.INTER_AREA:區域插值
    • cv2.INTER_CUBIC:三次樣條插值
    • cv2.INTER_LANCZOS4:Lanczos 插值
  • borderMode:邊界像素方法,整型(int),可選項,默認值為 cv2.BORDER_REFLECT
  • borderValue:邊界填充值,可選項,默認值為 0(黑色填充)
  • 返回值:dst,變換操作的輸出圖像,ndarray 多維數組

注意事項:

  • 變換前后的圖像 src、dst 都是 ndarray 二維數組。
  • 變換矩陣 M 反映平移或旋轉的關系,是 np.float32 類型 ndarray 二維數組(2行*3列)。
  • 平移變換矩陣 M = [(1,0,dx), (0,1,dy)],Tx 表示向右(負值向左)移動像素點數,Ty 表示向下(負值向上)移動像素點數。
  • 輸出圖像的大小 dsize 的格式為元組 (width,height)。

  • 基本例程:1.34 圖像的平移

    # 1.34 圖像平移 (Translation transform)img = cv2.imread("../images/imgLena.tif") # 讀取彩色圖像(BGR)rows, cols, ch = img.shapedx, dy = 100, 50 # dx=100 向右偏移量, dy=50 向下偏移量MAT = np.float32([[1, 0, dx], [0, 1, dy]]) # 構造平移變換矩陣 # dst = cv2.warpAffine(img, MAT, (cols, rows)) # 默認為黑色填充dst = cv2.warpAffine(img, MAT, (cols, rows), borderValue=(255,255,255)) # 設置白色填充plt.figure(figsize=(9,6))plt.subplot(121), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)), plt.title("Original")plt.subplot(122), plt.imshow(cv2.cvtColor(dst, cv2.COLOR_BGR2RGB)), plt.title("Translational")plt.show()



    3. 圖像的旋轉

    • 圖像以原點 (0, 0) 為中心、順時針旋轉角度 θ 進行旋轉操作,可以由以下公式描述:

    [x~y~1]=MAR[xy1],MAR=[cosθ?sinθ0sinθcosθ0001]\begin{bmatrix} \tilde{x}\\ \tilde{y}\\ 1 \end{bmatrix} = M_{AR} \begin{bmatrix} x\\ y\\ 1 \end{bmatrix} , M_{AR} = \begin{bmatrix} cos \theta &-sin \theta &0\\ sin \theta &cos \theta &0\\ 0 &0 &1 \end{bmatrix} ???x~y~?1????=MAR????xy1????,MAR?=???cosθsinθ0??sinθcosθ0?001????

    按上式構造旋轉變換矩陣 MAR,由函數 cv2.warpAffine 可以計算變換后的繞原點旋轉圖像。

    • 圖像以任意點 (x0, y0) 為旋轉中心、順時針旋轉角度 θ 的旋轉操作,可以先將原點平移到旋轉中心 (x0, y0) ,然后按照原點旋轉,最后再平移回坐標原點,可以由以下公式描述:

    [x~y~1]=[10x001y0001][cosθ?sinθ0sinθcosθ0001][10?x001?y0001][xy1]\begin{bmatrix} \tilde{x}\\ \tilde{y}\\ 1 \end{bmatrix}= \begin{bmatrix} 1 &0 &x_0\\ 0 &1 &y_0\\ 0 &0 &1 \end{bmatrix} \begin{bmatrix} cos \theta &-sin \theta &0\\ sin \theta &cos \theta &0\\ 0 &0 &1 \end{bmatrix} \begin{bmatrix} 1 &0 &-x_0\\ 0 &1 &-y_0\\ 0 &0 &1 \end{bmatrix} \begin{bmatrix} x\\ y\\ 1 \end{bmatrix} ???x~y~?1????=???100?010?x0?y0?1???????cosθsinθ0??sinθcosθ0?001???????100?010??x0??y0?1???????xy1????

    • 簡便地,OpenCV 提供了 cv2.getRotationMatrix2D 函數, 根據旋轉角度和位移計算旋轉變換矩陣 MAR。

    函數說明:

    cv2.getRotationMatrix2D(center, angle, scale) → M

    函數 getRotationMatrix2D 根據旋轉參數計算旋轉變換矩陣 MAR。

    參數說明:

    • center:旋轉中心坐標,二元元組 (x0, y0)
    • angle:旋轉角度,單位為角度,逆時針為正數,順時針為負數
    • scale: 縮放因子
    • 返回值:M, 旋轉變換矩陣,2行3列

    注意事項:

  • 求出旋轉變換矩陣 MAR,由函數 cv2.warpAffine 可以實現任意角度和任意中心的旋轉效果。
  • 以圖像中心作為旋轉中心時,可以用 img.shape 獲得圖像的寬度和高度值,除以 2 就是圖像中心點坐標。
  • 旋轉角度為 90,180,270 度時,可以用 cv2.rotate(src, rotateCode) 函數實現,該方法實際上是通過矩陣轉置實現的,因此速度很快。

  • 基本例程:1.35 圖像的旋轉(以原點為中心旋轉)

    # 1.35 圖像旋轉 (以原點 (0,0) 為中心旋轉)img = cv2.imread("../images/imgLena.tif") # 讀取彩色圖像(BGR)rows, cols, ch = img.shapetheta = np.pi / 8.0 # 順時針旋轉角度cosTheta = np.cos(theta)sinTheta = np.sin(theta)MAT = np.float32([[cosTheta, -sinTheta, 0], [sinTheta, cosTheta, 0]]) # 構造旋轉變換矩陣# dst = cv2.warpAffine(img, MAT, (cols, rows)) # 默認為黑色填充dst = cv2.warpAffine(img, MAT, (cols, rows), borderValue=(255,255,255)) # 設置白色填充plt.figure(figsize=(9,6))plt.subplot(121), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)), plt.title("Origin")plt.subplot(122), plt.imshow(cv2.cvtColor(dst, cv2.COLOR_BGR2RGB)), plt.title("Rotation")plt.show()



    基本例程:1.36 圖像的旋轉(任意旋轉中心)

    # 1.36 圖像旋轉 (以任意點 (x0,y0) 為中心旋轉)img = cv2.imread("../images/imgGaia.tif") # 讀取彩色圖像(BGR)height, width = img.shape[:2] # 圖片的高度和寬度theta1, theta2 = 30, 45 # 順時針旋轉角度,單位為角度x0, y0 = width//2, height//2 # 以圖像中心作為旋轉中心MAR1 = cv2.getRotationMatrix2D((x0,y0), theta1, 1.0)MAR2 = cv2.getRotationMatrix2D((x0,y0), theta2, 1.0)imgR1 = cv2.warpAffine(img, MAR1, (width, height)) # 旋轉變換,默認為黑色填充imgR2 = cv2.warpAffine(img, MAR2, (width, height), borderValue=(255,255,255)) # 設置白色填充plt.figure(figsize=(10,6))plt.subplot(131), plt.axis('off'), plt.title(r"$Origin$")plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))plt.subplot(132), plt.axis('off'), plt.title(r"$Rotation {}^o$".format(theta1))plt.imshow(cv2.cvtColor(imgR1, cv2.COLOR_BGR2RGB))plt.subplot(133), plt.axis('off'), plt.title(r"$Rotation {}^o$".format(theta2))plt.imshow(cv2.cvtColor(imgR2, cv2.COLOR_BGR2RGB))plt.show()



    擴展例程:1.37 圖像的直角旋轉

    當旋轉角度為 90,180,270 度時,可以用圖像旋轉函數 cv2.rotate(src, rotateCode) 實現,該方法通過矩陣轉置實現,速度很快。此外,numpy 中也提供了旋轉矩陣的方法 np.rot90 可以按 90 度的整數倍進行旋轉。

    # 1.37 圖像的直角旋轉 (90, 180, 270)# cv2.rotate(src, rotateCode)# rotateCode: cv2.ROTATE_90_CLOCKWISE, 順時針旋轉90度# cv2.ROTATE_180, 順時針旋轉180度# cv2.ROTATE_90_COUNTERCLOCKWISE, 順時針旋轉270度img = cv2.imread("../images/imgLena.tif") # 讀取彩色圖像(BGR)imgR90 = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)imgR180 = cv2.rotate(img, cv2.ROTATE_180)imgR270 = cv2.rotate(img, cv2.ROTATE_90_COUNTERCLOCKWISE)# imgR90 = np.rot90(img, 1) # numpy 矩陣旋轉 90*1=90 度# imgR180 = np.rot90(img, 2) # numpy 矩陣旋轉 90*2=180 度# imgR270 = np.rot90(img, 3) # numpy 矩陣旋轉 90*3=270 度plt.figure(figsize=(9,7))plt.subplot(221), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)), plt.title(r"$Origin$")plt.subplot(222), plt.imshow(cv2.cvtColor(imgR90, cv2.COLOR_BGR2RGB)), plt.title(r"$Rotation 90^{o}$")plt.subplot(223), plt.imshow(cv2.cvtColor(imgR180, cv2.COLOR_BGR2RGB)), plt.title(r"$Rotation 180^{o}$")plt.subplot(224), plt.imshow(cv2.cvtColor(imgR270, cv2.COLOR_BGR2RGB)), plt.title(r"$Rotation 270^{o}$")plt.show()



    4. 圖像的翻轉(鏡像)

    翻轉也稱鏡像,是指將圖像沿軸線進行軸對稱變換。水平鏡像是將圖像沿垂直中軸線進行左右翻轉,垂直鏡像是將圖像沿水平中軸線進行上下翻轉,水平垂直鏡像是水平鏡像和垂直鏡像的疊加。

    以水平鏡像為例,圖像寬度為 fw,像素點 (x,y) 以垂直中軸線為中心進行左右對換,可以由以下公式描述:
    [x~y~1]=MAF[xy1],MAF=[?10fw010001]\begin{bmatrix} \tilde{x}\\ \tilde{y}\\ 1 \end{bmatrix} = M_{AF} \begin{bmatrix} x\\ y\\ 1 \end{bmatrix} ,\hspace{1em} M_{AF} = \begin{bmatrix} -1 &0 &f_w\\ 0 &1 &0\\ 0 &0 &1 \end{bmatrix} ???x~y~?1????=MAF????xy1????,MAF?=????100?010?fw?01????

    由上式構造鏡像變換矩陣 MAF,由函數 cv2.warpAffine 可以計算變換后的鏡像圖像。

    簡便地,OpenCV 提供了 cv2.flip 函數,可以將圖像沿水平方向、垂直方向、或水平/垂直方向同時進行翻轉。

    函數說明:

    cv2.flip(src, flipCode[, dst]) -> dst

    參數說明:

    • scr:變換操作的輸入圖像
    • flipCode:控制參數,整型(int),flipCode>0 水平翻轉,flipCode=0 垂直翻轉,flipCode<0 水平和垂直翻轉
    • dst:變換操作的輸出圖像,可選項

    基本例程:1.38 圖像的翻轉(鏡像)

    # 1.38 圖像的翻轉 (鏡像)img = cv2.imread("../images/Fractal03.png") # 讀取彩色圖像(BGR)imgFlip1 = cv2.flip(img, 0) # 垂直翻轉imgFlip2 = cv2.flip(img, 1) # 水平翻轉imgFlip3 = cv2.flip(img, -1) # 水平和垂直翻轉plt.figure(figsize=(9, 6))plt.subplot(221), plt.axis('off'), plt.title("Original")plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) # 原始圖像plt.subplot(222), plt.axis('off'), plt.title("Flipped Horizontally")plt.imshow(cv2.cvtColor(imgFlip2, cv2.COLOR_BGR2RGB)) # 水平翻轉plt.subplot(223), plt.axis('off'), plt.title("Flipped Vertically")plt.imshow(cv2.cvtColor(imgFlip1, cv2.COLOR_BGR2RGB)) # 垂直翻轉plt.subplot(224), plt.axis('off'), plt.title("Flipped Horizontally & Vertically")plt.imshow(cv2.cvtColor(imgFlip3, cv2.COLOR_BGR2RGB)) # 水平垂直翻轉plt.show()



    5. 圖像的縮放

    縮放只是調整圖像的大小。

    OpenCV 提供了 cv2.resize 函數,實現圖像的縮放和大小變換 。

    函數說明:

    cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst

    參數說明:

    • scr:變換操作的輸入圖像
    • dsize: 輸出圖像的大小,二元元組 (width, height)
    • dst:變換操作的輸出圖像,可選項
    • fx, fy:x 軸、y 軸上的縮放比例,實型,可選項
    • interpolation:插值方法,整型,可選項
      • cv2.INTER_LINEAR:雙線性插值(默認方法)
      • cv2.INTER_AREA:使用像素區域關系重采樣,縮小圖像時可以避免波紋出現
      • cv2.INTER_NEAREST:最近鄰插值
      • cv2.INTER_CUBIC:4x4 像素鄰域的雙三次插值
      • cv2.INTER_LANCZOS4:8x8 像素鄰域的Lanczos插值
    • 返回值:dst,變換操作的輸出圖像,ndarray 多維數組

    注意事項:

  • 圖像縮放可以通過 dsize 直接設定輸出圖像的大小,也可以通過 dx, dy 設置圖像縮放的比例(dsize 設為 None)。

  • 也可以通過構造縮放變換矩陣 MAZ,由函數 cv2.warpAffine 計算變換后的縮放平移圖像。縮放變換矩陣 MAZ 由以下公式描述:

  • [x~y~1]=MAZ[xy1],MAZ=[fx000fy0001]\begin{bmatrix} \tilde{x}\\ \tilde{y}\\ 1 \end{bmatrix} = M_{AZ} \begin{bmatrix} x\\ y\\ 1 \end{bmatrix} ,\hspace{1em} M_{AZ} = \begin{bmatrix} f_x &0 &0\\ 0 &f_y &0\\ 0 &0 &1 \end{bmatrix} ???x~y~?1????=MAZ????xy1????,MAZ?=???fx?00?0fy?0?001????

    由偏移量 (Tx, Ty) 按上式構造平移變換矩陣 MAT,由函數 cv2.warpAffine 可以計算變換后的平移圖像。


    基本例程:1.39 圖像的縮放變換

    # 1.39 圖像的縮放img = cv2.imread("../images/Fractal08.png") # 讀取彩色圖像(BGR)height, width = img.shape[:2] # 圖片的高度和寬度imgZoom1 = cv2.resize(img, (int(0.75*width), int(height)))imgZoom2 = cv2.resize(img, None, fx=0.75, fy=1.0, interpolation=cv2.INTER_AREA)plt.figure(figsize=(8,6))plt.subplot(121), plt.axis('off'), plt.title("Zoom: 0.75*W,1.0*H")plt.imshow(cv2.cvtColor(imgZoom1, cv2.COLOR_BGR2RGB))plt.subplot(122), plt.axis('off'), plt.title("Zoom: fx=0.75,fy=1.0")plt.imshow(cv2.cvtColor(imgZoom2, cv2.COLOR_BGR2RGB))plt.show()


    擴展例程:1.40 圖像金字塔

    圖像金字塔是一種以多分辨率來解釋圖像的結構,常用于圖像分割、圖像壓縮和機器視覺。

    在需要處理同一圖像的不同分辨率的子圖時,需要創建一組具有不同分辨率的原始圖像。把最大的圖像放在底部,最小的放在頂部,看起來就像一座金字塔,稱為圖像金字塔。

    圖像金字塔是一系列來源于同一張原始圖像、以金字塔形狀排列的分辨率逐步降低的圖像集合。
    金字塔的底部是原始圖像的高分辨率的表示,頂部是低分辨率的近似。

    OpenCV 為向下采樣和向上采樣提供了兩個函數:cv2.pyrDowncv2.pyrUp。

    函數說明:

    cv2.pyrDown(src, dst=None, dstsize=None, borderType=None) → dst # 向下采樣 cv2.pyrUp(src, dst=None, dstsize=None, borderType=None) → dst # 向上采樣

    函數 cv2.pyrDown 是從高分辨率的大尺寸圖像逐次向下采樣得到一系列圖像,構建一個金字塔,稱為高斯金字塔(Gaussian pyramid),實際上是一個重復高斯平滑并重新對圖像采樣的過程。拉普拉斯金字塔每次向下采樣后將再次向上采樣,并記錄殘差信息,可以對圖像進行最大程度的還原。

    # 1.40 圖像金字塔def GussianPyramid(image): # 高斯金字塔level = 2 # 金字塔的層數imgCopy = image.copy()pyramidImages = [] # 創建圖像 Listfor i in range(level):dst = cv2.pyrDown(imgCopy) # 下采樣pyramidImages.append(dst) # 添加到圖像 Listcv2.imshow("pyramid down "+str(i), dst)imgCopy = dst.copy()return pyramidImagesimg = cv2.imread("../images/imgLena.tif") # 讀取彩色圖像(BGR) cv2.namedWindow("input image", cv2.WINDOW_AUTOSIZE) cv2.imshow("input image", img) GussianPyramid(img) # 高斯圖像金字塔 # LapalianPyramid(img) # 拉普拉斯圖像金字塔 cv2.waitKey(0)



    6. 圖像的扭變(錯切)

    圖像的錯切變換也稱斜切,是指平面景物在投影平面上的非垂直投影,使圖像中的圖形在水平方向或垂直方向產生扭變。

    以水平扭變為例,像素點 (x,y) 在水平方向發生扭變變成斜邊,而在垂直方向的邊不變,可以由以下公式描述:
    [x~y~1]=MAS[xy1],MAS=[1tanθ0010001]\begin{bmatrix} \tilde{x}\\ \tilde{y}\\ 1 \end{bmatrix} = M_{AS} \begin{bmatrix} x\\ y\\ 1 \end{bmatrix} ,\hspace{1em} M_{AS} = \begin{bmatrix} 1 &tan \theta &0\\ 0 &1 &0\\ 0 &0 &1 \end{bmatrix} ???x~y~?1????=MAS????xy1????,MAS?=???100?tanθ10?001????

    由扭變角度 θ上式構造錯切變換矩陣 MAS,由函數 cv2.warpAffine 可以計算變換后的扭變圖像。


    基本例程:1.41 圖像的錯切

    # 1.41 圖像的錯切img = cv2.imread("../images/imgB2.jpg") # 讀取彩色圖像(BGR)height, width = img.shape[:2] # 圖片的高度和寬度MAS = np.float32([[1, 0.2, 0], [0, 1, 0]]) # 構造錯切變換矩陣imgShear = cv2.warpAffine(img, MAS, (width, height))plt.figure(figsize=(9,6))plt.subplot(121), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)), plt.title("imgOrigin")plt.subplot(122), plt.imshow(cv2.cvtColor(imgShear, cv2.COLOR_BGR2RGB)), plt.title("imgShear")plt.show()



    7. 圖像的復合變換

    圖像的復合變換是指對給定的圖像連續進行多次上述的平移、旋轉、翻轉、縮放、錯切等基本變換,也稱為級聯變換。

    對給定圖像按一定順序執行若干次基本變換,其變換矩陣仍然可以用 3x3 階變換矩陣表示。進一步地,對圖像依次執行基本變換 F1、F2、…Fn 的變換矩陣分別為 M1、M2、…Mn,可以證明,以圖像中心點為中心進行比例、旋轉進行變換,則復合變換的變換矩陣 M 等于各基本變換矩陣依次相乘所得到的組合矩陣:
    M=M1×M2×?×MnM = M_1 \times M_2 \times \dots \times M_n M=M1?×M2?×?×Mn?

    縮放:
    MAZ=[fx000fy0001]M_{AZ} = \begin{bmatrix} fx &0 &0\\ 0 &f_y &0\\ 0 &0 &1 \end{bmatrix} MAZ?=???fx00?0fy?0?001????

    旋轉:
    MAR=[cosθ?sinθ0sinθcosθ0001]M_{AR} = \begin{bmatrix} cos \theta &-sin \theta &0\\ sin \theta &cos \theta &0\\ 0 &0 &1 \end{bmatrix} MAR?=???cosθsinθ0??sinθcosθ0?001????

    平移:
    MAT=[10dx01dy001]M_{AT} = \begin{bmatrix} 1 &0 &d_x\\ 0 &1 &d_y\\ 0 &0 &1 \end{bmatrix} MAT?=???100?010?dx?dy?1????

    扭變:
    MAS=[1tanθ0010001]M_{AS} = \begin{bmatrix} 1 &tan \theta &0\\ 0 &1 &0\\ 0 &0 &1 \end{bmatrix} MAS?=???100?tanθ10?001????

    鏡像:
    MAF=[?10fw010001]M_{AF} = \begin{bmatrix} -1 &0 &f_w\\ 0 &1 &0\\ 0 &0 &1 \end{bmatrix} MAF?=????100?010?fw?01????


    基本例程:1.42 圖像的復合變換

    # 1.42 圖像的復合變換img = cv2.imread("../images/imgLena.tif") # 讀取彩色圖像(BGR)height, width = img.shape[:2] # 圖片的高度和寬度# (1) 縮放fx, fy = 0.6, 0.6MAZ = np.float32([[fx, 0, 0], [0, fy, 0]]) # 構造縮放變換矩陣imgT1 = cv2.warpAffine(img, MAZ, (width, height)) # 仿射變換, 黑色填充# (2) 平移dx, dy = 50, 200 # dx=100 向右偏移量, dy=50 向下偏移量MAT = np.float32([[1, 0, dx], [0, 1, dy]]) # 構造平移變換矩陣imgT2 = cv2.warpAffine(imgT1, MAT, (width, height), borderValue=(0,255,255)) # 實現仿射變換# (3) 旋轉theta = -30 * np.pi / 180 # 逆時針旋轉 30°cosTheta = np.cos(theta)sinTheta = np.sin(theta)MAR = np.float32([[cosTheta, -sinTheta, 0], [sinTheta, cosTheta, 0]]) # 構造旋轉變換矩陣imgT3 = cv2.warpAffine(imgT2, MAR, (width, height), borderValue=(255,255,0)) # 實現仿射變換# (4) 扭曲theta = -30 * np.pi / 180 # 逆時針扭變 30°MAS = np.float32([[1, np.tan(theta), 0], [0, 1, 0]]) # 構造扭變變換矩陣imgT4 = cv2.warpAffine(imgT3, MAS, (width, height), borderValue=(255,0,255)) # 實現仿射變換plt.figure(figsize=(9,6))plt.subplot(221), plt.axis('off'), plt.title("T1:Zoom")plt.imshow(cv2.cvtColor(imgT1, cv2.COLOR_BGR2RGB)),plt.subplot(222), plt.axis('off'), plt.title("T2:Translation")plt.imshow(cv2.cvtColor(imgT2, cv2.COLOR_BGR2RGB))plt.subplot(223), plt.axis('off'), plt.title("T3:Rotation")plt.imshow(cv2.cvtColor(imgT3, cv2.COLOR_BGR2RGB))plt.subplot(224), plt.axis('off'), plt.title("T4:Shear")plt.imshow(cv2.cvtColor(imgT4, cv2.COLOR_BGR2RGB))plt.show()



    8. 投影變換

    投影變換(Projective mapping)也稱透視變換(Perspective transformation)是建立兩平面場之間的對應關系, 將圖片投影到一個新的視平面(Viewing plane)。

    OpenCV 提供了 cv2.warpPerspective 函數實現投影變換的操作。

    函數說明:

    cv2.getPerspectiveTransform(src, dst[,solveMethod]) → MP cv2.warpPerspective(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) → dst

    函數cv2.getPerspectiveTransform 根據圖像中不共線的 4 個點在變換前后的對應位置求得 (3x3) 變換矩陣,cv2.warpPerspective 使用該 (3x3) 變換矩陣即可求出變換后的圖像。標量進行加法運算。

    參數說明:

    • src:變換前圖像四邊形頂點坐標
    • dst:變換后圖像四邊形頂點坐標
    • solveMethod:矩陣分解方法,傳遞給 cv2.solve 求解變換矩陣 MP
      • cv2.DECOMP_LU:選擇最優軸的高斯消去法,默認方法
      • cv2.DECOMP_SVD:奇異值分解(SVD)方法
      • cv2.DECOMP_EIG:特征值分解方法,src 必須對稱
      • cv2.DECOMP_QR:QR(正交三角)分解
      • cv2.DECOMP_CHOLESKY:Cholesky LLT 分解
    • MP:透視變換矩陣,3行3列
    • dsize: 輸出圖像的大小,二元元組 (width, height)
    • dst:變換操作的輸出圖像,可選項
    • flags:插值方法,整型(int),可選項
      • cv2.INTER_LINEAR:線性插值,默認選項
      • cv2.INTER_NEAREST:最近鄰插值
      • cv2.INTER_AREA:區域插值
      • cv2.INTER_CUBIC:三次樣條插值
      • cv2.INTER_LANCZOS4:Lanczos 插值
    • borderMode:邊界像素方法,整型(int),可選項,默認值為 cv2.BORDER_REFLECT
    • borderValue:邊界填充模式,可選項,默認值為 0(黑色填充)
    • 返回值:dst,透視變換操作的輸出圖像,ndarray 多維數組

    基本例程:1.43 圖像的投影變換

    # 1.43 投影變換 (Projective mapping)img = cv2.imread("../images/imgB2.jpg") # 讀取彩色圖像(BGR)h, w = img.shape[:2] # 圖片的高度和寬度pointSrc = np.float32([[0,0], [w-1,0], [0,h-100], [w-1, h-100]]) # 原始圖像中 4點坐標pointDst = np.float32([[180,50], [w-180,50], [0,h-100], [w-1, h-100]]) # 變換圖像中 4點坐標MP = cv2.getPerspectiveTransform(pointSrc, pointDst) # 計算投影變換矩陣 MimgP = cv2.warpPerspective(img, MP, (512, 512)) # 用變換矩陣 M 進行投影變換plt.figure(figsize=(9,6))plt.subplot(121), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)), plt.title("Original")plt.subplot(122), plt.imshow(cv2.cvtColor(imgP, cv2.COLOR_BGR2RGB)), plt.title("Projective")plt.show()


    基本例程:1.44 圖像的投影變換

    # 1.44 圖像的投影變換img = cv2.imread("../images/imgC2.jpg") # 讀取彩色圖像(BGR)h, w = img.shape[:2] # 圖片的高度和寬度pointSrc = np.float32([[0,0], [w,0], [0,h], [w,h]]) # 原始圖像中 4點坐標pointDst = np.float32([[int(w/3), int(h/3)], [int(w*2/3), int(h/3)], [0,h], [w,h]]) # 變換圖像中 4點坐標MP = cv2.getPerspectiveTransform(pointSrc, pointDst) # 計算投影變換矩陣 MimgP = cv2.warpPerspective(img, MP, (w,h), flags=cv2.INTER_AREA, borderMode=cv2.BORDER_WRAP)plt.figure(figsize=(9,6))plt.subplot(121), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)), plt.title("Original"), plt.axis('off')plt.subplot(122), plt.imshow(cv2.cvtColor(imgP, cv2.COLOR_BGR2RGB)), plt.title("Projective"), plt.axis('off')plt.show()



    9. 直角坐標與極坐標的轉換

    函數 cv2.cartToPolar 用于將直角坐標(笛卡爾坐標)轉換為極坐標,函數 cv2.polarToCart 用于將極坐標轉換為直角坐標(笛卡爾坐標)。

    圓形圖案邊緣上的文字經過及坐標變換后可以垂直的排列在新圖像的邊緣,便于對文字的識別和檢測。

    函數說明:

    cv2.cartToPolar(x, y[, magnitude[, angle[, angleInDegrees]]]) → magnitude, angle cv2.polarToCart(magnitude, angle[, x[, y[, angleInDegrees]]]) → x, y

    函數 cv2.cartToPolar 實現將原點移動到變換中心后的直角坐標向極坐標的轉換,輸入參數為直角坐標系的橫坐標、縱坐標,輸出為極坐標系的向量值、角度值。

    函數 cv2.polarToCart 實現將原點移動到變換中心后的極坐標向直角坐標的轉換,輸入參數為極坐標系的向量值、角度值,輸出為直角坐標系的橫坐標、縱坐標。

    參數說明:

    • x, y:直角坐標系的橫坐標、縱坐標,ndarray 多維數組,浮點型
    • magnitude, angle:極坐標系的向量值、角度值,ndarray 多維數組
    • angleInDegrees:弧度制/角度值選項,默認值 0 選擇弧度制,1 選擇角度制([0,360] )
    • 返回值 magnitude, angle:極坐標系的向量值、角度值,ndarray 多維數組,與輸入的 x, y 具有相同的尺寸和數據類型
    • 返回值 x, y:直角坐標系的橫坐標、縱坐標,ndarray 多維數組,與輸入的 magnitude, angle 具有相同的尺寸和數據類型

    注意事項:

  • 極坐標與直角坐標的變換在數學上是可逆的,但實際變換時存在誤差,角度計算精度約為 0.3度,坐標計算精度約為 1e-6。
  • 直角坐標系以變換中心為圓心的同一個圓上的點,在極坐標系中顯示為一條直線。因此,用極坐標變換可以實現圓形物體的圖像修正。
  • cv2.cartToPolar 中的可選項 magnitude, angle 可以用于指定變換中心的坐標,cv2.polarToCart 中的可選項 x, y 可以用于指定變換中心的坐標。

  • 基本例程:1.45 直角坐標轉換為極坐標

    # 1.45 直角坐標轉換為極坐標x = np.float32([0,1,2, 0,1,2, 0,1,2]) -1y = np.float32([0,0,0, 1,1,1, 2,2,2]) -1n = np.arange(9)r, theta = cv2.cartToPolar(x, y, angleInDegrees=True)xr,yr = cv2.polarToCart(r, theta, angleInDegrees=1)print(xr,yr)plt.figure(figsize=(9,5))plt.subplot(121), plt.title("Cartesian coordinate"), plt.plot(x, y, 'o')for i, txt in enumerate(n):plt.annotate(txt, (x[i], y[i]))plt.subplot(122), plt.title("Polar coordinate"), plt.plot(r, theta, 'o')for i, txt in enumerate(n):plt.annotate(txt, (r[i], theta[i]))plt.show()

    擴展例程:1.46 極坐標系中的圓形圖像修正

    # 1.46 極坐標系中的圓形圖像修正img = cv2.imread("../images/imgC3.jpg") # 讀取彩色圖像(BGR)h, w = img.shape[:2] # 圖片的高度和寬度cx, cy = int(w/2), int(h/2) # 以圖像中心點作為變換中心maxR = max(cx, cy) # 最大變換半徑imgPolar = cv2.linearPolar(img, (cx,cy), maxR, cv2.INTER_LINEAR)imgPR = cv2.rotate(imgPolar, cv2.ROTATE_90_COUNTERCLOCKWISE)plt.figure(figsize=(10,6))plt.subplot(121), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)), plt.title("Original"), plt.axis('off')plt.subplot(122), plt.imshow(cv2.cvtColor(imgPR, cv2.COLOR_BGR2RGB)), plt.title("PolarTrans"), plt.axis('off')plt.show()

    通過極坐標和直角坐標的對應關系,將圓環圖像轉換為矩形圖像,可以對圓形圖像進行修正。


    【本節完】



    版權聲明:

    youcans 的 OpenCV 學習課 @ youcans 原創作品
    轉載必須標注原文鏈接:https://blog.csdn.net/youcans/article/details/121288020
    Copyright 2021 youcans, XUPT
    Crated:2021-11-15

    歡迎關注 『youcans 的 OpenCV 學習課』 系列,持續更新
    youcans 的 OpenCV 學習課—1.安裝與環境配置
    youcans 的 OpenCV 學習課—2.圖像讀取與顯示
    youcans 的 OpenCV 學習課—3.圖像的創建與修改
    youcans 的 OpenCV 學習課—4.圖像的疊加與混合
    youcans 的 OpenCV 學習課—5.圖像的幾何變換
    youcans 的 OpenCV 學習課—6.灰度變換與直方圖處理
    youcans 的 OpenCV 學習課—7.空間域圖像濾波
    youcans 的 OpenCV 學習課—8.頻率域圖像濾波(上)
    youcans 的 OpenCV 學習課—9.頻率域圖像濾波(下)

    總結

    以上是生活随笔為你收集整理的youcans 的 OpenCV 学习课—5.图像的几何变换的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    成人欧美一区二区三区在线观看 | 日韩精品一区二区在线观看 | 国产一区二区精品久久91 | 日本中文字幕视频 | 国产资源在线观看 | 在线观看av网站 | 国产喷水在线 | 伊人网综合在线观看 | 在线va视频 | 中文字幕视频免费观看 | 国产黄色大全 | 精品麻豆入口免费 | 久久精品在线视频 | 久久成人高清视频 | 国产成人精品亚洲 | 韩国在线一区 | 国产黄免费看 | 欧美天堂久久 | 最近av在线 | 一区二区视频欧美 | 九九免费在线观看 | 九九热在线免费观看 | 开心色婷婷 | 亚洲欧洲av | 婷婷久久网| 97国产精品亚洲精品 | 精品成人a区在线观看 | 黄色一级片视频 | 97超碰国产精品女人人人爽 | 狠狠干中文字幕 | 国产成人精品一二三区 | 成人v| 国产精品porn | 天天人人 | 日韩在线观看av | 亚洲春色综合另类校园电影 | 久久夜av | 在线观看视频99 | av资源免费在线观看 | 国产精品综合av一区二区国产馆 | 国产成人av在线影院 | www.一区二区三区 | 成人一级免费电影 | 性色av免费看 | 蜜臀av夜夜澡人人爽人人桃色 | 欧美一级片播放 | 99精品系列 | 国产无套精品久久久久久 | 国产午夜精品视频 | 久草精品视频在线看网站免费 | 欧美性色网站 | 久久视频6 | 欧美一区二区三区在线看 | 久草影视在线观看 | 久久精品4| 人人爽人人看 | 日本福利视频在线 | 日本 在线 视频 中文 有码 | 日韩免费视频观看 | www.av免费 | 99精品视频在线 | 五月婷婷色播 | 亚洲一区黄色 | 亚洲在线视频免费观看 | 日韩精品久久久 | 国产一区在线不卡 | 日本中文字幕在线免费观看 | 色婷婷激情四射 | 久久天天操 | 国内精品亚洲 | 91超碰免费在线 | 六月天综合网 | 欧美成人精品欧美一级乱黄 | 免费日韩 精品中文字幕视频在线 | 日韩免费av在线 | 成人黄视频 | 欧美日韩一级视频 | 最新色站| 久久精品a | 热精品 | 欧美一区二区三区激情视频 | 狠狠躁天天躁综合网 | www夜夜操 | 天天操天天干天天干 | 国产精品成人一区二区三区吃奶 | 久久人人爽人人人人片 | 欧美激情精品久久久久久变态 | 亚洲国产日本 | 亚洲三级精品 | 天堂av中文字幕 | 亚洲天堂网在线视频观看 | 日韩精品久久一区二区三区 | 免费观看一级特黄欧美大片 | 娇妻呻吟一区二区三区 | 成人黄色影片在线 | 美女网站视频一区 | 中文在线最新版天堂 | 久久综合色一综合色88 | 99精品色 | 婷婷5月色 | 最新av观看 | 手机在线欧美 | 午夜精品久久久久久 | 在线激情影院一区 | 麻豆超碰| 婷婷六月天在线 | 不卡av在线| 91免费观看国产 | 国产黄色网| 日韩a欧美 | 欧美日韩后 | 毛片精品免费在线观看 | 久久99精品久久久久久久久久久久 | 成人在线观看日韩 | 亚洲资源在线 | 97超碰在线资源 | 中文字幕亚洲情99在线 | 国产精品大片免费观看 | 永久免费精品视频 | 亚洲视频免费在线观看 | 日韩欧美精选 | 亚洲成年人免费网站 | 黄色av一区二区三区 | 久久黄色免费视频 | 亚洲人毛片 | 国产精品日韩久久久久 | 久草久视频 | 成人免费视频网址 | 波多野结衣视频一区二区 | 中文字幕一区二区在线播放 | 国产成人精品一区二三区 | 欧美日韩性视频在线 | 国产精品毛片久久久久久久 | 久久久久亚洲精品中文字幕 | 91精品国产高清 | 午夜av大片 | 99视频在线免费播放 | 又黄又刺激的视频 | www.天天操.com | 午夜影院先 | 国产精品成人av久久 | 国产香蕉视频 | av亚洲产国偷v产偷v自拍小说 | av一级在线观看 | 免费网站黄 | 99久在线精品99re8热视频 | 国产精品美女久久久久久免费 | 精品一区二区三区电影 | 美女视频久久久 | 中文视频在线 | 男女精品久久 | 久草在线中文视频 | 正在播放一区二区 | 亚洲午夜精品一区二区三区电影院 | 九草视频在线观看 | 免费在线观看中文字幕 | 嫩模bbw搡bbbb搡bbbb | 成人久久久久久久久久 | 久久精品视频免费 | 特级毛片在线免费观看 | 国产中文字幕国产 | av在线日韩 | 欧美一级免费高清 | 国产日韩高清在线 | 成人国产一区二区 | 亚洲免费a | 日日摸日日爽 | 日韩最新在线视频 | 国产亚洲精品久久久久久电影 | 天天草夜夜| 亚洲最大的av网站 | www国产亚洲精品久久网站 | 丁香六月在线观看 | 日本精品视频网站 | 美女视频黄的免费的 | 国内精品久久久久影院日本资源 | 91精彩视频在线观看 | 亚洲精品91天天久久人人 | 色视频 在线 | 丝袜+亚洲+另类+欧美+变态 | 免费高清在线观看成人 | 日韩欧美网址 | 免费午夜网站 | 欧美色精品天天在线观看视频 | 在线v| 国产视频91在线 | 国产精品av免费 | 中文字幕在线电影 | 婷婷色在线播放 | 黄色的视频网站 | 天天操天天操天天操天天 | 九草视频在线观看 | 丁香六月婷 | 四虎永久国产精品 | 国产日韩欧美视频在线观看 | 91精品一区二区三区久久久久久 | 福利视频网站 | 国产婷婷视频在线 | 国产精品久久久久久69 | 少妇精品久久久一区二区免费 | 亚洲一区免费在线 | 国产91免费看 | 美女久久99| 丁香六月婷婷激情 | 韩国精品在线 | 成人av在线直播 | 久久免费福利视频 | 91精品啪啪 | 久久天堂网站 | 99视频在线观看免费 | 国产 日韩 在线 亚洲 字幕 中文 | 久久久影片| 91插插插网站 | 国产一级片不卡 | 在线免费观看黄色大片 | 国产一区二区观看 | 天天综合操 | 日本精品va在线观看 | 天天草天天| 片网站| 久久国产精品小视频 | 日韩在线电影观看 | 婷婷综合成人 | 国内精品视频久久 | 婷婷色吧 | 五月天丁香亚洲 | 久久不卡国产精品一区二区 | av超碰在线| 91av在线电影 | 国产精品美女久久久久久久 | 欧美日韩视频免费 | 精品一区二区三区久久 | a√天堂中文在线 | 欧美中文字幕第一页 | 国产a国产a国产a | va视频在线 | 91香蕉视频 | 中文字幕 影院 | 国产精品久久久久久久久婷婷 | 天天综合精品 | 久久国产影院 | 婷婷综合视频 | 成年人免费在线观看网站 | 国产99黄| free. 性欧美.com | 国产精品亚洲精品 | 又长又大又黑又粗欧美 | 人人射人人射 | 99色 | 国产一级a毛片视频爆浆 | 久久免费成人 | 久久人人爽人人爽人人片av软件 | 青青河边草免费观看 | 日韩久久久久久久 | 成人午夜影视 | 亚洲视频2 | 国产精品久久视频 | 婷婷亚洲五月色综合 | 欧美精品一区在线 | 免费a网站 | 色av男人的天堂免费在线 | 久久天堂影院 | 草久在线视频 | 麻豆国产精品va在线观看不卡 | 波多野结衣一区二区 | 日韩av不卡在线播放 | 91视频 - 114av| 激情综合色综合久久 | 天天射天天干天天爽 | 丁香av在线 | www.日韩免费| 久久久久国产成人精品亚洲午夜 | 精品99在线视频 | 天天干,天天操,天天射 | 欧美影院久久 | 成人影片免费 | 成人在线小视频 | 成人黄色电影视频 | 国产1区2| 成人午夜电影在线 | 91视频 - x99av | 99久久99久久免费精品蜜臀 | 韩国精品视频在线观看 | www免费视频com━ | 日韩电影久久 | 一区二区三区三区在线 | 五月天久久狠狠 | 91av影视 | 97夜夜澡人人双人人人喊 | 国产区在线 | 91色吧 | 日韩中文字幕免费视频 | 国产成人黄色 | 91亚洲国产 | 欧美国产一区在线 | 99热这里只有精品1 av中文字幕日韩 | www黄色av | 又色又爽的网站 | 色婷婷视频 | 五月婷婷伊人网 | 五月婷婷在线视频观看 | 国产精品一区二区久久久 | 久久精品伊人 | 国产高清免费av | 国产成人91 | 婷婷在线资源 | 99re国产视频 | 99精品国产福利在线观看免费 | 久久亚洲欧美日韩精品专区 | 国产精品久久伊人 | 国产在线色视频 | 悠悠av资源片 | 亚洲成人动漫在线观看 | 成人免费观看在线视频 | 欧美福利视频一区 | 日韩av电影网站在线观看 | 2021久久| 97成人啪啪网 | 婷婷五综合| 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 激情视频一区 | 婷婷播播网 | 久久在线精品视频 | 久久99热久久99精品 | 日韩久久电影 | 亚洲国产欧美在线看片xxoo | 婷婷色视频 | 人人澡人人爱 | 狠狠插狠狠干 | 亚洲伊人av | 国产亚洲午夜高清国产拍精品 | 国内成人av | 亚洲女人天堂成人av在线 | 国内精品免费久久影院 | 在线观看视频日韩 | 久久综合九色欧美综合狠狠 | 中文在线天堂资源 | 粉嫩一区二区三区粉嫩91 | 国产91对白在线 | 国产精品视频线看 | 五月天亚洲激情 | 久久精品二区 | 在线观看亚洲精品视频 | 亚洲精品小视频 | 99综合电影在线视频 | 国产精品久久久久久久久久ktv | 99视频在线精品国自产拍免费观看 | 久久黄视频 | 人人人爽| 九九久久成人 | 香蕉视频啪啪 | 狠狠gao| 久久精品资源 | 亚洲日日射 | 99精品国产一区二区三区不卡 | 日本精品在线看 | 国产精品美女久久久久久久久 | 午夜影院一级片 | 黄色网大全 | av不卡中文字幕 | 伊人五月天.com | 日本三级国产 | 日韩精品免费一区二区在线观看 | 婷婷色在线资源 | 国产精品欧美一区二区三区不卡 | 久久只精品99品免费久23小说 | 特级aaa毛片 | 久久久久久久久久伊人 | 国产高清成人av | 狠狠色丁香九九婷婷综合五月 | 亚洲精选在线观看 | 国内综合精品午夜久久资源 | 国产精品精品国产婷婷这里av | 亚洲精品久久在线 | 国产成人精品国内自产拍免费看 | 国产香蕉久久精品综合网 | 国产理论一区二区三区 | 91欧美国产 | 婷婷新五月 | 中文字幕免费高清av | 日韩精品一区二区三区在线播放 | 欧美精品xx | 久久视频免费观看 | 精品国产亚洲一区二区麻豆 | 97碰碰精品嫩模在线播放 | 在线看日韩av | 丁香久久综合 | av 一区二区三区四区 | 久久中文欧美 | 国产精品久久久久久久午夜 | 久久激情视频 久久 | 超碰在线亚洲 | 色综合久久久久综合体桃花网 | 国产精品视频最多的网站 | 九九视频在线观看视频6 | 夜色资源站wwwcom | 天天色影院 | 欧美一区二区日韩一区二区 | 最近免费中文视频 | av高清一区二区三区 | 97色在线视频 | 综合网在线视频 | 人人舔人人爽 | 亚洲欧美日韩在线一区二区 | 久久精品国产亚洲 | 国产精品第72页 | 免费三级av| 亚洲激情婷婷 | 69久久久久久久 | www.国产在线 | 一区二区亚洲精品 | 欧美福利片在线观看 | 综合久久影院 | 久久久免费精品国产一区二区 | 久久福利| 久久久久成人精品免费播放动漫 | 97超碰中文 | 在线观看色网 | 在线国产精品视频 | 免费观看成人网 | 成人一级片免费看 | 久久成年人视频 | 狠狠色丁香婷婷综合欧美 | www.黄色片.com | 亚洲综合小说 | 久久久久久高潮国产精品视 | 亚洲精品播放 | 国产999精品久久久影片官网 | 9在线观看免费高清完整 | 亚洲精品视频免费观看 | 久久精品1区| 国产一区在线观看免费 | 青青色影院 | 日韩v欧美v日本v亚洲v国产v | 91亚色免费视频 | 欧美少妇的秘密 | 激情视频一区二区三区 | 狠狠干狠狠久久 | 欧美一级高清片 | sm免费xx网站 | 欧美日韩国产精品一区二区亚洲 | 日韩一级精品 | 国产三级午夜理伦三级 | 在线精品视频在线观看高清 | 日韩精品黄 | 韩国三级av在线 | 午夜日b视频 | 中文字幕免 | 亚洲国产片 | 超碰公开在线观看 | 97在线视频免费 | 国产一级片久久 | 天天弄天天干 | 在线观看完整版免费 | 国产高清专区 | 日韩精品视频在线免费观看 | a v在线观看 | 丁香花在线观看免费完整版视频 | 久久久久综合视频 | 综合影视| 久久久久久久久免费视频 | 最近中文字幕在线 | 日韩在线电影一区二区 | 国产视频在线观看一区二区 | 午夜精品一区二区三区四区 | 欧美一区二区三区特黄 | 81精品国产乱码久久久久久 | 国产精品久久久久一区二区三区共 | 亚洲国产精品推荐 | 韩国av电影网 | 国产精品久久久久久麻豆一区 | 久久看毛片 | 色黄久久久久久 | 久久tv| 国产免费黄视频在线观看 | 人人揉人人揉人人揉人人揉97 | 黄色免费高清视频 | 亚洲一区精品人人爽人人躁 | 中文在线www| 午夜免费福利视频 | 久久久久国产成人精品亚洲午夜 | 在线看一区 | 日韩中文字幕免费在线播放 | 伊人亚洲综合网 | 日韩精品一区二区在线 | 99精品视频在线播放观看 | 久草视频免费播放 | 婷婷国产精品 | 国产精品福利在线播放 | 国产高清永久免费 | 在线黄频| 成人av.com | 久久久精品福利视频 | 伊人成人精品 | 久久免费视频在线观看 | 成人av视屏 | 国产在线视频资源 | 日三级在线 | 中文字幕在线第一页 | 久久久久9999亚洲精品 | 四虎成人免费影院 | 91福利免费 | 欧美最猛性xxxxx免费 | 成人黄色av网站 | 欧美精品xxx| 国产高清视频免费 | 欧美精品乱码久久久久 | 激情 婷婷 | 亚洲日本黄色 | 久久大片 | 国产精品入口麻豆 | 91成人国产| 亚洲精品国产精品国自产观看 | 涩涩伊人 | 欧美极品裸体 | 日韩有码网站 | 在线观看日韩国产 | 97超碰人人| 中文字幕在线观看免费 | 久久不色| 99成人在线视频 | 亚洲影视九九影院在线观看 | 中文字幕视频一区 | 日韩欧美高清一区二区三区 | 欧美在线视频第一页 | 在线观看一区视频 | 欧美一级高清片 | 天天天干 | 深爱激情五月综合 | 色五月激情五月 | 青青草在久久免费久久免费 | 久久精国产 | 久久久国产毛片 | 国产一级大片免费看 | 中文字幕色网站 | 蜜臀av.com| 久久久免费高清视频 | 久久狠狠亚洲综合 | 精品影院| 国产精品自产拍在线观看桃花 | 超碰97国产在线 | 一级片在线 | 91精品国产高清自在线观看 | 亚洲一区网站 | 不卡av电影在线观看 | 日日操天天操狠狠操 | 99精品视频免费 | 精品视频免费久久久看 | 69绿帽绿奴3pvideos | 国产在线91在线电影 | 麻花传媒mv免费观看 | 亚洲激情 欧美激情 | 亚洲精品成人av在线 | 天天曰夜夜爽 | 99久久精品日本一区二区免费 | 在线视频观看成人 | 中文字幕二区在线观看 | 久久久污| 男女精品久久 | 日本xxxxav | 色哟哟国产精品 | 九色琪琪久久综合网天天 | 精品国产一区二区三区蜜臀 | 亚洲最新毛片 | 在线国产激情视频 | 中文字幕一区二 | 热久久电影 | 国产一级在线观看视频 | 看毛片网站| 国产高清视频在线观看 | 久久综合色8888 | 黄色软件视频大全免费下载 | 国内外成人免费在线视频 | 不卡视频在线看 | 毛片网站免费 | 国产一级片播放 | 国内视频在线观看 | 91福利视频网站 | 啪一啪在线 | 亚洲精品视频中文字幕 | 大片网站久久 | 国产亚洲精品美女 | 国产91精品高清一区二区三区 | 国产亚洲亚洲 | 国产精品h在线观看 | 天天av综合网 | 欧美做受高潮 | 一区二区三区免费在线观看视频 | www色av| 17videosex性欧美 | 91喷水| 黄色小说在线免费观看 | 9在线观看免费高清完整版 玖玖爱免费视频 | 婷婷六月天综合 | 97超碰国产精品女人人人爽 | 在线观看爱爱视频 | 国产亚洲视频在线观看 | 一区二区视 | 亚洲免费专区 | 日韩大片在线观看 | 黄色免费电影网站 | 91九色老 | 国产成人精品午夜在线播放 | 狠狠色噜噜狠狠狠狠 | 最新极品jizzhd欧美 | 深夜免费网站 | 一区二区三区四区免费视频 | 亚洲精品视频在线免费 | 91一区在线观看 | 欧美一区二区精品在线 | 国内精品久久久久影院男同志 | 四虎国产精品免费观看视频优播 | 亚洲午夜在线视频 | 中文字幕在线网 | 久久天天躁狠狠躁亚洲综合公司 | 国产在线播放观看 | 国产91精品看黄网站在线观看动漫 | 成人超碰在线 | 久久久高清| 中文av在线免费观看 | 黄色网中文字幕 | 国产精品麻豆99久久久久久 | 国产麻豆电影 | 婷婷国产一区二区三区 | 成人av电影免费在线观看 | 狠狠色噜噜狠狠狠狠2022 | 国产一区二区播放 | 日韩精品免费 | 在线亚洲人成电影网站色www | 欧美性爽爽 | 国产99久久久国产精品免费二区 | 国产视 | 97精产国品一二三产区在线 | 在线观看久 | 欧美在线视频一区二区 | 国产精品久久久久久久婷婷 | 免费观看成人网 | 欧美a级在线免费观看 | 国产精品av免费观看 | 999久久国精品免费观看网站 | 亚洲国产小视频在线观看 | 欧美a免费 | 一区二区三区中文字幕在线观看 | 国产高清免费视频 | 亚洲理论在线观看电影 | 天天操网站 | 欧美性色黄大片在线观看 | 操操日日 | 精品亚洲va在线va天堂资源站 | 在线观看91精品视频 | 日韩电影一区二区三区在线观看 | 激情综合色图 | 日韩成人在线免费观看 | 国产99久久精品一区二区300 | 国产福利91精品一区二区三区 | 国产在线精品一区二区三区 | 亚州精品天堂中文字幕 | 国产美女精品久久久 | 国产欧美精品一区二区三区 | 日韩精品专区在线影院重磅 | 免费看久久 | 91精品国产一区二区在线观看 | 一级精品视频在线观看宜春院 | 亚洲天堂网在线观看视频 | www.久久99| 久热免费在线 | 91最新地址永久入口 | 99精品视频免费看 | 国产九九精品 | 久久国产精品系列 | 欧美一级黄色视屏 | 日韩一级电影在线观看 | 久草资源免费 | 亚洲天堂首页 | 在线之家免费在线观看电影 | 国产专区在线 | 色资源在线 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 香蕉影视app | 天天摸天天操天天爽 | 中文字幕成人在线观看 | 激情开心色 | 日韩精品免费一区二区三区 | 亚洲国产资源 | 国产一线二线三线在线观看 | 视色网站 | 日本精品视频一区二区 | 天天操天天操天天操天天操天天操天天操 | 99视频+国产日韩欧美 | 亚洲免费永久精品国产 | 国产高清综合 | 久久1电影院 | 最近高清中文字幕在线国语5 | 国产精品精品久久久久久 | 麻豆精品传媒视频 | 日本婷婷色 | 99精品视频免费在线观看 | 伊人www22综合色 | 97超碰在线免费 | 精品久久久久久久久久久久久久久久久久 | 国产人免费人成免费视频 | 中文字幕第一页在线 | 色爱区综合激月婷婷 | 天天做天天爱天天综合网 | 六月天色婷婷 | 久久久国产精品人人片99精片欧美一 | 91视频免费观看 | 国产一级高清 | 一本一道波多野毛片中文在线 | 88av视频| 成片人卡1卡2卡3手机免费看 | 日本久久中文 | 最近在线中文字幕 | av成人资源 | 欧美成人高清 | 国产精品久久久久久久99 | 国产高清一区二区 | 91九色免费视频 | 久久美女高清视频 | 夜夜爽88888免费视频4848 | 毛片基地黄久久久久久天堂 | 超碰在线天天 | 日韩精品一区二区在线观看 | 色综合天天天天做夜夜夜夜做 | 久久人操 | 黄色app网站在线观看 | 国产亚洲精品免费 | 99中文字幕 | 国产成年免费视频 | 亚洲精品一区二区三区在线观看 | 国产精品免费大片视频 | 黄色毛片网站在线观看 | 国产片网站| 国产成人精品一区二区三区网站观看 | 99久久这里只有精品 | 欧美a视频在线观看 | 男女啪啪网站 | 综合在线观看 | 天天做天天爱天天爽综合网 | 国产拍揄自揄精品视频麻豆 | 九九热精品视频在线播放 | 亚洲黑丝少妇 | 青青河边草免费视频 | 91传媒免费观看 | www.色com| 欧美另类老妇 | 五月婷婷丁香色 | 手机看国产毛片 | 午夜精品婷婷 | 91福利社区在线观看 | 久久久久久看片 | 色就色,综合激情 | 狠狠色香婷婷久久亚洲精品 | 亚洲三级国产 | 日本婷婷色 | 日韩有码专区 | 国产在线观看一区 | av中文字幕网 | 在线视频18在线视频4k | 伊人射| 婷婷av电影 | 日韩综合在线观看 | 91伊人| 一级做a爱片性色毛片www | 国产成人一区二区三区影院在线 | 五月婷婷开心中文字幕 | 伊人亚洲综合网 | 国产成人av在线影院 | 国产精品久久久久久久久久 | 国产一级黄 | 欧美日韩99| 最新中文字幕在线观看视频 | 成人在线视频一区 | 美女精品在线观看 | 国产精品9999久久久久仙踪林 | 久久视频免费 | 国产一区二区三区高清播放 | 亚洲国产三级在线 | 高清av在线 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 免费在线观看av电影 | 免费久久99精品国产 | 欧美九九九 | 最新婷婷色 | 天天曰天天曰 | 91看片淫黄大片在线播放 | 天天色天天综合 | 久久久久久久久亚洲精品 | 亚洲激情在线观看 | 欧美综合色 | 天天操网站 | 久久理论影院 | 草免费视频 | 国产中文字幕国产 | 久久大片网站 | 国产精品 中文在线 | 97理论电影| 又黄又爽的视频在线观看网站 | 一区二区三区播放 | 91精品久久久久久综合乱菊 | 日韩区欠美精品av视频 | 日韩免费电影在线观看 | 国产精品久久久777 成人手机在线视频 | 91成年人视频| 高清精品视频 | 五月婷婷狠狠 | 国产中文字幕在线观看 | www.色在线| 久久九九精品久久 | 久草精品视频 | 日本巨乳在线 | www.婷婷com | 精品99999 | 精品一二三四五区 | 国产日韩欧美在线看 | av天天草| 亚洲国产影院av久久久久 | av黄色国产 | 国产婷婷精品av在线 | 特级黄录像视频 | 天天夜夜操| 色六月婷婷 | 91九色视频在线播放 | 欧美小视频在线 | 亚洲精品日韩在线观看 | 丁香激情综合 | 久久久精品在线观看 | 99精品视频在线看 | 综合网av | 91av在线免费 | 黄av资源 | 久久久久9999亚洲精品 | 黄色的视频 | 色播五月婷婷 | 最近2019中文免费高清视频观看www99 | 国产精品成人免费一区久久羞羞 | 久久字幕网 | 四虎影视国产精品免费久久 | 91桃色在线观看视频 | 亚洲色图美腿丝袜 | 五月天久久久久 | 欧美男同视频网站 | 日韩精品视频在线免费观看 | 欧美精品国产综合久久 | 夜夜操狠狠干 | 婷婷色视频 | 久草观看| 精品在线视频一区二区三区 | 亚洲资源 | 日韩在线第一区 | 最近最新mv字幕免费观看 | 亚洲精品99久久久久中文字幕 | 在线观看完整版 | 在线天堂日本 | 激情五月激情综合网 | 免费观看成人网 | 在线看成人 | 91福利试看 | 亚洲色图 校园春色 | 天天综合入口 | 国产资源在线观看 | 午夜精品av在线 | 探花视频在线观看免费版 | 久草影视在线观看 | 午夜久久影院 | 久久99久久99精品免费看小说 | 亚洲最大成人免费网站 | 美女视频黄网站 | 在线看国产视频 | jizz欧美性9| 美女国产网站 | 国产一区二区视频在线 | 亚洲日本精品 | 日韩综合一区二区三区 | 日韩久久精品一区二区三区 | 国产精品免费在线视频 | 亚洲在线精品 | 成 人 黄 色视频免费播放 | 国产精品99免视看9 国产精品毛片一区视频 | 天天曰 | 色是在线视频 | 国产在线欧美日韩 | 精品一区在线 | 很污的网站| 最近中文字幕高清字幕在线视频 | 99在线免费观看 | 视频国产精品 | 精品99久久久久久 | 99精品免费在线 | av观看免费在线 | 亚洲成人av在线播放 | 久久精品国产免费观看 | 日韩夜夜爽 | 天天插天天操天天干 | 天天射综合网视频 | 久久夜夜爽 | 国产日韩欧美精品在线观看 | 91在线精品观看 | 成人av一区二区在线观看 | 亚洲三级网站 | 日韩高清不卡在线 | 欧美日韩免费在线视频 | 午夜在线观看 | 久久伦理视频 | 最近中文字幕在线播放 | 免费黄色特级片 | 成人禁用看黄a在线 | 午夜精品成人一区二区三区 | 久久综合九色综合网站 | 天天干天天操天天入 | 欧美激情另类文学 | 色狠狠狠| 中文字幕激情 | 成人免费网视频 | 日本成人黄色片 | 日本韩国欧美在线观看 | 国产亚洲视频系列 | 国产精品一区在线观看你懂的 | 亚洲一区二区三区在线看 | 天天看天天操 | 久久久免费网站 | 337p日本大胆噜噜噜噜 | 成人一级电影在线观看 | 一级免费看 | 91精品国产99久久久久久红楼 | 91亚洲狠狠婷婷综合久久久 | 九九激情视频 | 欧美一区二区精美视频 | 2023av在线 | 国产高清小视频 | 国内毛片毛片 | 天天射天天爱天天干 | 免费观看的av网站 | 日韩欧美高清一区二区 | 日韩av片在线 | 91丨九色丨国产在线 | 中文成人字幕 | 亚洲 中文字幕av | 深夜福利视频在线观看 | 久久艹艹 | 欧美性精品 | 久久久www成人免费毛片 | 国产精品专区一 | 久久久久国产精品免费 | 国产综合在线观看视频 | 亚洲国产免费看 | 欧美一区免费在线观看 | 色噜噜色噜噜 | 国产资源在线观看 | 亚洲精品乱码久久久久久 | 欧美日韩在线观看一区二区三区 | 在线观看国产区 | 亚洲成人二区 | 综合色综合 | 91精品国产一区 | 91亚洲国产成人 | 久久成人毛片 | 国产精品99久久久久的智能播放 | 四虎永久免费网站 | 麻豆视频观看 | 欧美一级特黄高清视频 | 97偷拍视频 | 操操碰 | 精品产品国产在线不卡 | 国产一区在线观看视频 | 91激情视频在线 | 97免费在线观看视频 | 成人久久久精品国产乱码一区二区 | 国产xvideos免费视频播放 | 久久精品视频网址 | 激情视频国产 | 成人久久国产 | 国产热re99久久6国产精品 | 日本一区二区免费在线观看 | 国产精品1区2区3区在线观看 | 国产精品免费小视频 | 久久夜av| 久久99精品热在线观看 | 99热国产在线观看 | 成人黄色毛片视频 | 亚洲成a人片在线观看网站口工 | 久久伊人色综合 | 成人黄大片视频在线观看 | 亚洲伊人婷婷 | 久久撸在线视频 | 99视频国产在线 | 狠狠色狠狠色综合系列 | 偷拍精品一区二区三区 | 亚洲精品中文字幕在线 | 欧美爽爽爽| 成人av直播 | 久久成人国产精品免费软件 | 96久久 | 久久视频网 | 久久久久久国产一区二区三区 | 亚洲一区网站 | 成人一级在线观看 | 高清色免费 |