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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

OpenCV之imgproc 模块. 图像处理(3)霍夫线变换 霍夫圆变换 Remapping 重映射 仿射变换

發布時間:2025/3/21 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV之imgproc 模块. 图像处理(3)霍夫线变换 霍夫圆变换 Remapping 重映射 仿射变换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

霍夫線變換

目標

在這個部分您將學習到:

  • 使用OpenCV的以下函數?HoughLines?和?HoughLinesP?來檢測圖像中的直線.

原理

Note

?

以下原理的說明來自書籍?學習OpenCV?作者Bradski和Kaehler.

霍夫線變換

  • 霍夫線變換是一種用來尋找直線的方法.
  • 是用霍夫線變換之前, 首先要對圖像進行邊緣檢測的處理,也即霍夫線變換的直接輸入只能是邊緣二值圖像.
  • 它是如何實現的?

  • 眾所周知, 一條直線在圖像二維空間可由兩個變量表示. 例如:

  • 在?笛卡爾坐標系:?可由參數:??斜率和截距表示.
  • 在?極坐標系:?可由參數:??極徑和極角表示
  • 對于霍夫變換, 我們將用?極坐標系?來表示直線. 因此, 直線的表達式可為:

    化簡得:?

  • 一般來說對于點?, 我們可以將通過這個點的一族直線統一定義為:

    這就意味著每一對??代表一條通過點??的直線.

  • 如果對于一個給定點??我們在極坐標對極徑極角平面繪出所有通過它的直線, 將得到一條正弦曲線. 例如, 對于給定點?and??我們可以繪出下圖 (在平面??-?):

    只繪出滿足下列條件的點??and?.

  • 我們可以對圖像中所有的點進行上述操作. 如果兩個不同點進行上述操作后得到的曲線在平面??-??相交, 這就意味著它們通過同一條直線. 例如, 接上面的例子我們繼續對點:?,??和點?,??繪圖, 得到下圖:

    這三條曲線在??-??平面相交于點?, 坐標表示的是參數對 () 或者是說點?, 點??和點??組成的平面內的的直線.

  • 那么以上的材料要說明什么呢? 這意味著一般來說, 一條直線能夠通過在平面??-??尋找交于一點的曲線數量來?檢測. 越多曲線交于一點也就意味著這個交點表示的直線由更多的點組成. 一般來說我們可以通過設置直線上點的?閾值?來定義多少條曲線交于一點我們才認為?檢測?到了一條直線.

  • 這就是霍夫線變換要做的. 它追蹤圖像中每個點對應曲線間的交點. 如果交于一點的曲線的數量超過了?閾值, 那么可以認為這個交點所代表的參數對??在原圖像中為一條直線.

  • 標準霍夫線變換和統計概率霍夫線變換

    OpenCV實現了以下兩種霍夫線變換:

  • 標準霍夫線變換
    • 原理在上面的部分已經說明了. 它能給我們提供一組參數對??的集合來表示檢測到的直線
    • 在OpenCV 中通過函數?HoughLines?來實現
  • 統計概率霍夫線變換
    • 這是執行起來效率更高的霍夫線變換. 它輸出檢測到的直線的端點?
    • 在OpenCV 中它通過函數?HoughLinesP?來實現

    代碼

  • 這個程序是用來做什么的?
    • 加載一幅圖片
    • 對圖片進行?標準霍夫線變換?或是?統計概率霍夫線變換.
    • 分別在兩個窗口顯示原圖像和繪出檢測到直線的圖像.
  • 我們將要說明的例程能從?這里?下載。 一個更高級的版本 (能同時演示標準霍夫線變換和統計概率霍夫線變換并帶有活動條來改變變換的閾值) 能從?這里?下載。
  • #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp"#include <iostream>using namespace cv; using namespace std;void help() {cout << "\nThis program demonstrates line finding with the Hough transform.\n""Usage:\n""./houghlines <image_name>, Default is pic1.jpg\n" << endl; }int main(int argc, char** argv) {const char* filename = argc >= 2 ? argv[1] : "pic1.jpg";Mat src = imread(filename, 0);if(src.empty()){help();cout << "can not open " << filename << endl;return -1;}Mat dst, cdst;Canny(src, dst, 50, 200, 3);cvtColor(dst, cdst, CV_GRAY2BGR);#if 0 vector<Vec2f> lines; HoughLines(dst, lines, 1, CV_PI/180, 100, 0, 0 ); for( size_t i = 0; i < lines.size(); i++ ) { float rho = lines[i][0], theta = lines[i][1]; Point pt1, pt2; double a = cos(theta), b = sin(theta); double x0 = a*rho, y0 = b*rho; pt1.x = cvRound(x0 + 1000*(-b)); pt1.y = cvRound(y0 + 1000*(a)); pt2.x = cvRound(x0 - 1000*(-b)); pt2.y = cvRound(y0 - 1000*(a)); line( cdst, pt1, pt2, Scalar(0,0,255), 3, CV_AA); } #else vector<Vec4i> lines; HoughLinesP(dst, lines, 1, CV_PI/180, 50, 50, 10 ); for( size_t i = 0; i < lines.size(); i++ ) { Vec4i l = lines[i]; line( cdst, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(0,0,255), 3, CV_AA); } #endifimshow("source", src);imshow("detected lines", cdst);waitKey();return 0; }

    代碼說明

  • 加載圖片

    Mat src = imread(filename, 0); if(src.empty()) {help();cout << "can not open " << filename << endl;return -1; }
  • 用Canny算子對圖像進行邊緣檢測

    Canny(src, dst, 50, 200, 3);

    現在我們將要執行霍夫線變換. 我們將會說明怎樣使用OpenCV的函數做到這一點:

  • 標準霍夫線變換

  • 首先, 你要執行變換:

    vector<Vec2f> lines; HoughLines(dst, lines, 1, CV_PI/180, 100, 0, 0 );

    帶有以下自變量:

    • dst: 邊緣檢測的輸出圖像. 它應該是個灰度圖 (但事實上是個二值化圖)
    • lines: 儲存著檢測到的直線的參數對??的容器 *?rho?: 參數極徑??以像素值為單位的分辨率. 我們使用?1像素.
    • theta: 參數極角??以弧度為單位的分辨率. 我們使用?1度?(即CV_PI/180)
    • threshold: 要”檢測” 一條直線所需最少的的曲線交點
    • srn?and?stn: 參數默認為0. 查缺OpenCV參考文獻來獲取更多信息.
  • 通過畫出檢測到的直線來顯示結果.

    for( size_t i = 0; i < lines.size(); i++ ) {float rho = lines[i][0], theta = lines[i][1];Point pt1, pt2;double a = cos(theta), b = sin(theta);double x0 = a*rho, y0 = b*rho;pt1.x = cvRound(x0 + 1000*(-b));pt1.y = cvRound(y0 + 1000*(a));pt2.x = cvRound(x0 - 1000*(-b));pt2.y = cvRound(y0 - 1000*(a));line( cdst, pt1, pt2, Scalar(0,0,255), 3, CV_AA); }
  • 統計概率霍夫線變換

  • 首先, 你要執行變換:

    vector<Vec4i> lines; HoughLinesP(dst, lines, 1, CV_PI/180, 50, 50, 10 );

    帶有以下自變量:

    • dst: 邊緣檢測的輸出圖像. 它應該是個灰度圖 (但事實上是個二值化圖) *?lines: 儲存著檢測到的直線的參數對??的容器
    • rho?: 參數極徑??以像素值為單位的分辨率. 我們使用?1?像素.
    • theta: 參數極角??以弧度為單位的分辨率. 我們使用?1度?(即CV_PI/180)
    • threshold: 要”檢測” 一條直線所需最少的的曲線交點 *?minLinLength: 能組成一條直線的最少點的數量. 點數量不足的直線將被拋棄.
    • maxLineGap: 能被認為在一條直線上的亮點的最大距離.
  • 通過畫出檢測到的直線來顯示結果.

    for( size_t i = 0; i < lines.size(); i++ ) {Vec4i l = lines[i];line( cdst, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(0,0,255), 3, CV_AA); }
  • 顯示原始圖像和檢測到的直線:

    imshow("source", src); imshow("detected lines", cdst);
  • 等待用戶按鍵推出程序

    waitKey();
  • 結果

    Note

    ?

    得到的結果使用的是在上面?代碼?部分提到的更高級版代碼. 霍夫線變換的代碼沒有改變, 唯一不同的是在GUI的部分加入了活動條可動態改變閾值.輸入圖像為:

    通過執行統計概率霍夫線變換我們能得到下面的結果:

    當你使用滑動條來改變?閾值?的時候會觀察到檢測到線的數目的改變. 這是因為: 如果你設置了一個更大的閾值, 能檢測到的線的數目將更少 (你需要更多的點來表示一條能檢測到的直線).





    霍夫圓變換

    目標

    在這個教程中你將學習如何:

    • 使用OpenCV函數?HoughCircles?在圖像中檢測圓.

    原理

    霍夫圓變換

    • 霍夫圓變換的基本原理和上個教程中提到的霍夫線變換類似, 只是點對應的二維極徑極角空間被三維的圓心點x, y還有半徑r空間取代.

    • 對直線來說, 一條直線能由參數極徑極角??表示. 而對圓來說, 我們需要三個參數來表示一個圓, 如上文所說現在原圖像的邊緣圖像的任意點對應的經過這個點的所有可能圓是在三維空間有下面這三個參數來表示了,其對應一條三維空間的曲線. 那么與二維的霍夫線變換同樣的道理, 對于多個邊緣點越多這些點對應的三維空間曲線交于一點那么他們經過的共同圓上的點就越多,類似的我們也就可以用同樣的閾值的方法來判斷一個圓是否被檢測到, 這就是標準霍夫圓變換的原理, 但也正是在三維空間的計算量大大增加的原因, 標準霍夫圓變化很難被應用到實際中:

      這里的??表示圓心的位置 (下圖中的綠點) 而??表示半徑, 這樣我們就能唯一的定義一個圓了, 見下圖:

    • 出于上面提到的對運算效率的考慮, OpenCV實現的是一個比標準霍夫圓變換更為靈活的檢測方法:?霍夫梯度法, 也叫2-1霍夫變換(21HT), 它的原理依據是圓心一定是在圓上的每個點的模向量上, 這些圓上點模向量的交點就是圓心, 霍夫梯度法的第一步就是找到這些圓心, 這樣三維的累加平面就又轉化為二維累加平面. 第二部根據所有候選中心的邊緣非0像素對其的支持程度來確定半徑. 21HT方法最早在Illingworth的論文The Adaptive Hough Transform中提出并詳細描述, 也可參照Yuen在1990年發表的A Comparative Study of Hough Transform Methods for Circle Finding, Bradski的《學習OpenCV》一書則對OpenCV中具體對算法的具體實現有詳細描述并討論了霍夫梯度法的局限性.

    例程

  • 這個例程是用來干嘛的?
    • 加載一幅圖像并對其模糊化以降噪
    • 對模糊化后的圖像執行霍夫圓變換 .
    • 在窗體中顯示檢測到的圓.
  • 下面要講解的例程代碼能從?這里?下載. 一個更高級的版本 (能同時演示標準霍夫圓變換和統計概率霍夫圓變換并帶有可改變閾值的滑動條) 能從?這里?找到.
  • #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <iostream> #include <stdio.h>using namespace cv;/** @function main */ int main(int argc, char** argv) {Mat src, src_gray;/// Read the imagesrc = imread( argv[1], 1 );if( !src.data ){ return -1; }/// Convert it to graycvtColor( src, src_gray, CV_BGR2GRAY );/// Reduce the noise so we avoid false circle detectionGaussianBlur( src_gray, src_gray, Size(9, 9), 2, 2 );vector<Vec3f> circles;/// Apply the Hough Transform to find the circlesHoughCircles( src_gray, circles, CV_HOUGH_GRADIENT, 1, src_gray.rows/8, 200, 100, 0, 0 );/// Draw the circles detectedfor( size_t i = 0; i < circles.size(); i++ ){Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));int radius = cvRound(circles[i][2]);// circle centercircle( src, center, 3, Scalar(0,255,0), -1, 8, 0 );// circle outlinecircle( src, center, radius, Scalar(0,0,255), 3, 8, 0 );}/// Show your resultsnamedWindow( "Hough Circle Transform Demo", CV_WINDOW_AUTOSIZE );imshow( "Hough Circle Transform Demo", src );waitKey(0);return 0; }

    說明

  • 加載一幅圖像

    src = imread( argv[1], 1 );if( !src.data ){ return -1; }
  • 轉成灰度圖:

    cvtColor( src, src_gray, CV_BGR2GRAY );
  • 執行高斯模糊以降低噪聲:

    GaussianBlur( src_gray, src_gray, Size(9, 9), 2, 2 );
  • 執行霍夫圓變換:

    vector<Vec3f> circles;HoughCircles( src_gray, circles, CV_HOUGH_GRADIENT, 1, src_gray.rows/8, 200, 100, 0, 0 );

    函數帶有以下自變量:

    • src_gray: 輸入圖像 (灰度圖)
    • circles: 存儲下面三個參數:??集合的容器來表示每個檢測到的圓.
    • CV_HOUGH_GRADIENT: 指定檢測方法. 現在OpenCV中只有霍夫梯度法
    • dp = 1: 累加器圖像的反比分辨率
    • min_dist = src_gray.rows/8: 檢測到圓心之間的最小距離
    • param_1 = 200: Canny邊緣函數的高閾值
    • param_2 = 100: 圓心檢測閾值.
    • min_radius = 0: 能檢測到的最小圓半徑, 默認為0.
    • max_radius = 0: 能檢測到的最大圓半徑, 默認為0
  • 繪出檢測到的圓:

    for( size_t i = 0; i < circles.size(); i++ ) {Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));int radius = cvRound(circles[i][2]);// circle centercircle( src, center, 3, Scalar(0,255,0), -1, 8, 0 );// circle outlinecircle( src, center, radius, Scalar(0,0,255), 3, 8, 0 );}

    你將會看到圓用紅色繪出而圓心用小綠點表示

  • 顯示檢測到的圓:

    namedWindow( "Hough Circle Transform Demo", CV_WINDOW_AUTOSIZE ); imshow( "Hough Circle Transform Demo", src );
  • 等待用戶按鍵結束程序

    waitKey(0);
  • 結果

    上面例程輸入一張圖例得出的運行結果如下:





    Remapping 重映射

    目標

    本教程向你展示如何使用OpenCV函數?remap?來實現簡單重映射.

    理論

    重映射是什么意思?

    • 把一個圖像中一個位置的像素放置到另一個圖片指定位置的過程.

    • 為了完成映射過程, 有必要獲得一些插值為非整數像素坐標,因為源圖像與目標圖像的像素坐標不是一一對應的.

    • 我們通過重映射來表達每個像素的位置??:

      這里??是目標圖像,??是源圖像,??是作用于??的映射方法函數.

    • 讓我們來思考一個快速的例子. 想象一下我們有一個圖像??, 我們想滿足下面的條件作重映射:

      會發生什么? 圖像會按照??軸方向發生翻轉. 例如, 源圖像如下:

      看到紅色圈關于 x 的位置改變(??軸水平翻轉):

    • 通過 OpenCV 的函數?remap?提供一個簡單的重映射實現.

    代碼

  • 本程序做什么?
    • 裝載一幅圖像.
    • 程序按秒循環, 在一個窗口中順序出現4種重映射過程對相同的圖像.
    • 等待用戶按 ‘ESC’ 鍵退出程序。
  • 下面是本教程代碼. 你也可以從?這里?下載。
  • #include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include <iostream>#include <stdio.h>using namespace cv;/// Global variablesMat src, dst;Mat map_x, map_y;char* remap_window = "Remap demo";int ind = 0;/// Function Headersvoid update_map( void );/** * @function main */int main( int argc, char** argv ){/// Load the imagesrc = imread( argv[1], 1 );/// Create dst, map_x and map_y with the same size as src:dst.create( src.size(), src.type() );map_x.create( src.size(), CV_32FC1 );map_y.create( src.size(), CV_32FC1 );/// Create windownamedWindow( remap_window, CV_WINDOW_AUTOSIZE );/// Loopwhile( true ){/// Each 1 sec. Press ESC to exit the programint c = waitKey( 1000 );if( (char)c == 27 ){ break; }/// Update map_x & map_y. Then apply remapupdate_map();remap( src, dst, map_x, map_y, CV_INTER_LINEAR, BORDER_CONSTANT, Scalar(0,0, 0) );/// Display resultsimshow( remap_window, dst );}return 0;}/** * @function update_map * @brief Fill the map_x and map_y matrices with 4 types of mappings */void update_map( void ){ind = ind%4;for( int j = 0; j < src.rows; j++ ){ for( int i = 0; i < src.cols; i++ ){switch( ind ){case 0:if( i > src.cols*0.25 && i < src.cols*0.75 && j > src.rows*0.25 && j < src.rows*0.75 ){map_x.at<float>(j,i) = 2*( i - src.cols*0.25 ) + 0.5 ;map_y.at<float>(j,i) = 2*( j - src.rows*0.25 ) + 0.5 ;}else{ map_x.at<float>(j,i) = 0 ;map_y.at<float>(j,i) = 0 ;}break;case 1:map_x.at<float>(j,i) = i ;map_y.at<float>(j,i) = src.rows - j ;break;case 2:map_x.at<float>(j,i) = src.cols - i ;map_y.at<float>(j,i) = j ;break;case 3:map_x.at<float>(j,i) = src.cols - i ;map_y.at<float>(j,i) = src.rows - j ;break;} // end of switch}}ind++; }

    說明

  • 首先準備程序用到的變量:

    Mat src, dst; Mat map_x, map_y; char* remap_window = "Remap demo"; int ind = 0;
  • 加載一幅圖像:

    src = imread( argv[1], 1 );
  • 創建目標圖像和兩個映射矩陣.( x 和 y )

    dst.create( src.size(), src.type() ); map_x.create( src.size(), CV_32FC1 ); map_y.create( src.size(), CV_32FC1 );
  • 創建一個窗口用于展示結果.

    namedWindow( remap_window, CV_WINDOW_AUTOSIZE );
  • 建立一個間隔1000毫秒的循環,每次循環執行更新映射矩陣參數并對源圖像進行重映射處理(使用?mat_x?和?mat_y),然后把更新后的目標圖像顯示出來:

    while( true ) {/// Each 1 sec. Press ESC to exit the programint c = waitKey( 1000 );if( (char)c == 27 ){ break; }/// Update map_x & map_y. Then apply remapupdate_map();remap( src, dst, map_x, map_y, CV_INTER_LINEAR, BORDER_CONSTANT, Scalar(0,0, 0) );/// Display resultsimshow( remap_window, dst ); }

    上面用到的重映射函數?remap. 參數說明:

    • src: 源圖像
    • dst: 目標圖像,與?src?相同大小
    • map_x: x方向的映射參數. 它相當于方法??的第一個參數
    • map_y: y方向的映射參數. 注意?map_y?和?map_x?與?src?的大小一致。
    • CV_INTER_LINEAR: 非整數像素坐標插值標志. 這里給出的是默認值(雙線性插值).
    • BORDER_CONSTANT: 默認

    如何更新重映射矩陣?mat_x?和?mat_y? 請繼續看:

  • 更新重映射矩陣:?我們將分別使用4種不同的映射:

  • 圖像寬高縮小一半,并顯示在中間:

    所有成對的參數??處理后都符合:??和?

  • 圖像上下顛倒:?

  • 圖像左右顛倒:?

  • 同時執行b和c的操作:?

  • 下面的代碼片段說明上述的映射過程. 在這里?map_x?代表第一個坐標?h(i,j)?,?map_y?是第二個坐標.

    for( int j = 0; j < src.rows; j++ ) { for( int i = 0; i < src.cols; i++ ){switch( ind ){case 0:if( i > src.cols*0.25 && i < src.cols*0.75 && j > src.rows*0.25 && j < src.rows*0.75 ){map_x.at<float>(j,i) = 2*( i - src.cols*0.25 ) + 0.5 ;map_y.at<float>(j,i) = 2*( j - src.rows*0.25 ) + 0.5 ;}else{ map_x.at<float>(j,i) = 0 ;map_y.at<float>(j,i) = 0 ;}break;case 1:map_x.at<float>(j,i) = i ;map_y.at<float>(j,i) = src.rows - j ;break;case 2:map_x.at<float>(j,i) = src.cols - i ;map_y.at<float>(j,i) = j ;break;case 3:map_x.at<float>(j,i) = src.cols - i ;map_y.at<float>(j,i) = src.rows - j ;break;} // end of switch}}ind++; }

    結果

  • 上面的代碼編譯后, 運行時給一個圖片路徑參數. 例如,使用下面的圖片:

  • 圖像寬高縮小一半,并顯示在中間:

  • 圖像上下顛倒:

  • 圖像左右顛倒:

  • 兩個方向同時顛倒:





  • 仿射變換

    目標

    在這個教程中你將學習到如何:

  • 使用OpenCV函數?warpAffine?來實現一些簡單的重映射.
  • 使用OpenCV函數?getRotationMatrix2D?來獲得一個??旋轉矩陣
  • 原理

    什么是仿射變換?

  • 一個任意的仿射變換都能表示為?乘以一個矩陣?(線性變換) 接著再?加上一個向量?(平移).

  • 綜上所述, 我們能夠用仿射變換來表示:

  • 旋轉 (線性變換)
  • 平移 (向量加)
  • 縮放操作 (線性變換)
  • 你現在可以知道, 事實上, 仿射變換代表的是兩幅圖之間的?關系?.

  • 我們通常使用??矩陣來表示仿射變換.

    考慮到我們要使用矩陣??和??對二維向量??做變換, 所以也能表示為下列形式:

    ?or?

  • 怎樣才能求得一個仿射變換?

  • 好問題. 我們在上文有提到過仿射變換基本表示的就是兩幅圖片之間的?聯系?. 關于這種聯系的信息大致可從以下兩種場景獲得:

  • 我們已知??和?T?而且我們知道他們是有聯系的. 接下來我們的工作就是求出矩陣?
  • 我們已知??and?. 要想求得?. 我們只要應用算式??即可. 對于這種聯系的信息可以用矩陣??清晰的表達 (即給出明確的2×3矩陣) 或者也可以用兩幅圖片點之間幾何關系來表達.
  • 讓我們形象地說明一下. 因為矩陣??聯系著兩幅圖片, 我們以其表示兩圖中各三點直接的聯系為例. 見下圖:

    點1, 2 和 3 (在圖一中形成一個三角形) 與圖二中三個點一一映射, 仍然形成三角形, 但形狀已經大大改變. 如果我們能通過這樣兩組三點求出仿射變換 (你能選擇自己喜歡的點), 接下來我們就能把仿射變換應用到圖像中所有的點.

  • 例程

  • 這個例程是做什么的?
    • 加載一幅圖片
    • 對這幅圖片應用仿射變換. 這個變換是從源圖像和目標圖像的兩組三點之間的聯系獲得的. 這一步我們使用函數warpAffine?來實現.
    • 仿射變換結束后再對圖像應用旋轉. 這里的旋轉繞圖像中點
    • 等待用戶退出程序
  • 例程代碼在下面給出. 當然你也可以從?這里?下載
  • #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <iostream> #include <stdio.h>using namespace cv; using namespace std;/// 全局變量 char* source_window = "Source image"; char* warp_window = "Warp"; char* warp_rotate_window = "Warp + Rotate";/** @function main */int main( int argc, char** argv ){Point2f srcTri[3];Point2f dstTri[3];Mat rot_mat( 2, 3, CV_32FC1 );Mat warp_mat( 2, 3, CV_32FC1 );Mat src, warp_dst, warp_rotate_dst;/// 加載源圖像src = imread( argv[1], 1 );/// 設置目標圖像的大小和類型與源圖像一致warp_dst = Mat::zeros( src.rows, src.cols, src.type() );/// 設置源圖像和目標圖像上的三組點以計算仿射變換srcTri[0] = Point2f( 0,0 );srcTri[1] = Point2f( src.cols - 1, 0 );srcTri[2] = Point2f( 0, src.rows - 1 );dstTri[0] = Point2f( src.cols*0.0, src.rows*0.33 );dstTri[1] = Point2f( src.cols*0.85, src.rows*0.25 );dstTri[2] = Point2f( src.cols*0.15, src.rows*0.7 );/// 求得仿射變換warp_mat = getAffineTransform( srcTri, dstTri );/// 對源圖像應用上面求得的仿射變換warpAffine( src, warp_dst, warp_mat, warp_dst.size() );/** 對圖像扭曲后再旋轉 *//// 計算繞圖像中點順時針旋轉50度縮放因子為0.6的旋轉矩陣Point center = Point( warp_dst.cols/2, warp_dst.rows/2 );double angle = -50.0;double scale = 0.6;/// 通過上面的旋轉細節信息求得旋轉矩陣rot_mat = getRotationMatrix2D( center, angle, scale );/// 旋轉已扭曲圖像warpAffine( warp_dst, warp_rotate_dst, rot_mat, warp_dst.size() );/// 顯示結果namedWindow( source_window, CV_WINDOW_AUTOSIZE );imshow( source_window, src );namedWindow( warp_window, CV_WINDOW_AUTOSIZE );imshow( warp_window, warp_dst );namedWindow( warp_rotate_window, CV_WINDOW_AUTOSIZE );imshow( warp_rotate_window, warp_rotate_dst );/// 等待用戶按任意按鍵退出程序waitKey(0);return 0;}

    說明

  • 定義一些需要用到的變量, 比如需要用來儲存中間和目標圖像的Mat和兩個需要用來定義仿射變換的二維點數組.

    Point2f srcTri[3]; Point2f dstTri[3];Mat rot_mat( 2, 3, CV_32FC1 ); Mat warp_mat( 2, 3, CV_32FC1 ); Mat src, warp_dst, warp_rotate_dst;
  • 加載源圖像:

    src = imread( argv[1], 1 );
  • 以與源圖像同樣的類型和大小來對目標圖像初始化:

    warp_dst = Mat::zeros( src.rows, src.cols, src.type() );
  • 仿射變換:?正如上文所說, 我們需要源圖像和目標圖像上分別一一映射的三個點來定義仿射變換:

    srcTri[0] = Point2f( 0,0 ); srcTri[1] = Point2f( src.cols - 1, 0 ); srcTri[2] = Point2f( 0, src.rows - 1 );dstTri[0] = Point2f( src.cols*0.0, src.rows*0.33 ); dstTri[1] = Point2f( src.cols*0.85, src.rows*0.25 ); dstTri[2] = Point2f( src.cols*0.15, src.rows*0.7 );

    你可能想把這些點繪出來以獲得對變換的更直觀感受. 他們的位置大概就是在上面圖例中的點的位置 (原理部分). 你會注意到由三點定義的三角形的大小和方向改變了.

  • 通過這兩組點, 我們能夠使用OpenCV函數?getAffineTransform?來求出仿射變換:

    warp_mat = getAffineTransform( srcTri, dstTri );

    我們獲得了用以描述仿射變換的??矩陣 (在這里是?warp_mat)

  • 將剛剛求得的仿射變換應用到源圖像

    warpAffine( src, warp_dst, warp_mat, warp_dst.size() );

    函數有以下參數:

    • src: 輸入源圖像
    • warp_dst: 輸出圖像
    • warp_mat: 仿射變換矩陣
    • warp_dst.size(): 輸出圖像的尺寸

    這樣我們就獲得了變換后的圖像! 我們將會把它顯示出來. 在此之前, 我們還想要旋轉它...

  • 旋轉:?想要旋轉一幅圖像, 你需要兩個參數:

  • 旋轉圖像所要圍繞的中心
  • 旋轉的角度. 在OpenCV中正角度是逆時針的
  • 可選擇:?縮放因子
  • 我們通過下面的代碼來定義這些參數:

    Point center = Point( warp_dst.cols/2, warp_dst.rows/2 ); double angle = -50.0; double scale = 0.6;
  • 我們利用OpenCV函數?getRotationMatrix2D?來獲得旋轉矩陣, 這個函數返回一個??矩陣 (這里是?rot_mat)

    rot_mat = getRotationMatrix2D( center, angle, scale );
  • 現在把旋轉應用到仿射變換的輸出.

    warpAffine( warp_dst, warp_rotate_dst, rot_mat, warp_dst.size() );
  • 最后我們把仿射變換和旋轉的結果繪制在窗體中,源圖像也繪制出來以作參照:

    namedWindow( source_window, CV_WINDOW_AUTOSIZE ); imshow( source_window, src );namedWindow( warp_window, CV_WINDOW_AUTOSIZE ); imshow( warp_window, warp_dst );namedWindow( warp_rotate_window, CV_WINDOW_AUTOSIZE ); imshow( warp_rotate_window, warp_rotate_dst );
  • 等待用戶退出程序

    waitKey(0);
  • 結果

  • 編譯上述例程之后, 我們給出一個圖像的路徑作為參數. 比如這樣一幅圖片:

    仿射變換后我們獲得:

    最后, 應用了一個負角度旋轉 (記住負角度指的是順時針) 和基于一個縮放因子的縮放之后, 我們得到:





  • from: http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/table_of_content_imgproc/table_of_content_imgproc.html#table-of-content-imgproc

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的OpenCV之imgproc 模块. 图像处理(3)霍夫线变换 霍夫圆变换 Remapping 重映射 仿射变换的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    久久人人爽爽人人爽人人片av | 日韩一区精品 | 日韩精品一区二 | 亚洲欧洲一区二区在线观看 | 四虎永久精品在线 | 久久久精品小视频 | 久久激情小视频 | 国产成人福利在线 | 亚洲欧美日韩精品一区二区 | av看片在线 | 精品久久九九 | 国产精品一级在线 | 亚洲经典视频 | 国内精品国产三级国产aⅴ久 | 一区二区三区电影大全 | 中文字幕黄色av | 日韩三级视频在线观看 | 国产一级视频在线免费观看 | 久久免费毛片视频 | 成人av日韩 | 成年人免费观看在线视频 | 日韩欧美国产精品 | 开心色插| 射射射综合网 | 麻豆 videos| 国产精品美女免费 | 久久xxxx| 成人高清在线观看 | 亚洲黄色在线观看 | 精品国产中文字幕 | 五月天视频网站 | 9在线观看免费高清完整版 玖玖爱免费视频 | 国产偷在线 | 五月婷婷久 | 久久精品xxx | 日韩欧美在线观看一区二区三区 | 午夜日b视频 | 99精品免费观看 | 亚洲欧美日韩精品久久久 | 天天视频色版 | 综合久久一本 | 国产一区二区精 | 久久人人精品 | 午夜美女av | 中文有码在线 | 人人狠| 欧美一级看片 | 国产黄色理论片 | 亚洲成人在线免费 | 黄网站app在线观看免费视频 | 成年人黄色免费视频 | 一区二区欧美日韩 | 亚洲精品国偷拍自产在线观看 | 免费h精品视频在线播放 | 中文在线字幕免费观 | 精品夜夜嗨av一区二区三区 | 久久午夜视频 | 精品自拍网 | 国产精品永久久久久久久www | 久久观看免费视频 | 不卡的av在线播放 | 久久国语露脸国产精品电影 | 丁香花在线视频观看免费 | 一区二区三区高清在线 | 国产18精品乱码免费看 | 亚洲精品成人av在线 | 午夜视频亚洲 | 国内成人av | 夜夜高潮夜夜爽国产伦精品 | 日韩在线免费电影 | 亚洲人毛片 | 日本最新中文字幕 | 97手机电影网 | 久久夜夜操 | 深爱激情五月综合 | 日日夜夜天天久久 | 亚洲一区免费在线 | 日日夜夜婷婷 | 麻花豆传媒mv在线观看 | 久久久久久久综合色一本 | 天天色宗合| 高清国产午夜精品久久久久久 | 91九色视频国产 | 天天射综合网站 | 亚洲婷婷在线视频 | 一区免费观看 | 99久国产 | 在线日韩一区 | 美女网站免费福利视频 | 免费看片在线观看 | 欧美小视频在线观看 | 日韩av网站在线播放 | 久久久久久久看片 | 久久99久久99精品中文字幕 | 国产视频久久久 | 探花视频在线观看+在线播放 | 右手影院亚洲欧美 | 日韩欧美第二页 | aaa亚洲精品一二三区 | 97超碰在线人人 | 伊人五月天婷婷 | 婷婷免费视频 | av看片网址| 人人狠狠综合久久亚洲 | 玖玖精品在线 | 久久亚洲影视 | 在线中文字幕网站 | 国产成人精品亚洲a | 日韩三级视频在线看 | 成人91av| 国产精品国内免费一区二区三区 | 超碰97中文 | 国产精品乱码久久久久久1区2区 | 免费av成人在线 | 婷婷伊人综合 | 国产h片在线观看 | 久久视频二区 | 国产精品99久久免费观看 | 亚洲高清国产视频 | 国产麻豆精品在线观看 | 91精品啪在线观看国产线免费 | 日日射av | 天天插日日射 | 日韩 在线观看 | 免费日韩 | 中文字幕精品一区二区三区电影 | 天堂av网址 | 久久精品黄 | h视频在线看 | 99久久精品国产一区二区三区 | 99国产精品 | 黄色一级免费 | 久久久久国产精品厨房 | 亚州精品视频 | 国产精品久久久久久久久久尿 | 国产免费黄视频在线观看 | 久久高清免费视频 | 国产精品99久久免费黑人 | 亚洲欧美日本国产 | 国产91免费在线 | 999成人网 | 国产亚洲aⅴaaaaaa毛片 | 亚洲成av人电影 | 97综合视频 | 97免费中文视频在线观看 | 麻豆91在线观看 | 久久电影色 | 国产人成一区二区三区影院 | 久久久国产精华液 | 久久久国产精品亚洲一区 | 狠狠色噜噜狠狠 | 日韩精品免费一线在线观看 | 久久这里有精品 | 国产伦精品一区二区三区在线 | 日韩 在线 | 亚洲成av人影片在线观看 | 久草视频资源 | 欧美日韩国产精品一区二区 | 午夜精品一区二区三区在线播放 | 免费在线观看成年人视频 | 91黄色免费网站 | 97精品欧美91久久久久久 | 国产免费成人av | 欧美日韩一区二区免费在线观看 | 国产精品欧美一区二区三区不卡 | 午夜精品导航 | 天天爱天天操天天射 | 免费裸体视频网 | 玖玖视频 | 美女国产| 久久精品国产亚洲精品 | 麻豆视频www | 在线观看一区视频 | 久久99久久99精品免观看粉嫩 | 欧美成年人在线观看 | 国产成人精品区 | 最新午夜 | 久久综合九色综合久久久精品综合 | 亚洲综合色激情五月 | 黄色av一区二区 | 成人97视频一区二区 | 国产99久久九九精品 | 国产精品成人一区二区 | 色午夜影院 | 人人干天天射 | 日本精品一区二区三区在线观看 | 一级精品视频在线观看宜春院 | 亚洲一区精品二人人爽久久 | 久久久一本精品99久久精品66 | 久久精品久久久久 | 国产亚洲情侣一区二区无 | 狠狠干五月天 | 中文字幕区 | 亚洲第一中文网 | 日韩在线免费不卡 | 久久久91精品国产一区二区三区 | 五月天免费网站 | 91豆花在线 | 一本一本久久a久久精品综合小说 | 99热精品在线 | 美女久久视频 | 欧美日韩精品免费观看 | 999久久久久久久久 69av视频在线观看 | 91视频午夜 | av免费观看网站 | 久热免费在线 | 日日噜噜噜噜夜夜爽亚洲精品 | 在线观看中文字幕亚洲 | 国产探花视频在线播放 | 美女网站在线观看 | 色综合久久88 | 69国产盗摄一区二区三区五区 | 免费成人黄色av | 在线天堂中文在线资源网 | 最近中文字幕免费av | 中文字幕在线观看日本 | 天天伊人网 | 91网在线 | 高清av网| 色婷婷激情电影 | 久久久久久久久久久网 | 69精品视频在线观看 | 99久久爱 | 91尤物在线播放 | 久久99久久99精品免视看婷婷 | 亚洲国产视频在线 | 91成人精品一区在线播放69 | 成人a免费看 | 亚洲一区二区视频在线播放 | 国产色拍 | 久久久高清视频 | 在线播放国产一区二区三区 | 99国产视频 | av在线播放亚洲 | 国产免费av一区二区三区 | av 一区二区三区 | 在线蜜桃视频 | 四虎在线观看视频 | 热久久电影| 亚洲观看黄色网 | a级国产乱理论片在线观看 伊人宗合网 | 国产无套一区二区三区久久 | 一区二区视频在线观看免费 | 亚洲国产一区在线观看 | 99视频精品| 中文字幕在线观看免费高清完整版 | 一级黄色片网站 | 久久99久久99精品 | 久久久网址 | 久久久亚洲国产精品麻豆综合天堂 | 国产精品久久久区三区天天噜 | 国产乱码精品一区二区蜜臀 | 国产91探花| 久久综合操| 婷婷色狠狠| 国产精品入口麻豆 | www.97色.com| av在线网站观看 | 久草在线视频精品 | 亚洲精品一区中文字幕乱码 | 国产视频在 | 欧美精品一区二区性色 | 久久免费精品国产 | 久久理论电影网 | 91精品国产高清自在线观看 | 国产91九色蝌蚪 | 日韩在线视频一区 | 久久一区91 | 欧美 日韩 视频 | 一区 在线观看 | 91在线小视频 | 日韩视频在线观看视频 | 日本爱爱免费视频 | 最近中文字幕免费大全 | 国产美女主播精品一区二区三区 | 美女视频免费精品 | 亚洲免费黄色 | 色吊丝av中文字幕 | 国产二区av| 色综合www| 免费福利视频网站 | 嫩嫩影院理论片 | 在线看一区二区 | 亚洲成人一区 | 一级电影免费在线观看 | 久久久国产精品网站 | 国产黄免费看 | 日韩中文字幕在线观看 | 欧美久久久久久久久久久 | 美女久久99 | 精品一区二区电影 | 欧美一级电影免费观看 | 国产高清在线看 | 操久| 欧美国产一区在线 | 色综合久久88色综合天天免费 | 肉色欧美久久久久久久免费看 | 亚洲精品免费播放 | 亚洲永久精品一区 | 免费av在线网站 | 97视频免费观看2区 亚洲视屏 | 亚洲涩涩一区 | 亚洲最大的av网站 | 看国产黄色大片 | 91av手机在线 | 激情婷婷久久 | 久久久久婷 | 99久久电影| 91九色porny在线 | 五月天婷婷在线视频 | 久久视频在线视频 | 涩涩网站在线看 | 麻豆影视网 | 亚洲精品欧美成人 | 久久视频这里有久久精品视频11 | 久久精品这里都是精品 | www.色国产| 99理论片| 久久视频免费在线 | 麻花豆传媒mv在线观看网站 | 国产精品网址在线观看 | 91手机视频 | 亚洲97在线 | 亚洲精品国偷自产在线99热 | 综合久久久久久 | 国产福利一区二区三区视频 | 中文资源在线播放 | 精品一区二区久久久久久久网站 | 午夜电影 电影 | 日本中文字幕影院 | 成年人视频在线观看免费 | 国色天香在线 | 激情丁香月 | 国产在线观看 | 日韩黄色大片在线观看 | 青草视频免费观看 | 夜夜嗨av色一区二区不卡 | 午夜精品一区二区三区在线观看 | 精品女同一区二区三区在线观看 | av电影中文字幕在线观看 | 一区二区欧美在线观看 | 日本午夜免费福利视频 | 伊色综合久久之综合久久 | 成人av网站在线播放 | 久草视频免费在线观看 | 欧美一区二区三区不卡 | av免费在线观看网站 | 天天干夜夜爽 | 在线免费观看黄色小说 | 国产高清一级 | 96久久久| 国产日韩中文字幕在线 | 久久在现视频 | 六月丁香在线视频 | 韩国av一区二区三区在线观看 | 97在线公开视频 | 九九九热精品免费视频观看 | 亚洲成人黄色av | 亚洲成av人片在线观看www | 国产中文字幕免费 | 亚洲久草网| 天天干天天弄 | 人人澡人摸人人添学生av | 国产婷婷一区二区 | 亚洲 欧洲 国产 日本 综合 | 高清av在线免费观看 | 日韩电影一区二区在线观看 | 最近高清中文字幕 | 热久在线 | 日本二区三区在线 | 成人精品久久 | 国产一区二区三区 在线 | 玖玖综合网| 91久久久久久久 | 超碰日韩在线 | a色网站| 亚洲视频电影在线 | 精品在线看 | 免费a视频在线观看 | 国产精品黑丝在线观看 | 嫩模bbw搡bbbb搡bbbb | 成人a级免费视频 | 亚洲国产成人精品在线观看 | 中文字幕在线观看的网站 | 欧美另类v | 成人动漫精品一区二区 | 狠狠操狠狠操 | 精品国产一二三四区 | 色94色欧美 | 国产激情免费 | 亚洲精品av中文字幕在线在线 | 国产v在线播放 | 国产美女被啪进深处喷白浆视频 | 国产自在线 | 一区二区三区免费在线观看视频 | 久久五月婷婷丁香社区 | 国产成人亚洲精品自产在线 | 国产精品中文字幕在线 | 天天色天天色 | 操操操日日日 | 最新精品视频在线 | 最新中文字幕在线观看视频 | 91高清在线 | 国产亚洲精品bv在线观看 | 亚洲精品看片 | 黄在线免费观看 | 欧美激情视频一区二区三区 | 亚洲电影黄色 | 狠狠躁夜夜躁人人爽超碰91 | 欧美成人中文字幕 | 久久夜av| 日韩电影一区二区三区在线观看 | 一区二区中文字幕在线播放 | 99精品国产兔费观看久久99 | 亚洲国产无 | 99精品视频在线观看视频 | 色综合天天综合在线视频 | 日日干天天 | 日本中文乱码卡一卡二新区 | 激情亚洲综合在线 | 亚洲精品高清视频在线观看 | 久久夜色精品国产欧美乱极品 | 国产 视频 高清 免费 | 国产一级性生活 | 国产黄色精品网站 | 丁香婷婷激情国产高清秒播 | 98精品国产自产在线观看 | 日韩亚洲在线视频 | 日韩69视频 | 欧美福利精品 | 亚洲免费精品一区二区 | 波多野结衣在线观看视频 | 亚洲激情视频 | 欧美 国产 视频 | 国产亚洲视频中文字幕视频 | 日韩一级黄色大片 | 精品v亚洲v欧美v高清v | 中文av资源站 | 激情婷婷亚洲 | 国产黄色免费看 | 国产视频一区二区三区在线 | 国产精品123 | 亚洲在线网址 | 久热精品国产 | av免费在线免费观看 | 深爱激情站 | 亚洲精品乱码久久久久久蜜桃91 | 精品国产伦一区二区三区观看方式 | 9i看片成人免费看片 | 中文字幕国产一区二区 | 国产视频一区二区在线播放 | 免费精品视频在线 | 在线中文字幕一区二区 | 最近中文国产在线视频 | 成 人 黄 色 片 在线播放 | 亚洲国产网站 | 五月婷婷视频 | 青青河边草免费直播 | 一级黄色电影网站 | 在线观看黄色小视频 | 亚洲涩涩涩涩涩涩 | 久久国产精品电影 | 亚洲理论在线 | 日韩在线观看精品 | 97在线视频免费 | 一区二区国产精品 | 国产精品一区二区精品视频免费看 | 久久精品4 | 天天干天天操天天拍 | 久久伊人爱 | 亚洲精品美女久久久久网站 | 午夜12点 | 国产精品视频永久免费播放 | 久草a在线 | 玖玖玖国产精品 | 久久都是精品 | 天堂网一区二区三区 | 91精品国产综合久久福利 | 久久精品中文字幕少妇 | 日韩天天操 | 999电影免费在线观看2020 | 91麻豆精品国产91久久久使用方法 | 91视频在线观看免费 | 欧美少妇xxxxxx | 午夜色性片 | 97国产精品一区二区 | av一本久道久久波多野结衣 | 精品视频不卡 | 伊人久久国产 | 国产精品麻豆一区二区三区 | 久久久久久久久久网站 | 久精品视频在线观看 | 亚洲精选国产 | 人人爽人人搞 | 91九色在线视频观看 | 久久影视一区 | 日韩美女黄色片 | 久久视频国产精品免费视频在线 | 一级片在线 | 久久久96 | 色中色综合 | 91人人澡人人爽 | 一区二区三区在线免费观看视频 | 激情中文字幕 | 精品在线不卡 | 成年人视频免费在线 | 色九九视频 | 91爱看片| 国产精品久久综合 | 亚洲永久av | 午夜精品中文字幕 | 久久这里只有精品视频99 | 色综合色综合久久综合频道88 | 国产精品久久久久一区二区三区共 | 99免费在线观看 | 国产欧美精品xxxx另类 | 国产精品第7页 | 免费视频国产 | 人人插人人做 | 亚洲成aⅴ人在线观看 | 国产免费人人看 | 91久久精品一区二区三区 | 中文字幕日韩伦理 | 欧美性生活免费 | 国产伦精品一区二区三区免费 | 色综合久久综合网 | 美女网站视频免费都是黄 | 久久国产高清视频 | 97看片吧 | 欧美一区二区三区在线播放 | 国产91小视频 | 一级欧美黄| 五月天婷亚洲天综合网鲁鲁鲁 | 成 人 黄 色 视频免费播放 | 久久久久9999亚洲精品 | 综合色在线观看 | 在线最新av| 欧美精品久久久久久久久久白贞 | 天天干天天在线 | 人人爽人人爽人人爽学生一级 | 九九在线国产视频 | 国产精品男女啪啪 | 国产黄| 中文字幕av免费在线观看 | 亚洲精品成人 | 国产原创中文在线 | 成全在线视频免费观看 | 日韩精品一区在线播放 | 成人在线观看资源 | 激情伊人 | 天天综合网入口 | 五月婷婷激情六月 | 女人高潮特级毛片 | 久久久精品国产免费观看同学 | 国产精品情侣视频 | 中文字幕在线播放一区 | 日韩aⅴ视频| 91成人在线观看喷潮 | 五月天国产 | 在线观看91精品视频 | 五月婷亚洲 | 在线播放一区二区三区 | 综合婷婷 | 中文字幕在线专区 | 四虎在线观看 | 欧美日韩综合在线观看 | 午夜色大片在线观看 | www.av免费观看 | 色婷婷亚洲 | 99色网站 | 成人黄性视频 | 午夜的福利 | 日b视频在线观看网址 | 麻豆视频免费在线播放 | 国产99色| 91精品久久久久久综合乱菊 | 91一区二区在线 | 国产一级黄 | 97在线视频免费观看 | 国产在线日本 | 综合影视 | 久久久久久久毛片 | 不卡的av中文字幕 | 一区二区三区在线免费观看视频 | 亚洲男男gⅴgay双龙 | 五月激情六月丁香 | 香蕉色综合 | 97在线观看免费观看 | 四虎永久精品在线 | 亚洲欧美国产视频 | 一区二区三区高清 | 性日韩欧美在线视频 | 成人免费观看网址 | 91免费网址 | av在线日韩 | 亚洲91在线 | 日韩av一区二区三区在线观看 | 超碰个人在线 | 伊人亚洲精品 | 日日摸日日爽 | 99视频在线精品国自产拍免费观看 | 午夜免费福利片 | 怡红院久久 | 亚洲视频精选 | 久久亚洲私人国产精品 | 精品xxx| 天天插天天爱 | 国产福利在线 | 日韩av线观看 | 99精品在线免费观看 | 在线视频免费观看 | 免费看污的网站 | 欧美另类巨大 | 国产精品video爽爽爽爽 | 免费欧美精品 | 蜜臀精品久久久久久蜜臀 | 国内综合精品午夜久久资源 | 日韩毛片在线播放 | 99久久999久久久精玫瑰 | 视频在线播放国产 | 久久福利精品 | 日韩一区精品 | 正在播放久久 | 日韩欧美电影在线观看 | 91精品啪 | 亚洲精品人人 | www.久久成人 | 久一网站 | 韩国av电影在线观看 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 亚洲热视频 | 国产五月婷婷 | 成人av免费网站 | 亚洲国产伊人 | 一区二区三区精品在线视频 | 狠狠狠狠狠干 | 狠狠插天天干 | 成 人 黄 色 视频免费播放 | 韩日三级在线 | 国产精品理论片在线观看 | www.色午夜,com| 手机av在线免费观看 | 天天操夜夜操天天射 | 五月婷婷综合激情网 | 国内精品久久影院 | 日韩三级成人 | 又色又爽的网站 | 久久理论片 | 欧美在线观看视频一区二区三区 | 欧美日韩视频精品 | 四虎国产精品免费观看视频优播 | 国产一级电影免费观看 | 日韩精品欧美视频 | 日日综合 | 亚洲精品在线一区二区三区 | 亚洲japanese制服美女 | 激情综合色综合久久综合 | 成人超碰在线 | 色香com.| 国产一二三区在线观看 | 成人免费在线播放视频 | 草久久久久久久 | 麻豆视频一区 | 十八岁以下禁止观看的1000个网站 | 开心丁香婷婷深爱五月 | 欧美日韩免费观看一区二区三区 | 免费看av片网站 | 久久久久9999亚洲精品 | 手机在线中文字幕 | 成人免费av电影 | 日韩精品aaa | 久久成人资源 | 亚洲黄色在线观看 | 免费在线激情电影 | 精品国产乱码久久久久久久 | 日韩免费网址 | 精品国产一区二区三区不卡 | 久久草精品 | 午夜影院日本 | 亚州精品在线视频 | 91一区二区三区在线观看 | 久久久久北条麻妃免费看 | av大全在线播放 | 日本一区二区三区免费看 | 成人在线免费看 | 麻豆视频免费在线播放 | 一二区精品 | 亚洲网站在线看 | 五月天亚洲激情 | 精品高清美女精品国产区 | 日韩国产精品一区 | 国产v在线播放 | 香蕉影视app | aa一级片 | 亚洲精品白浆高清久久久久久 | 日韩一级电影网站 | 欧美精品被 | 精品免费在线视频 | 色九九在线 | 91久久精品一区 | 久久99在线观看 | 中文字幕乱码亚洲精品一区 | 国产精品久久电影网 | 在线视频免费观看 | av免费线看 | 久久久精品久久 | 999电影免费在线观看2020 | 久章操| 久久久资源 | 亚洲精品乱码久久久久久 | 去看片| 手机版av在线| 欧美一区视频 | 99热精品视| 中文字幕字幕中文 | 97日日碰人人模人人澡分享吧 | 久久av网 | 欧洲精品久久久久毛片完整版 | 免费日韩在线 | 久久婷婷一区二区三区 | 中文字幕av免费观看 | 精品在线视频一区 | 午夜视频导航 | 精品久久久久久久久久 | 国产精品日韩精品 | 亚洲第一成网站 | 成人国产精品免费观看 | 免费激情在线电影 | 在线视频日韩一区 | 亚洲成人动漫在线观看 | 91精品视频在线看 | 久久黄色免费观看 | 日本久久久久久久久 | 久久高清 | 91精品伦理 | 日韩在线免费播放 | 婷婷六月综合网 | 日本不卡一区二区 | 国产精品久久精品 | 亚洲精品久久久蜜臀下载官网 | 亚洲永久精品在线观看 | 亚洲永久精品在线观看 | 亚洲 中文 欧美 日韩vr 在线 | 亚洲成aⅴ人在线观看 | 国产成人精品999 | 黄色大片免费播放 | 奇米影视在线99精品 | 国产91亚洲精品 | 中文字幕视频网站 | 久久短视频| 国产高清在线a视频大全 | 成人免费观看视频大全 | 在线看v片| 日韩在线欧美在线 | 一区二区三区在线观看 | 欧美 亚洲 另类 激情 另类 | 91最新在线 | 国产精品乱码高清在线看 | 欧美日韩国产综合网 | 一级片视频在线 | 国产亚洲永久域名 | 黄色大片日本免费大片 | 亚洲精品91天天久久人人 | 精品国产伦一区二区三区 | 伊人va| 国产精品涩涩屋www在线观看 | 久久a v视频| 黄色av网站在线免费观看 | 91视频电影 | 成人免费 在线播放 | 精品高清视频 | 91精品福利在线 | 九九九免费视频 | 免费a级观看| 天天干天天天天 | 日韩电影在线观看一区二区 | 蜜桃av人人夜夜澡人人爽 | 97视频在线 | 日韩视频一区二区三区在线播放免费观看 | 丁香资源影视免费观看 | 久久三级毛片 | 国产人成看黄久久久久久久久 | 美女黄频| 超碰com| 欧美国产视频在线 | 99热九九这里只有精品10 | 日本黄色大片儿 | 日日干影院 | 欧美成人h版在线观看 | 六月丁香激情综合色啪小说 | 亚洲欧洲中文日韩久久av乱码 | 国内精品久久久久久久久 | 日韩精品最新在线观看 | 人人爱人人做人人爽 | 国产精品久久久久久久7电影 | 亚洲黄色免费在线看 | 夜夜澡人模人人添人人看 | 人人揉人人揉人人揉人人揉97 | а天堂中文最新一区二区三区 | 欧美超碰在线 | 国产精品不卡在线播放 | 综合久久一本 | 久久99国产精品免费网站 | 欧美一级在线观看视频 | 欧美坐爱视频 | 国产精品黑丝在线观看 | 日韩av在线不卡 | 激情五月伊人 | 狠狠干夜夜操天天爽 | 激情丁香综合 | 日韩av黄 | 免费成人在线电影 | 91亚洲精品久久久中文字幕 | 免费91在线观看 | 精产嫩模国品一二三区 | 四虎影视4hu4虎成人 | 欧美精品久久久久性色 | 久久国产经典视频 | 亚洲精品欧美视频 | 欧美精品一区二区三区四区在线 | 91免费在线播放 | 国产系列 在线观看 | 日韩网站视频 | 中文区中文字幕免费看 | 人人爽人人澡人人添人人人人 | 久久久首页 | 欧美精品久久久久久久免费 | 99久久久久成人国产免费 | 国产v欧美 | 日韩精品一区二区在线观看视频 | 五月天六月婷婷 | 中文字幕乱码日本亚洲一区二区 | 亚洲一区欧美激情 | 精品视频免费在线 | 精品国产一区二区三区四区vr | 免费亚洲一区二区 | av网站免费线看精品 | 国产无套精品久久久久久 | 91av原创 | 成人a免费| 欧美a在线看| 99热在线看 | 国产日产欧美在线观看 | 亚洲久草视频 | 国产精品久久久av久久久 | 99精彩视频在线观看免费 | 在线v| 天天操天天射天天爱 | 色多多在线观看 | 亚洲免费不卡 | a天堂在线看 | 狠狠操夜夜 | 国产美女视频免费 | 国产精品一级视频 | 天天插天天狠天天透 | 国产91精品久久久久久 | 亚洲精品视频在线观看免费 | 国产视频导航 | 91精品1区 | 国产一级片免费视频 | 欧美精品乱码久久久久 | 操操日 | 97人人网 | 91精品国自产在线观看 | 亚洲黄在线观看 | 久久久高清免费视频 | 国产精品久久久久久模特 | 亚洲丝袜一区二区 | 色综合狠狠干 | 日韩免费三区 | 日本激情视频中文字幕 | 麻豆视频国产 | 99精品欧美一区二区三区黑人哦 | 国产亚洲精品成人av久久ww | www91在线观看| 国产综合在线视频 | 天天躁天天操 | 精品在线不卡 | 波多野结衣久久精品 | 久久9精品 | 国产一级片直播 | 国产精品永久免费 | 免费在线电影网址大全 | 色网站免费在线观看 | 少妇18xxxx性xxxx片 | 亚洲最大av在线播放 | 国产精品女人久久久久久 | 午夜精品影院 | 久久久久久久久影院 | 狠狠躁夜夜躁人人爽超碰91 | 91豆麻精品91久久久久久 | 午夜影院在线观看18 | 免费精品国产va自在自线 | 日本精品中文字幕 | 99久久国产免费看 | 超碰精品在线观看 | 在线观看一区二区精品 | 中文字幕在线播放一区二区 | 欧美在线观看视频一区二区 | 六月婷婷久香在线视频 | 久久99久久久久久 | 亚洲理论电影 | av在线精品 | 久久精品免费播放 | 天堂在线一区 | 久久精品资源 | 人人精久 | 九九精品在线观看 | 一级黄色片在线免费看 | 日韩v在线91成人自拍 | 成人午夜在线电影 | 国产韩国精品一区二区三区 | 青青草国产免费 | 久久爱综合 | 四虎在线免费观看视频 | 色欧美综合 | 欧美a在线免费观看 | 五月色婷 | 色婷婷综合久久久久 | 欧美色伊人 | 日韩高清一区 | 成年人电影免费在线观看 | 久久歪歪 | 激情网站| 国产精品理论视频 | 国产精品久久9 | 欧美日本啪啪无遮挡网站 | 日韩欧美在线观看一区 | 久草在线免费资源站 | 日韩av成人在线观看 | 午夜久久久影院 | 亚洲资源 | 狠狠干成人 | 成人资源在线 | 在线亚洲欧美视频 | 久久综合久久久 | 九九免费精品视频 | 丁香激情视频 | 一区二区精品在线视频 | 亚洲激情国产精品 | 亚洲黄色小说网址 | 亚洲黄色免费在线 | 久久久麻豆| 久草视频网 | 天天操人人干 | 亚洲欧美国产精品久久久久 | 色天天天| 国产精品精品国产 | 黄色大片国产 | 久久国内精品99久久6app | 中文字幕中文字幕 | 91精品国产福利在线观看 | 国产一级在线观看视频 | 中文字幕有码在线播放 | 色.com| 99久久精品国产欧美主题曲 | 国产免费看| 国产精品一区二区三区四 | 天天天天天天操 | 美女视频黄在线观看 | 久久理论片 | 亚洲视频分类 | 成 人 黄 色 片 在线播放 | 国产免费高清视频 | 久久精品一二区 | 四虎影视精品成人 | 另类老妇性bbwbbw高清 | 成人午夜精品久久久久久久3d | 国产精品成久久久久三级 | 国产精品字幕 | 毛片随便看 | 欧美精品一区在线 | 天天草天天干天天 | 婷婷六月综合亚洲 | 久久精品黄 | 成人97人人超碰人人99 | 国产不卡在线观看视频 | 在线高清av | 中国精品少妇 | 久艹在线免费观看 | 在线观看免费国产小视频 | 久久av免费 | 少妇高潮冒白浆 | 成人教育av| 成人欧美在线 | 99精品视频在线 | 日韩欧美精品在线观看视频 | 久久久久久电影 | 国精产品满18岁在线 | 中文字幕xxxx | 国产精品视频线看 | 九九热视频在线 | 制服丝袜在线91 | 在线观看岛国av | 国产免费观看高清完整版 | 亚洲婷婷免费 | 99视频久 | 久久视精品 |