3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

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

编程问答

opencv形状识别学习总结

發布時間:2025/4/14 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 opencv形状识别学习总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OpenCV基元檢測 Primitive Detection

?


目錄
基元的概念
基元泛指圖像中有特點的單元。常說的基元有:邊緣、角點、斑點、直線段、圓、等
基元檢測是圖像分析的基礎

?

?

?

?

邊緣(Edge)檢測

?

?

?

?

邊緣是圖像中像素灰度值發生劇烈變化而不連續的結果
邊緣是賦予單個像素的一種性質,與圖像函數在該像素的一個鄰域內的梯度特性相關
邊緣幅值:梯度的幅值
邊緣方向:梯度方向旋轉-90度

?

邊緣檢測既是常見基元檢測的基礎,也是基于邊界的圖像分割的第一步。

?

邊緣檢測算法
OpenCV邊緣檢測:Sobel、拉普拉斯算子
OpenCV邊緣檢測:坎尼算子算子


斑點(Blob)檢測
斑點:與周圍灰度有一定差別的區域
面部的雀斑
衛星照片中的一棵數
鋼材X光照片中的雜質或氣泡

?

醫學圖像中的細微腫塊

?

?

斑點檢測算法
OpenCV LoG算子:SIFT算法
OpenCV Blob特征檢測算子

角點(Conner)檢測
角點:物體的拐角、交叉點、 曲線上曲率最大的點等

?

角點的鄰域是圖像中信息比較豐富的區域

?

?

角點檢測方法
基于邊緣的方法:在小鄰域內有兩個不同的主邊緣方向,實際圖像中,孤立點、線段端點也會有類似特
性。缺點是:1)需要先提取邊緣并編碼,計算量大;2)局部變化對穩定性影響大。

?

基于灰度的方法:計算點的曲率和梯度,目前的主流

?

?

角點檢測算法:
OpenCV 角點檢測:Harris算子

?

?

?

哈夫變換-幾何形狀檢測

?

?

?

?

基本哈夫變換:直線檢測
點–線對偶性:直線所在的圖像空間(記為XY)和參數空間PQ(p斜率,q截距)之間的一一映射
XY空間中的直線檢測就等同于PQ空間的點檢測
基本哈夫變換:曲線檢測
對于任意能夠用f(x,c)=0(其中x是圖像點坐標矢量,c是參數矢量)表示曲線或目標輪廓,均可用類似

的方法檢測,只是計算復雜度隨著c維數的增加而增加,需要考慮降維
廣義哈夫變換:目標檢測
問題:待檢目標不是參數化曲線(如正方形),而只是一組輪廓點,希望自動檢測目標的存在及其中心


參考點(p,q)
廣義哈夫變換能夠檢測到特定目標的位置(即參考點(p,q) ),或者說任意位置的待檢目標都是可以發

現的,滿足平移不變性

?

多尺度檢測

?

萬物都有其合適的尺度
原子和基本粒子:普朗克常數
集成電路:微米、納米
人、車、樹、建筑:米-厘米-毫米
地理:千米
太空:光年
多分辨率 與 尺度空間
多分辨率( 圖像金字塔):(低通濾波)再下采樣,多級進行形成金字塔;可能出現假結構.
尺度空間(Wikin’83):用一列單參數、寬度遞增的高斯濾波器將原始信號濾波而得到的一組低頻信號

;高斯核是實現尺度變換的唯一變換核,具有多種優良性質,不會引入假信號

OpenCV 尺度空間與圖像金字塔

http://blog.csdn.net/xiaowei_cqu

========

利用opencv識別并提取圖片中的矩形

?


這次是利用opencv來識別圖片中的矩形。?
其中遇到的問題主要是識別輪廓時矩形內部的形狀導致輪廓不閉合。?
過程如下:


1. 對輸入灰度圖片進行高斯濾波?
2. 做灰度直方圖,提取閾值,做二值化處理?
3. 提取圖片輪廓?
4. 識別圖片中的矩形?
5. 提取圖片中的矩形

1.對輸入灰度圖片進行高斯濾波

? ? cv::Mat src = cv::imread("F:\\t13.bmp",CV_BGR2GRAY);
? ? cv::Mat hsv;
? ? GaussianBlur(src,hsv,cv::Size(5,5),0,0);
2.做灰度直方圖,提取閾值,做二值化處理?
由于給定圖片,背景是黑色,矩形背景色為灰色,矩形中有些其他形狀為白色,可以參考為:?
提取輪廓時,矩形外部輪廓并未閉合。因此,我們需要對整幅圖做灰度直方圖,找到閾值,進行二值化

處理。即令像素值(黑色)小于閾值的,設置為0(純黑色);令像素值(灰色和白色)大于閾值的,設

置為255(白色)

?

?

?

?

?

?

// Quantize the gray scale to 30 levels int gbins = 16; int histSize[] = {gbins};// gray scale varies from 0 to 256 float granges[] = {0,256}; const float* ranges[] = { granges }; cv::MatND hist; // we compute the histogram from the 0-th and 1-st channels int channels[] = {0};//calculate hist calcHist( &hsv, 1, channels, cv::Mat(), // do not use maskhist, 1, histSize, ranges,true, // the histogram is uniformfalse ); //find the max value of hist double maxVal=0; minMaxLoc(hist, 0, &maxVal, 0, 0);int scale = 20; cv::Mat histImg; histImg.create(500,gbins*scale,CV_8UC3);//show gray scale of hist image for(int g=0;g<gbins;g++){float binVal = hist.at<float>(g,0);int intensity = cvRound(binVal*255);rectangle( histImg, cv::Point(g*scale,0),cv::Point((g+1)*scale - 1,binVal/maxVal*400),CV_RGB(0,0,0),CV_FILLED ); } cv::imshow("histImg",histImg);//threshold processing cv::Mat hsvRe; threshold( hsv, hsvRe, 64, 255,cv::THRESH_BINARY);

?

?

?

3.提取圖片輪廓?
為了識別圖片中的矩形,在識別之前還需要提取圖片的輪廓。在經過濾波、二值化處理后,輪廓提取后

的效果比未提取前的效果要好很多。


4.識別矩形?
識別矩形的條件為:圖片中識別的輪廓是一個凸邊形、有四個頂角、所有頂角的角度都為90度。?
具體可以參考:?
http://opencv-code.com/tutorials/detecting-simple-shapes-in-an-image/

?

?

?

?

?

vector<Point> approx;for (size_t i = 0; i < contours.size(); i++) {approxPolyDP(Mat(contours[i]), approx, arcLength(Mat(contours[i]), true)*0.02, true);if (approx.size() == 4 &&fabs(contourArea(Mat(approx))) > 1000 &&isContourConvex(Mat(approx))){double maxCosine = 0;for( int j = 2; j < 5; j++ ){double cosine = fabs(angle(approx[j%4], approx[j-2], approx[j-1]));maxCosine = MAX(maxCosine, cosine);}if( maxCosine < 0.3 )squares.push_back(approx);} }

?

5.提取圖片中的矩形?
由于圖片中矩形傾斜角度不太大,所以沒有做傾斜校正這步操作?
這是主函數提取部分代碼
?

//get rect from imagestd::vector<int> compression_params;compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);compression_params.push_back(9);for(int i=0;i<squares.size();i++){int rect[4],*tmp;tmp = findRectInfo(squares[i]);for(int j=0;j<4;j++)rect[j] = *(tmp+j);cv::Rect roi(rect[1],rect[0],rect[3],rect[2]);cv::Mat roi_of_image = src(roi);char * filename = new char[100];sprintf(filename,"F:\\vs\\ConsoleApplication2\\resultPic_t35\\%i.png",i);cv::imwrite(filename,roi_of_image,compression_params);}

?

?

這是計算每個矩形的點x,y坐標和長寬值

?

?

?

?

?

?

int* findRectInfo(std::vector<cv::Point> rect) {int rectInfo[4] = {0};int x[4]= {0},y[4]= {0};int maxX = 0,maxY = 0,minX = 2000,minY = 2000;//get the rect pointsfor(int i=0;i<4;i++){x[i] = rect[i].x;y[i] = rect[i].y;if(maxX<x[i])maxX = x[i];if(maxY<y[i])maxY = y[i];if(minX>x[i])minX = x[i];if(minY>y[i])minY = y[i];}rectInfo[0] = minY;rectInfo[1] = minX;rectInfo[2] = maxY - minY;rectInfo[3] = maxX - minX;return rectInfo; }


識別并提取結果為:?

?

利用opencv識別并提取圖片中的矩形

Reference:?
1.http://opencv-code.com/tutorials/detecting-simple-shapes-in-an-image/?
2.http://stackoverflow.com/questions/8667818/opencv-c-obj-c-detecting-a-sheet-of-paper-

square-detection?
3.http://blog.csdn.net/timidsmile/article/details/8519751?
4.http://blog.163.com/lee_020/blog/static/1247556020136473917915/
========

OpenCV實現Hough變換檢測圓形

? ? ? 在圖像處理中,Hough變換(霍夫變換)主要用來識別已知的幾何形狀,最常見的比如直線、線段

、圓形、橢圓、矩形等。如果要檢測比較復雜的曲線圖形,就需要利用廣義霍夫變換。

? ? ? 霍夫變換的原理是根據參數空間的統計規律進行參數估計。

? ? ? 具體說來就是,將直角坐標系中的圖形(x,y)變換到參數空間(k1,...,kn),對直角坐標系中的每

一個像素點,計算它在參數空間里的所有可能的參數向量。處理完所有像素點后,把出現次數(頻率)

最多的(一個或幾個)參數向量的坐標作為參數代入直角坐標方程,即檢測到的圖形方程。

? ? ? 以直線檢測為例,詳細講一下步驟:(圓和直線的原理相同,只是直線的公式比較好打~)

? ? ? 1.圖像二值化,待檢測的線變為黑色,背景置為白色。既然是形狀檢測,這步是必不可少的。

? ? ? 2.假設直線的參數方程為p=x*cosa+y*sina,對于直線上的某個點(x,y)來說,變換到參數空間的

坐標就是(p,a),而且這條直線上的所有點都對應于(p,a)。對于一個固定點(x,y)來說,經過它的直線系

可以表示為p=(x^2+y^2)^1/2*sin(a+b),其中tanb=x/y,對應參數空間里的一條正弦曲線。也就是說,

圖像中的一條直線對應參數空間的一點,圖像中的一點對應參數空間的一條正弦曲線。
? ? ??
關于參數變換,我再白話幾句。如果直線方程寫成y=k*x-b,則對應于參數空間里的點(k,-b),這就有點

像圖論中的對偶變換了。在寫圖的程序時有時會遇到若干半平面求交的問題(整張平面被一條直線分割

后得到兩張半平面)。半平面求交關鍵在于找到求交后的邊界(如果交集非空),既可以使用遞增式算

法(在已經找到的一部分邊界基礎上引入下一張半平面的直線求下一步的邊界),也可以使用上面提到

的參數變換方法。

? ? ? 比如我想求幾張方向都朝上(y軸正方向)的半平面的交,我想得到的應該是一個下側以向下凸的

折線為邊界的上側無窮的區域。我的問題關鍵在于找到這條下凸的折線。直線y=k*x-b做參數變換,得到

點(k,-b),所有半平面的邊界直線經變換得到若干個點。這些點形成的點集存在一個凸包(包含點集的

最小凸多邊形,而且該多邊形每個頂點都來自點集),其中構成折線的直線所對應的點恰好是凸包的上

半部分,也就是“下包絡”變換成上凸包。而求點集的上凸包可是很簡單的(也是增量式算法)。

? ? ? 3.把參數空間分割為n*m個格子,得到參數矩陣,矩陣元(pi,aj)的初始值均為0,用來對參數計數

。計數值代表這個參數是最終結果的可能性,計數值越大,說明落在這條直線上的像素點越多,也就說

明它越有可能是我們想找到的參數。p的范圍可以是[0,圖像對角線長度],a的范圍可以是[0,PI/2](如

果取左上角為原點的話),但要包含整個圖像。

? ? ? 4.按照柵格順序掃描圖像,遇到黑色像素就做如下操作:

? ? ? ? pi的i從0取到n-1,對每一個pi,把它和像素點的坐標(x,y)代入參數方程,計算得到相應的ai

,如果ai在定義域范圍內(或者在圖像內),將矩陣元(pi,ai)加一。

? ? ? ? 處理完所有像素后,如果想識別d條直線,就在參數矩陣中找到前d個數值最大的矩陣元,他們

的坐標作為方程參數,在直角坐標系繪制出直線就可以了。

? ? ? OpenCV中提供了計算霍夫變換的庫函數HoughLines和HoughLinesP,想知道怎樣使用,請戳傳送門



? ? ? 圓形檢測的過程很類似,只是參數方程有變化,而且參數空間增加了一個維度(圓心坐標x,y和半

徑r)。

? ? ? 霍夫變換的一個好處就是不需要圖像中出現完整的圓,只要落在一個圓上的像素數量足夠多,就

能正確識別。

? ? ? 關于誤差的問題:如果待檢測像素沒有嚴格落在同一個圓上,比如構成圓的圓弧彼此有些錯位,

如果依據參數點最多準則,只會識別出弧長最長的圓弧而忽略其他本來也屬于同一個圓的圓弧。如果目

標是檢測不止一個圓,這種誤差可能會使得程序依據同一個圓上的幾個圓弧識別到幾個不同的圓。解決

這個問題一種方法是仍然采用參數點最多準則,但減小參數空間分割的份數,讓錯位圓弧的圓心落在同

一個參數矩陣元上,但這樣做會使檢測到的圓心位置有比較大的誤差。另一種方法是仍然把參數空間細

密分割,用聚類算法尋找可能的圓心,因為錯位圓弧的圓心彼此靠得很近而且計數值都很大,只要找到

這些點的外接圓圓心就可以了。

? ? ? 下面為了計算簡便,我給出只檢測一個半徑為100的圓形的代碼(要想采用聚類算法,只需修改第

71-81行的代碼塊):
?

#include "stdafx.h" #include "highgui.h" #include "cv.h" #include <math.h>#define X_MAX 400 #define Y_MAX 400 #define TO_BE_BLACK 40//radius of circles is known int houghTrans_r(IplImage *src, IplImage *dst, IplImage *tmp, float r, int xstep, int ystep) { int width = src->width; int height = src->height;int channel = src->nChannels; int xmax = width%xstep ? width/xstep+1 : width/xstep; int ymax = height%ystep ? height/ystep+1 : height/ystep;int i,j,x,y; int para[X_MAX][Y_MAX] = {0};//i,j are in the pixel space //x,y are in the parameter space for(j=0; j<height; j++) { uchar* pin = (uchar*)(src->imageData + j*src->widthStep); for(i=0; i<width; i++) { //pixel is black if(pin[channel*i] < TO_BE_BLACK) { float temp;//calculate every probable y-cord based on x-cord for(x=0; x<xmax; x++) { temp = r*r - (i-x*xstep)*(i-x*xstep); temp = sqrt(temp);y = j - (int)temp; if(y>=0 && y<height){ para[x][y/ystep]++; }y = j + (int)temp; if(y>=0 && y<height){ para[x][y/ystep]++; } } } } }//find circle in parameter space int paramax=0,findx=-1,findy=-1; for(y=0; y<ymax; y++) { for(x=0; x<xmax; x++) { if(para[x][y] > paramax) { paramax=para[x][y]; findx=x; findy=y; } } }//draw the parameter space image int ii,jj; for(y=0; y<ymax; y++) { uchar* pout = (uchar*)(tmp->imageData + y*tmp->widthStep); for(x=0; x<xmax; x++) { pout[channel*x]=para[x][y]*255/paramax; pout[channel*x+1]=para[x][y]*255/paramax; pout[channel*x+2]=para[x][y]*255/paramax; } }//draw the found circle if(findx>=0 && findy>=0) { for(j=0;j<height;j++) { uchar* pin=(uchar*)(src->imageData+j*src->widthStep); uchar* pout=(uchar*)(dst->imageData+j*dst->widthStep); for(i=0;i<width;i++) { pout[3*i]=128+pin[3*i]/2; pout[3*i+1]=128+pin[3*i+1]/2; pout[3*i+2]=128+pin[3*i+2]/2; } } cvCircle(dst,cvPoint(findx*xstep+xstep/2.0,findy*ystep+ystep/2.0),r,cvScalar(255,0,0),1,8,0); }return 1; }int main() { IplImage *srcImg=cvLoadImage("H:\circle_4.jpg"); cvNamedWindow("Src",CV_WINDOW_AUTOSIZE); cvNamedWindow("Result",CV_WINDOW_AUTOSIZE); cvNamedWindow("Temp",CV_WINDOW_AUTOSIZE);IplImage *houghImg = cvCreateImage(cvGetSize(srcImg),IPL_DEPTH_8U,3); IplImage *houghTmp = cvCreateImage(cvGetSize(srcImg),IPL_DEPTH_8U,3);houghTrans_r(srcImg,houghImg,houghTmp,100.0,1,1);cvShowImage("Src",srcImg); cvShowImage("Temp",houghTmp); cvShowImage("Result",houghImg);cvWaitKey(0); cvReleaseImage(&srcImg); cvReleaseImage(&houghImg);cvDestroyWindow("Src"); cvDestroyWindow("Result"); return 0; }

?

? ? ? 以下是檢測示例:(左中右分別為原圖像、參數空間圖像和檢測結果,檢測結果用藍色線繪制)


? ? ? ? ?由于固定半徑r,所以參數就是圓心位置(x,y),繪制的點代表圓心的可能位置,顏色越淺,可

能性越大。

? ? ? ? 檢測單獨的圓

? ? ? ? 在很亂的線中檢測不完整的圓

? ? ? ? 檢測彼此錯位的圓弧(參數劃分擴大為5*5)
========

?

?

opencv 檢測直線、線段、圓、矩形

http://blog.csdn.net/byxdaz/archive/2009/12/01/4912136.aspx


檢測直線:cvHoughLines,cvHoughLines2

檢測圓:cvHoughCircles

檢測矩形:opencv中沒有對應的函數,下面有段代碼可以檢測矩形,是通過先找直線,然后找到直線平

行與垂直的四根線。

檢測直線代碼:

/* This is a standalone program. Pass an image name as a first parameter of the program.

? ?Switch between standard and probabilistic Hough transform by changing "#if 1" to "#if 0"?

and back */

#include <cv.h>

#include <highgui.h>

#include <math.h>

int main(int argc, char** argv)

{
? ? const char* filename = argc >= 2 ? argv[1] : "pic1.png";

? ? IplImage* src = cvLoadImage( filename, 0 );

? ? IplImage* dst;

? ? IplImage* color_dst;

? ? CvMemStorage* storage = cvCreateMemStorage(0);

? ? CvSeq* lines = 0;

? ? int i;


? ? if( !src )

? ? ? ? return -1;
??
? ? dst = cvCreateImage( cvGetSize(src), 8, 1 );

? ? color_dst = cvCreateImage( cvGetSize(src), 8, 3 );
? ?
? ? cvCanny( src, dst, 50, 200, 3 );

? ? cvCvtColor( dst, color_dst, CV_GRAY2BGR );

#if 0

? ? lines = cvHoughLines2( dst, storage, CV_HOUGH_STANDARD, 1, CV_PI/180, 100, 0, 0 );
?
? ? for( i = 0; i < MIN(lines->total,100); i++ )

? ? {

? ? ? ? float* line = (float*)cvGetSeqElem(lines,i);

? ? ? ? float rho = line[0];

? ? ? ? float theta = line[1];

? ? ? ? CvPoint 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));

? ? ? ? cvLine( color_dst, pt1, pt2, CV_RGB(255,0,0), 3, CV_AA, 0 );

? ? }

#else

? ? lines = cvHoughLines2( dst, storage, CV_HOUGH_PROBABILISTIC, 1, CV_PI/180, 50, 50, 10?

);

? ? for( i = 0; i < lines->total; i++ )

? ? {

? ? ? ? CvPoint* line = (CvPoint*)cvGetSeqElem(lines,i);

? ? ? ? cvLine( color_dst, line[0], line[1], CV_RGB(255,0,0), 3, CV_AA, 0 );

? ? }

#endif

? ? cvNamedWindow( "Source", 1 );

? ? cvShowImage( "Source", src );
?
? ? cvNamedWindow( "Hough", 1 );

? ? cvShowImage( "Hough", color_dst );

? ? ?cvWaitKey(0);

? ? ?return 0;

}

檢測圓代碼:

#include <cv.h>
#include <highgui.h>
#include <math.h>

int main(int argc, char** argv)
{
? ? IplImage* img;
? ? if( argc == 2 && (img=cvLoadImage(argv[1], 1))!= 0)
? ? {
? ? ? ? IplImage* gray = cvCreateImage( cvGetSize(img), 8, 1 );

? ? ? ? CvMemStorage* storage = cvCreateMemStorage(0);

? ? ? ? cvCvtColor( img, gray, CV_BGR2GRAY );

? ? ? ? cvSmooth( gray, gray, CV_GAUSSIAN, 9, 9 ); // smooth it, otherwise a lot of false?

circles may be detected

? ? ? ? CvSeq* circles = cvHoughCircles( gray, storage, CV_HOUGH_GRADIENT, 2, gray-

>height/4, 200, 100 );

? ? ? ? int i;

? ? ? ? for( i = 0; i < circles->total; i++ )

? ? ? ? {

? ? ? ? ? ? ?float* p = (float*)cvGetSeqElem( circles, i );

? ? ? ? ? ? ?cvCircle( img, cvPoint(cvRound(p[0]),cvRound(p[1])), 3, CV_RGB(0,255,0), -1,?

8, 0 );

? ? ? ? ? ? ?cvCircle( img, cvPoint(cvRound(p[0]),cvRound(p[1])), cvRound(p[2]), CV_RGB

(255,0,0), 3, 8, 0 );

? ? ? ? }

? ? ? ? cvNamedWindow( "circles", 1 );

? ? ? ? cvShowImage( "circles", img );

? ? }

? ? return 0;

}


檢測矩形代碼:

/*在程序里找尋矩形*/

#ifdef _CH_

#pragma package <opencv>

#endif


?#ifndef _EiC

#include "cv.h"

#include "highgui.h"

#include <stdio.h>

#include <math.h>

#include <string.h>

#endif


int thresh = 50;

IplImage* img = 0;

IplImage* img0 = 0;

CvMemStorage* storage = 0;

CvPoint pt[4];

const char* wndname = "Square Detection Demo";

// helper function:

// finds a cosine of angle between vectors

// from pt0->pt1 and from pt0->pt2

?double angle( CvPoint* pt1, CvPoint* pt2, CvPoint* pt0 )

{ ??

? ? double dx1 = pt1->x - pt0->x; ??

? ? double dy1 = pt1->y - pt0->y; ??

? ? double dx2 = pt2->x - pt0->x;

? ? double dy2 = pt2->y - pt0->y;

? ? return (dx1*dx2 + dy1*dy2)/sqrt((dx1*dx1 + dy1*dy1)*(dx2*dx2 + dy2*dy2) + 1e-10);

}


// returns sequence of squares detected on the image.

// the sequence is stored in the specified memory storage

CvSeq* findSquares4( IplImage* img, CvMemStorage* storage )

{

? ? CvSeq* contours;

? ? int i, c, l, N = 11;

? ? CvSize sz = cvSize( img->width & -2, img->height & -2 );

? ? IplImage* timg = cvCloneImage( img ); // make a copy of input image

? ? IplImage* gray = cvCreateImage( sz, 8, 1 );

? ? IplImage* pyr = cvCreateImage( cvSize(sz.width/2, sz.height/2), 8, 3 );

? ? IplImage* tgray;

? ? CvSeq* result;

? ? double s, t;

? ? // create empty sequence that will contain points -

? ? // 4 points per square (the square's vertices)

? ? CvSeq* squares = cvCreateSeq( 0, sizeof(CvSeq), sizeof(CvPoint), storage );

? ? // select the maximum ROI in the image

? ? // with the width and height divisible by 2

? ? cvSetImageROI( timg, cvRect( 0, 0, sz.width, sz.height ));?

? ? // down-scale and upscale the image to filter out the noise

? ? cvPyrDown( timg, pyr, 7 );

? ? cvPyrUp( pyr, timg, 7 );

? ? tgray = cvCreateImage( sz, 8, 1 ); ? ?

? ? // find squares in every color plane of the image

? ? for( c = 0; c < 3; c++ )

? ? { ? ?

? ? ? ? ?// extract the c-th color plane

? ? ? ? cvSetImageCOI( timg, c+1 );

? ? ? ? cvCopy( timg, tgray, 0 );?

? ? ? ?// try several threshold levels ??

? ? ? for( l = 0; l < N; l++ ) ? ?
? ? ?{ ? ? ? ?

? ? ? ? ?// hack: use Canny instead of zero threshold level. ? ? ?

? ? ? ? // Canny helps to catch squares with gradient shading ? ? ?

? ? ? ? ?if( l == 0 ) ? ? ?
? ? ? ? ?{ ? ? ? ??

? ? ? ? ? ? ?// apply Canny. Take the upper threshold from slider?

? ? ? ? ? ? ? ?// and set the lower to 0 (which forces edges merging)

? ? ? ? ? ? ? ? ?cvCanny( tgray, gray, 0, thresh, 5 ); ?

? ? ? ? ? ? ? // dilate canny output to remove potential ??

? ? ? ? ? ? ?// holes between edge segments?

? ? ? ? ? ? ? ? cvDilate( gray, gray, 0, 1 ); ? ? ? ?
? ? ? ? ? } ? ?
? ? ? ? ?else ?
? ? ? ? ?{ ? ? ?

? ? ? ? ? ? ?// apply threshold if l!=0:

? ? ? ? ? ? ? ? // ? ? tgray(x,y) = gray(x,y) < (l+1)*255/N ? 255 : 0?

? ? ? ? ? ? ? ?cvThreshold( tgray, gray, (l+1)*255/N, 255, CV_THRESH_BINARY );?

? ? ? ? ? ?}?

? ? ? ? ?// find contours and store them all as a list

? ? ? ? ? ? cvFindContours( gray, storage, &contours, sizeof(CvContour), ?

? ? ? ? ? ? ? ? ? ? ? ? CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); ?


? ? ? ? ?// test each contour

? ? ? ? ? ? while( contours )

? ? ? ? ? ? {

? ? ? ? ? ? ? ? // approximate contour with accuracy proportional

? ? ? ? ? ? ? ? // to the contour perimeter

? ? ? ? ? ? ? ? result = cvApproxPoly( contours, sizeof(CvContour), storage,

? ? ? ? ? ? ? ? ? ? CV_POLY_APPROX_DP, cvContourPerimeter(contours)*0.02, 0 );

? ? ? ? ? ? ? ? // square contours should have 4 vertices after approximation

? ? ? ? ? ? ? ? // relatively large area (to filter out noisy contours)

? ? ? ? ? ? ? ? // and be convex.

? ? ? ? ? ? ? ? // Note: absolute value of an area is used because

? ? ? ? ? ? ? ? // area may be positive or negative - in accordance with the

? ? ? ? ? ? ? ? // contour orientation

? ? ? ? ? ? ? ? if( result->total == 4 &&

? ? ? ? ? ? ? ? ? ? fabs(cvContourArea(result,CV_WHOLE_SEQ)) > 1000 &&

? ? ? ? ? ? ? ? ? ? cvCheckContourConvexity(result) )
? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? s = 0;

? ? ? ? ? ? ? ? ? ? for( i = 0; i < 5; i++ )

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? // find minimum angle between joint?

? ? ? ? ? ? ? ? ? ? ? ?// edges (maximum of cosine)

? ? ? ? ? ? ? ? ? ? ? ? if( i >= 2 )

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? t = fabs(angle(

? ? ? ? ? ? ? ? ? ? ? ? ? ? (CvPoint*)cvGetSeqElem( result, i ),

? ? ? ? ? ? ? ? ? ? ? ? ? ? (CvPoint*)cvGetSeqElem( result, i-2 ),

? ? ? ? ? ? ? ? ? ? ? ? ? ? (CvPoint*)cvGetSeqElem( result, i-1 )));

? ? ? ? ? ? ? ? ? ? ? ? ? ? s = s > t ? s : t;

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? // if cosines of all angles are small?

? ? ? ? ? ? ? ? // (all angles are ~90 degree) then write quandrange

? ? ? ? ? ? ? ? ? ? // vertices to resultant sequence

? ? ? ? ? ? ? ? ? ? ?if( s < 0.3 )

? ? ? ? ? ? ? ? ? ? ? ? for( i = 0; i < 4; i++ )?

? ? ? ? ? ? ? ? ? ? ? ? ? ?cvSeqPush( squares,?


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(CvPoint*)cvGetSeqElem( result, i ));
? ? ? ? ? ? ? ? }


? ? ? ? ? ? ? ? // take the next contour?


? ? ? ? ? ? ? ?contours = contours->h_next;


? ? ? ? ? ? }

? ? ? ? }

? ? }


? ? // release all the temporary images

? ? cvReleaseImage( &gray );

? ? cvReleaseImage( &pyr );

? ? cvReleaseImage( &tgray );

? ? cvReleaseImage( &timg );

? ? return squares;

}


? // the function draws all the squares in the image

void drawSquares( IplImage* img, CvSeq* squares )

{ ??

? ? CvSeqReader reader;

? ? IplImage* cpy = cvCloneImage( img );

? ? int i;

? ? ? ? // initialize reader of the sequence


? ? cvStartReadSeq( squares, &reader, 0 );


? ? ? ? // read 4 sequence elements at a time (all vertices of a square)

? ? for( i = 0; i < squares->total; i += 4 )

? ? {

? ? ? ? CvPoint* rect = pt;

? ? ? ? int count = 4;


? ? ? ? // read 4 vertices

? ? ? ? memcpy( pt, reader.ptr, squares->elem_size );

? ? ? ? CV_NEXT_SEQ_ELEM( squares->elem_size, reader );

? ? ? ? memcpy( pt + 1, reader.ptr, squares->elem_size );

? ? ? ? CV_NEXT_SEQ_ELEM( squares->elem_size, reader );

? ? ? ? memcpy( pt + 2, reader.ptr, squares->elem_size );

? ? ? ? CV_NEXT_SEQ_ELEM( squares->elem_size, reader );

? ? ? ? memcpy( pt + 3, reader.ptr, squares->elem_size );

? ? ? ? CV_NEXT_SEQ_ELEM( squares->elem_size, reader );


? ? ? ? // draw the square as a closed polyline

? ? ? ? ?cvPolyLine( cpy, &rect, &count, 1, 1, CV_RGB(0,255,0), 3, CV_AA, 0 );

? ? }


? ?// show the resultant image

? ? cvShowImage( wndname, cpy );

? ? cvReleaseImage( &cpy );

}?

?
?void on_trackbar( int a )

{

? ? if( img )

? ? ? ? drawSquares( img, findSquares4( img, storage ) );

}


char* names[] = { "pic1.png", "pic2.png", "pic3.png",

?

?

?

? ? ? ? ? ? ? ? ? "pic4.png", "pic5.png", "pic6.png", 0 };

?

?

?


?int main(int argc, char** argv)

{

? ? int i, c;

? ? // create memory storage that will contain all the dynamic data

? ? storage = cvCreateMemStorage(0);

? ? ?for( i = 0; names[i] != 0; i++ )

? ? {

? ? ? ? // load i-th image

? ? ? ? img0 = cvLoadImage( names[i], 1 );

? ? ? ? if( !img0 )

? ? ? ? {

? ? ? ? ? ? printf("Couldn't load %s/n", names[i] );

? ? ? ? ? ? continue;

? ? ? ? }

? ? ? ? img = cvCloneImage( img0 );


? ? ? ? // create window and a trackbar (slider) with parent "image" and set callback

? ? ? ? // (the slider regulates upper threshold, passed to Canny edge detector)

? ? ? ? ?cvNamedWindow( wndname, 1 );


? ? ? ? cvCreateTrackbar( "canny thresh", wndname, &thresh, 1000, on_trackbar );

?
? ? ? ? // force the image processing

? ? ? ? on_trackbar(0);

? ? ? ? // wait for key.

? ? ? ? // Also the function cvWaitKey takes care of event processing

? ? ? ? c = cvWaitKey(0);

? ? ? ? // release both images

? ? ? ? cvReleaseImage( &img );

? ? ? ? cvReleaseImage( &img0 );

? ? ? ? // clear memory storage - reset free space position

? ? ? ? cvClearMemStorage( storage );

? ? ? ? if( c == 27 )

? ? ? ? ? ? break;

? ? }?

? ? ? ?cvDestroyWindow( wndname );?

? ? ? ?return 0;

}


?#ifdef _EiC

main(1,"squares.c");

#endif

其它參考博客:

1、http://blog.csdn.net/superdont/article/details/6664254

2、http://hi.baidu.com/%CE%C4%BF%A1%B5%C4%CF%A3%CD

%FB/blog/item/3a5cb2079158b304738b65f2.html

#include <cv.h>
#include <highgui.h>
#include <math.h>


int main()
{
? ? IplImage* src;
if( (src=cvLoadImage("5.bmp", 1)) != 0)
? ? {
? ? ? ? IplImage* dst = cvCreateImage( cvGetSize(src), 8, 1 );
? ? ? ? IplImage* color_dst = cvCreateImage( cvGetSize(src), 8, 3 );
? ? ? ? CvMemStorage* storage = cvCreateMemStorage(0);//存儲檢測到線段,當然可以是N*1的矩陣


數列,如果


實際的直線數量多余N,那么最大可能數目的線段被返回
? ? ? ? CvSeq* lines = 0;
? ? ? ? int i;
IplImage* src1=cvCreateImage(cvSize(src->width,src->height),IPL_DEPTH_8U,1);


cvCvtColor(src, src1, CV_BGR2GRAY); //把src轉換成灰度圖像保存在src1中,注意進行邊緣檢測一定





換成灰度圖
? ? ? ? cvCanny( src1, dst, 50, 200, 3 );//參數50,200的灰度變換


? ? ? ? cvCvtColor( dst, color_dst, CV_GRAY2BGR );
#if 1
? ? ? ? lines = cvHoughLines2( dst, storage, CV_HOUGH_STANDARD, 1, CV_PI/180, 150, 0, 0?


);//標準霍夫變


換后兩個參數為0,由于line_storage是內存空間,所以返回一個CvSeq序列結構的指針


? ? ? ? for( i = 0; i < lines->total; i++ )
? ? ? ? {
? ? ? ? ? ? float* line = (float*)cvGetSeqElem(lines,i);//用GetSeqElem得到直線
? ? ? ? ? ? float rho = line[0];
? ? ? ? ? ? float theta = line[1];//對于SHT和MSHT(標準變換)這里line[0],line[1]是rho(與像素


相關單位的距


離精度)和theta(弧度測量的角度精度)
? ? ? ? ? ? CvPoint pt1, pt2;
? ? ? ? ? ? double a = cos(theta), b = sin(theta);
? ? ? ? ? ? if( fabs(a) < 0.001 )
? ? ? ? ? ? {
? ? ? ? ? ? ? ? pt1.x = pt2.x = cvRound(rho);
? ? ? ? ? ? ? ? pt1.y = 0;
? ? ? ? ? ? ? ? pt2.y = color_dst->height;
? ? ? ? ? ? }
? ? ? ? ? ? else if( fabs(b) < 0.001 )
? ? ? ? ? ? {
? ? ? ? ? ? ? ? pt1.y = pt2.y = cvRound(rho);
? ? ? ? ? ? ? ? pt1.x = 0;
? ? ? ? ? ? ? ? pt2.x = color_dst->width;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? pt1.x = 0;
? ? ? ? ? ? ? ? pt1.y = cvRound(rho/b);
? ? ? ? ? ? ? ? pt2.x = cvRound(rho/a);
? ? ? ? ? ? ? ? pt2.y = 0;
? ? ? ? ? ? }
? ? ? ? ? ? cvLine( color_dst, pt1, pt2, CV_RGB(255,0,0), 3, 8 );
? ? ? ? }
#else
? ? ? ? lines = cvHoughLines2( dst, storage, CV_HOUGH_PROBABILISTIC, 1, CV_PI/180, 80, 30,?


10 );
? ? ? ? for( i = 0; i < lines->total; i++ )
? ? ? ? {
? ? ? ? ? ? CvPoint* line = (CvPoint*)cvGetSeqElem(lines,i);
? ? ? ? ? ? cvLine( color_dst, line[0], line[1], CV_RGB(255,0,0), 3, 8 );
? ? ? ? }
#endif
? ? ? ? cvNamedWindow( "Source", 1 );
? ? ? ? cvShowImage( "Source", src );


? ? ? ? cvNamedWindow( "Hough", 1 );
? ? ? ? cvShowImage( "Hough", color_dst );


? ? ? ? cvWaitKey(0);
? ? }
}


line_storage?
檢測到的線段存儲倉. 可以是內存存儲倉 (此種情況下,一個線段序列在存儲倉中被創建,并且由函數


返回),或者是包含線段參數的特殊類型(見下面)的具有單行/單列的矩陣(CvMat*)。矩陣頭為函數所


修改,使得它的 cols/rows 將包含一組檢測到的線段。如果 line_storage 是矩陣,而實際線段的數目

超過矩陣尺寸,那么最大可能數目的線段被返回(線段沒有按照長度、可信度或其它指標排序).?
method?
Hough 變換變量,是下面變量的其中之一:?
CV_HOUGH_STANDARD - 傳統或標準 Hough 變換. 每一個線段由兩個浮點數 (ρ, θ) 表示,其中 ρ 是

直線與原點 (0,0) 之間的距離,θ 線段與 x-軸之間的夾角。因此,矩陣類型必須是 CV_32FC2 type.?
CV_HOUGH_PROBABILISTIC - 概率 Hough 變換(如果圖像包含一些長的線性分割,則效率更高). 它返回

線段分割而不是整個線段。每個分割用起點和終點來表示,所以矩陣(或創建的序列)類型是?

CV_32SC4.?
CV_HOUGH_MULTI_SCALE - 傳統 Hough 變換的多尺度變種。線段的編碼方式與 CV_HOUGH_STANDARD 的一


致。?
rho?
與象素相關單位的距離精度?
theta?
弧度測量的角度精度?
threshold?
閾值參數。如果相應的累計值大于 threshold, 則函數返回的這個線段.?
param1?
第一個方法相關的參數:?
對傳統 Hough 變換,不使用(0).?
對概率 Hough 變換,它是最小線段長度.?
對多尺度 Hough 變換,它是距離精度 rho 的分母 (大致的距離精度是 rho 而精確的應該是 rho /?


param1 ).?
param2?
第二個方法相關參數:?
對傳統 Hough 變換,不使用 (0).?
對概率 Hough 變換,這個參數表示在同一條直線上進行碎線段連接的最大間隔值(gap), 即當同一條直

線上的兩條碎線段之間的間隔小于param2時,將其合二為一。?
對多尺度 Hough 變換,它是角度精度 theta 的分母 (大致的角度精度是 theta 而精確的角度應該是?

theta / param2).
函數 cvHoughLines2 實現了用于線段檢測的不同 Hough 變換方法. Example. 用 Hough transform 檢


測線段


3、http://www.opencv.org.cn/index.php/Hough%E7%BA%BF%E6%AE%B5%E6%A3%80%E6%B5%8B

========

?

opencv形狀分析


OpenCV支持大量的輪廓、邊緣、邊界的相關函數,相應的函數有moments、HuMoments、findContours、

drawContours、approxPolyDP、arcLength、boundingRect、contourArea、convexHull、fitEllipse、

fitLine、isContourConvex、minAreaRect、minEnclosingCircle、mathcShapes、pointPolygonTest。

還有一些c版本的針對老版本的數據結構的函數比如cvApproxChains、cvConvexityDefects。這里先介紹

一些我用過的函數,以后用到再陸續補充。

OpenCV里支持很多邊緣提取的辦法,可是如何在一幅圖像里得到輪廓區域的參數呢,這就需要用到

findContours函數,這個函數的原型為:

//C++: ? ?
void findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray?

hierarchy, int mode, int method, Point offset=Point()) ?
void findContours(InputOutputArray image, OutputArrayOfArrays contours, int mode, int?

method, Point offset=Point()) ?
[cpp] view plain copy
//C++: ??
void findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray?

hierarchy, int mode, int method, Point offset=Point()) ?
void findContours(InputOutputArray image, OutputArrayOfArrays contours, int mode, int?

method, Point offset=Point()) ?

這里介紹下該函數的各個參數:
輸入圖像image必須為一個2值單通道圖像

contours參數為檢測的輪廓數組,每一個輪廓用一個point類型的vector表示

hiararchy參數和輪廓個數相同,每個輪廓contours[ i ]對應4個hierarchy元素hierarchy[ i ][ 0 ]?

~hierarchy[ i ][ 3 ],分別表示后一個輪廓、前一個輪廓、父輪廓、內嵌輪廓的索引編號,如果沒有

對應項,該值設置為負數。

mode表示輪廓的檢索模式

CV_RETR_EXTERNAL表示只檢測外輪廓

CV_RETR_LIST檢測的輪廓不建立等級關系

CV_RETR_CCOMP建立兩個等級的輪廓,上面的一層為外邊界,里面的一層為內孔的邊界信息。如果內孔內

還有一個連通物體,這個物體的邊界也在頂層。

CV_RETR_TREE建立一個等級樹結構的輪廓。具體參考contours.c這個demo


method為輪廓的近似辦法

CV_CHAIN_APPROX_NONE存儲所有的輪廓點,相鄰的兩個點的像素位置差不超過1,即max(abs(x1-x2)

,abs(y2-y1))==1

CV_CHAIN_APPROX_SIMPLE壓縮水平方向,垂直方向,對角線方向的元素,只保留該方向的終點坐標,例

如一個矩形輪廓只需4個點來保存輪廓信息

CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS使用teh-Chinl chain 近似算法

offset表示代表輪廓點的偏移量,可以設置為任意值。對ROI圖像中找出的輪廓,并要在整個圖像中進行

分析時,這個參數還是很有用的。

具體應用參考sample文件夾下面的squares.cpp這個demo

findContours后會對輸入的2值圖像改變,所以如果不想改變該2值圖像,需創建新mat來存放,

findContours后的輪廓信息contours可能過于復雜不平滑,可以用approxPolyDP函數對該多邊形曲線做


適當近似

contourArea函數可以得到當前輪廓包含區域的大小,方便輪廓的篩選

findContours經常與drawContours配合使用,用來將輪廓繪制出來。其中第一個參數image表示目標圖像

,第二個參數contours表示輸入的輪廓組,每一組輪廓由點vector構成,第三個參數contourIdx指明畫

第幾個輪廓,如果該參數為負值,則畫全部輪廓,第四個參數color為輪廓的顏色,第五個參數

thickness為輪廓的線寬,如果為負值或CV_FILLED表示填充輪廓內部,第六個參數lineType為線型,第

七個參數為輪廓結構信息,第八個參數為maxLevel

得到了復雜輪廓往往不適合特征的檢測,這里再介紹一個點集凸包絡的提取函數convexHull,輸入參數

就可以是contours組中的一個輪廓,返回外凸包絡的點集

還可以得到輪廓的外包絡矩形,使用函數boundingRect,如果想得到旋轉的外包絡矩形,使用函數

minAreaRect,返回值為RotatedRect;也可以得到輪廓的外包絡圓,對應的函數為minEnclosingCircle

;想得到輪廓的外包絡橢圓,對應的函數為fitEllipse,返回值也是RotatedRect,可以用ellipse函數

畫出對應的橢圓

如果想根據多邊形的輪廓信息得到多邊形的多階矩,可以使用類moments,這個類可以得到多邊形和光柵

形狀的3階以內的所有矩,類內有變量m00,m10,m01,m20,m11,m02,m30,m21,m12,m03,比如多邊

形的質心為 x = m10 / m00,y = m01 / m00。

如果想獲得一點與多邊形封閉輪廓的信息,可以調用pointPolygonTest函數,這個函數返回值為該點距

離輪廓最近邊界的距離,為正值為在輪廓內部,負值為在輪廓外部,0表示在邊界上。
========

?

?

實用OpenCV ?圖像中的形狀

?


形狀是當我們看到物體時最開始的印象之一,這一章我們將賦予計算機這種能力。識別圖像里的形狀是

通常是做決策時一個重要步驟。形狀是由圖像的輪廓形成的,所以理論上形狀識別是通常在邊緣或輪廓

檢測后的步驟。
所以,我們將首先討論從圖像里提取輪廓,然后再開始討論形狀。將會包含:
?霍夫變換,可以使我們檢測圖像里的常規形狀如線條和圓形。

?隨機樣本一致性(RANSAC),一個廣泛使用的可以確定數據點來匹配特定模型的框架。我們將編寫算法

代碼來檢測圖像里的橢圓。
?對象周圍的綁定盒,綁定橢圓和凸形外殼的計算。

?形狀匹配。

輪廓
輪廓和邊緣有一個顯著區別。邊緣是圖像亮度梯度的局部極大值集合。我們也看到,這些梯度極大值不

全是在物體的輪廓上而且他們是非常有噪聲的。Canny邊緣有一點不同,更像輪廓一些,因為在梯度極大

值提取后經過一些后處理步驟。輪廓,相對而言,是一系列相連的點,更可能落在物體的外框上。
OpenCV的輪廓提取基于二值圖像(像Canny邊緣檢測的輸出或對Scharr邊緣做閾值處理或者一張黑白圖)

然后提取邊緣點連接的層次結構。組織層次使得位于數結構更高的輪廓更有可能是物體的輪廓,然而低

位的輪廓更有可能是噪聲邊緣和“洞口”的輪廓以及噪聲塊。
實現這些特性的函數叫findContours()然后它使用了由S.Suzuki和K.Abe在“數字二值圖像的基于邊界跟

隨的拓撲結構分析”一文中描述的算法來提取輪廓并排列層次結構。文中描述了決定層次結構的詳細規

則,簡而言之呢,當一個輪廓圍繞著另一個輪廓的時候被認為是那個輪廓的“父親”。
為了更實際地顯示我們所說的層次結構呢,我們將編寫一個程序,見例6-1,使用了我們最喜歡的工具,

滑塊,來選擇要顯示層次結構的級別值。注意該函數僅接受一個二值圖像為輸入。從普通圖像得到二值

圖的方式有:
?通過threshold()或adaptiveThreshold()來閾值處理
?使用inRange()檢查像素值邊界
?Canny邊緣
?Scharr邊緣做閾值處理


例 6-1 程序展現層次輪廓提取


// Program to illustrate hierarchical contour extraction
// Author: Samarth Manoj Brahmbhatt, University of Pennsylvania
#include <opencv2 opencv.hpp="">
#include <opencv2 highgui="" highgui.hpp="">
#include <opencv2 imgproc="" imgproc.hpp="">
using namespace std;
using namespace cv;
Mat img;
vector<vector<point> > contours;
vector<vec4i> heirarchy;
int levels = 0;
void on_trackbar(int, void *) {
? if(contours.empty()) return;
? Mat img_show = img.clone();
? // Draw contours of the level indicated by slider
? drawContours(img_show, contours, -1, Scalar(0, 0, 255), 3, 8, heirarchy, levels);
? imshow("Contours", img_show);
}
int main() {
? img = imread("circles.jpg");
? Mat img_b;
? cvtColor(img, img_b, CV_RGB2GRAY);
? Mat edges;
? Canny(img_b, edges, 50, 100);
? // Extract contours and heirarchy
? findContours(edges, contours, heirarchy, CV_RETR_TREE, CV_CHAIN_APPROX_NONE);
? namedWindow("Contours");
? createTrackbar("levels", "Contours", &levels, 15, on_trackbar);
? // Initialize by drawing the top level contours (as 'levels' is initialized to 0)
? on_trackbar(0, 0);
? while(char(waitKey(1)) != 'q') {}
? return 0;
}
</vec4i></vector<point></opencv2></opencv2></opencv2>
注意每個輪廓是一個STL向量里的點。所以,儲存輪廓的數據結構是一個含點向量的向量。層次結構是一

個含四整數向量的向量(注:即向量的元素也是向量)。對每個輪廓來說,它的層次結構位置表示為四

個整數值:他們是輪廓向量基于0的索引分別指示 下一位置(同等級),上一個(同等級),父級,以

及第一個子輪廓。假使其中任意一個不存在(比如,如果一個輪廓沒有父輪廓),對應的整數值則為負

值。同時注意drawContours()函數根據層次結構和繪制允許最大層次等級來通過繪制輪廓修改輸入圖片

。
圖6-1顯示了一張簡圖上的不同等級的輪廓。

\\
\

圖6-1 不同等級的輪廓層次
經常和findContours()一起使用的一個函數是approxPolyDP()。approxPolyDP()用另一條頂點較少的曲

線來逼近一條曲線或者一個多邊形,這樣兩條曲線之間的距離小于或等于指定的精度。同時也有使閉合

逼近曲線的選項(那就是說,起始點和終止點相同)

點-多邊形測試
我們先暫且來介紹一個有趣的特性:點-多邊形測試。你也許猜到了,pointPolygonTest()函數判定一個

點是否在一個多邊形內。如果你開啟 measureDist標簽的話它也會返回該點到輪廓最近點的有符號歐式

距離。如果點在曲線內,距離則為正,外則負,點在輪廓上則為零。如果標簽關閉的話,相應的距離則

被替換為+1,-1和0。
讓我們來做一個程序來演示點-多邊形和閉合曲線逼近的新知識——一個尋找圖像上用戶點擊點相近的最


小閉合輪廓的程序。同時它也演示了輪廓層次的導引。代碼見例6-2
例6-2 尋找點擊點圍繞的最小輪廓

<"http://www.2cto.com/kf/ware/vc/" target="_blank"?

class="keylink">vcD4KPHByZSBjbGFzcz0="brush:java;">// Program to find the smallest contour?

that surrounds the clicked point // Author: Samarth Manoj Brahmbhatt, University of?

Pennsylvania #include #include #include using namespace std; using namespace cv; Mat?

img_all_contours; vector > closed_contours; vector heirarchy; // Function to approximate?

contours by closed contours vector > make_contours_closed(vector > contours) { vector >?

closed_contours; closed_contours.resize(contours.size()); for(int i = 0; i < contours.size

(); i++) approxPolyDP(contours[i], closed_contours[i], 0.1, true); return closed_contours;?

} // Function to return the index of smallest contour in 'closed_contours' surrounding the?

clicked point int smallest_contour(Point p, vector > contours, vector heirarchy) { int idx?

= 0, prev_idx = -1; while(idx >= 0) { vector c = contours[idx]; // Point-polgon test double?

d = pointPolygonTest(c, p, false); // If point is inside the contour, check its children?

for an even smaller contour... if(d > 0) { prev_idx = idx; idx = heirarchy[idx][2]; } //?

...else, check the next contour on the same level else idx = heirarchy[idx][0]; } return?

prev_idx; } void on_mouse(int event, int x, int y, int, void *) { if(event !=?

EVENT_LBUTTONDOWN) return; // Clicked point Point p(x, y); // Find index of smallest?

enclosing contour int contour_show_idx = smallest_contour(p, closed_contours, heirarchy);?

// If no such contour, user clicked outside all contours, hence clear image if

(contour_show_idx < 0) { imshow("Contours", img_all_contours); return; } // Draw the?

smallest contour using a thick red line vector > contour_show; contour_show.push_back

(closed_contours[contour_show_idx]); if(!contour_show.empty()) { Mat img_show =?

img_all_contours.clone(); drawContours(img_show, contour_show, -1, Scalar(0, 0, 255), 3);?

imshow("Contours", img_show); } } int main() { Mat img = imread("circles.jpg");?

img_all_contours = img.clone(); Mat img_b; cvtColor(img, img_b, CV_RGB2GRAY); Mat edges;?

Canny(img_b, edges, 50, 100); // Extract contours and heirarchy vector > contours;?

findContours(edges, contours, heirarchy, CV_RETR_TREE, CV_CHAIN_APPROX_NONE); // Make?

contours closed so point-polygon test is valid closed_contours = make_contours_closed

(contours); // Draw all contours usign a thin green line drawContours(img_all_contours,?

closed_contours, -1, Scalar(0, 255, 0)); imshow("Contours", img_all_contours); // Mouse?

callback setMouseCallback("Contours", on_mouse); while(char(waitKey(1)) != 'q') {} return?

0; } 假設 idx為輪廓在點向量的向量中的索引而hierarchy代表層次的話:
? hierarchy[idx][0] 返回同等級層次結構的下一個輪廓索引
? hierarchy[idx][1] 返回同等級層次結構的上一個輪廓索引
? hierarchy[idx][2] 返回第一個子輪廓的索引
? hierarchy[idx][3] 返回父輪廓的索引
如果其中一個輪廓不存在,返回索引為負值。
程序運行的截圖如圖6-2所示


圖 6-2 最小封閉輪廓的應用

OpenCV也提供了一些函數檢查其中的一些屬性來幫助你過濾噪聲圖像的輪廓。如表6-1

表6-1 OpenCV輪廓后處理函數

函數 描述
ArcLength() 查找輪廓長度
ContourArea() 查找輪廓區域和方向
BoundingRect() 計算輪廓的垂直邊界矩形
ConvexHull() 計算輪廓圍繞的凸形殼
IsContourConvex() 測試輪廓的凸性
MinAreaRect() 計算圍繞輪廓的最小旋轉矩形
MinEnclosingCircle() 查找圍繞輪廓的最小區域圓形
FitLine() 基于輪廓匹配一條線(最小二乘)
========

?

?

opencv識別正方形(矩形)代碼


//正方形檢測源碼
//載入數張包含各種形狀的圖片,檢測出其中的正方形
#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <iostream>

int thresh = 50;
IplImage* img =NULL;
IplImage* img0 = NULL;
CvMemStorage* storage =NULL;
const char * wndname = "正方形檢測 demo";

//angle函數用來返回(兩個向量之間找到角度的余弦值)
double angle( CvPoint* pt1, CvPoint* pt2, CvPoint* pt0 )
{
?double dx1 = pt1->x - pt0->x;
?double dy1 = pt1->y - pt0->y;
?double dx2 = pt2->x - pt0->x;
?double dy2 = pt2->y - pt0->y;
?return (dx1*dx2 + dy1*dy2)/sqrt((dx1*dx1 + dy1*dy1)*(dx2*dx2 + dy2*dy2) + 1e-10);
}

// 返回圖像中找到的所有輪廓序列,并且序列存儲在內存存儲器中

CvSeq* findSquares4( IplImage* img, CvMemStorage* storage )
{
?CvSeq* contours;
?int i, c, l, N = 11;
?CvSize sz = cvSize( img->width & -2, img->height & -2 );?
?
?IplImage* timg = cvCloneImage( img );
?IplImage* gray = cvCreateImage( sz, 8, 1 );
?IplImage* pyr = cvCreateImage( cvSize(sz.width/2, sz.height/2), 8, 3 );
?IplImage* tgray;
?CvSeq* result;
?double s, t;
?// 創建一個空序列用于存儲輪廓角點
?CvSeq* squares = cvCreateSeq( 0, sizeof(CvSeq), sizeof(CvPoint), storage );

?cvSetImageROI( timg, cvRect( 0, 0, sz.width, sz.height ));
?// 過濾噪音
?cvPyrDown( timg, pyr, 7 );
?cvPyrUp( pyr, timg, 7 );
?tgray = cvCreateImage( sz, 8, 1 );

?// 紅綠藍3色分別嘗試提取
?for( c = 0; c < 3; c++ )
?{
? // 提取 the c-th color plane
? cvSetImageCOI( timg, c+1 );
? cvCopy( timg, tgray, 0 );

? // 嘗試各種閾值提取得到的(N=11)
? for( l = 0; l < N; l++ )
? {
? ?// apply Canny. Take the upper threshold from slider
? ?// Canny helps to catch squares with gradient shading ?
? ?if( l == 0 )
? ?{
? ? cvCanny( tgray, gray, 0, thresh, 5 );
? ? //使用任意結構元素膨脹圖像
? ? cvDilate( gray, gray, 0, 1 );
? ?}
? ?else
? ?{
? ? // apply threshold if l!=0:
? ? cvThreshold( tgray, gray, (l+1)*255/N, 255, CV_THRESH_BINARY );
? ?}

? ?// 找到所有輪廓并且存儲在序列中
? ?cvFindContours( gray, storage, &contours, sizeof(CvContour),
? ? CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) );

? ?// 遍歷找到的每個輪廓contours
? ?while( contours )
? ?{
? ? ?//用指定精度逼近多邊形曲線
? ? result = cvApproxPoly( contours, sizeof(CvContour), storage,
? ? ?CV_POLY_APPROX_DP, cvContourPerimeter(contours)*0.02, 0 );? ? ? ? ? ? ? ??


? ? if( result->total == 4 &&
? ? ?fabs(cvContourArea(result,CV_WHOLE_SEQ)) > 500 &&
? ? ?fabs(cvContourArea(result,CV_WHOLE_SEQ)) < 100000 &&
? ? ?cvCheckContourConvexity(result) )
? ? {
? ? ?s = 0;

? ? ?for( i = 0; i < 5; i++ )
? ? ?{
? ? ? // find minimum angle between joint edges (maximum of cosine)
? ? ? if( i >= 2 )
? ? ? {
? ? ? ?t = fabs(angle(
? ? ? ? (CvPoint*)cvGetSeqElem( result, i ),
? ? ? ? (CvPoint*)cvGetSeqElem( result, i-2 ),
? ? ? ? (CvPoint*)cvGetSeqElem( result, i-1 )));
? ? ? ?s = s > t ? s : t;
? ? ? }
? ? ?}

? ? ?// if 余弦值 足夠小,可以認定角度為90度直角
? ? ?//cos0.1=83度,能較好的趨近直角
? ? ?if( s < 0.1 ) ?
? ? ? for( i = 0; i < 4; i++ )
? ? ? ?cvSeqPush( squares,
? ? ? ?(CvPoint*)cvGetSeqElem( result, i ));
? ? }

? ? // 繼續查找下一個輪廓
? ? contours = contours->h_next;
? ?}
? }
?}
?cvReleaseImage( &gray );
?cvReleaseImage( &pyr );
?cvReleaseImage( &tgray );
?cvReleaseImage( &timg );


?return squares;
}

//drawSquares函數用來畫出在圖像中找到的所有正方形輪廓
void drawSquares( IplImage* img, CvSeq* squares )
{
?CvSeqReader reader;
?IplImage* cpy = cvCloneImage( img );
?int i;
?cvStartReadSeq( squares, &reader, 0 );

?// read 4 sequence elements at a time (all vertices of a square)
?for( i = 0; i < squares->total; i += 4 )
?{
? CvPoint pt[4], *rect = pt;
? int count = 4;

? // read 4 vertices
? CV_READ_SEQ_ELEM( pt[0], reader );
? CV_READ_SEQ_ELEM( pt[1], reader );
? CV_READ_SEQ_ELEM( pt[2], reader );
? CV_READ_SEQ_ELEM( pt[3], reader );

? // draw the square as a closed polyline
? cvPolyLine( cpy, &rect, &count, 1, 1, CV_RGB(0,255,0), 2, CV_AA, 0 );
?}

?cvShowImage( wndname, cpy );
?cvReleaseImage( &cpy );
}

char* names[] = { "pic1.png", "pic2.png", "pic3.png",
? ? ?"pic4.png", "pic5.png", "pic6.png","pic7.png","pic8.png",
? ? ?"pic9.png","pic10.png","pic11.png","pic12.png", 0 };

int main(int argc, char** argv)
{
?int i, c;
?storage = cvCreateMemStorage(0);

?for( i = 0; names[i] != 0; i++ )
?{
? img0 = cvLoadImage( names[i], 1 );
? if( !img0 )
? {
? ?cout<<"不能載入"<<names[i]<<"繼續下一張圖片"<<endl;
? ?continue;
? }
? img = cvCloneImage( img0 );
? cvNamedWindow( wndname, 1 );

? // find and draw the squares
? drawSquares( img, findSquares4( img, storage ) );

? c = cvWaitKey(0);
??
? cvReleaseImage( &img );
? cvReleaseImage( &img0 );

? cvClearMemStorage( storage );

? if( (char)c == 27 )
? ?break;
?}

?cvDestroyWindow( wndname );
?return 0;
}

========

?

?

OpenCV入門之線段檢測


線段檢測主要運用Hough變換,Hough變換是圖像處理中從圖像中識別幾何形狀的基本方法之一,應用很


廣泛,也有很多改進算法。主要用來從圖像中分離出具有某種相同特征的幾何形狀(如,直線,圓等)


。最基本的霍夫變換是從黑白圖像中檢測直線(線段)。
在OpenCV編程中,實現線段檢測主要使用cvHoughLines2函數。
函數原型:
CvSeq* cvHoughLines2(
? CvArr* image,
? void* line_storage,
? int method,
? double rho,
? double theta,
? int threshold,
? double param1=0, double param2=0
);

參數說明:
第一個參數表示輸入圖像,必須為二值圖像(黑白圖)。
第二個參數表示存儲容器,可以傳入CvMemStorage類型的指針。
第三個參數表示變換變量,可以取下面的值:
? CV_HOUGH_STANDARD - 傳統或標準 Hough 變換. 每一個線段由兩個浮點數 (ρ, θ) 表示,其中 ρ?

是線段與原點 (0,0) 之間的距離,θ 線段與 x-軸之間的夾角。
? CV_HOUGH_PROBABILISTIC - 概率 Hough 變換(如果圖像包含一些長的線性分割,則效率更高)。它返

回線段分割而不是整個線段。每個分割用起點和終點來表示。
? CV_HOUGH_MULTI_SCALE - 傳統 Hough 變換的多尺度變種。線段的編碼方式與 CV_HOUGH_STANDARD 的

一致。
第四個參數表示與象素相關單位的距離精度。
第五個參數表示弧度測量的角度精度。
第六個參數表示檢測線段的最大條數,如果已經檢測這么多條線段,函數返回。
第七個參數與第三個參數有關,其意義如下:
? 對傳統 Hough 變換,不使用(0).
? 對概率 Hough 變換,它是最小線段長度.
? 對多尺度 Hough 變換,它是距離精度 rho 的分母 (大致的距離精度是 rho 而精確的應該是 rho /?

param1 ).
第八個參數與第三個參數有關,其意義如下:
? 對傳統 Hough 變換,不使用 (0).
? 對概率 Hough 變換,這個參數表示在同一條線段上進行碎線段連接的最大間隔值(gap), 即當同一條

線段上的兩條碎線段之間的間隔小于param2時,將其合二為一。
? 對多尺度 Hough 變換,它是角度精度 theta 的分母 (大致的角度精度是 theta 而精確的角度應該是?

theta / param2)。

示例程序:
hough.cpp


?#include <opencv2/core/core.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>


using namespace std;


int main (int argc, char **argv) ?
{ ? ??
const char *pstrWindowsSrcTitle = "initial";
const char *pstrWindowsLineName = "hough";


IplImage *pSrcImage = cvLoadImage("hough.jpg", CV_LOAD_IMAGE_UNCHANGED);


IplImage *pGrayImage = ?cvCreateImage(cvGetSize(pSrcImage), IPL_DEPTH_8U, 1); ?
cvCvtColor(pSrcImage, pGrayImage, CV_BGR2GRAY);


IplImage *pCannyImage = cvCreateImage(cvGetSize(pSrcImage), IPL_DEPTH_8U, 1); ?
cvCanny(pGrayImage, pCannyImage, 30, 90);


CvMemStorage *pcvMStorage = cvCreateMemStorage(); ?
double fRho = 1; ?
double fTheta = CV_PI / 180; ?
int nMaxLineNumber = 50; //最多檢測條直線
double fMinLineLen = 50; //最小線段長度
double fMinLineGap = 10; //最小線段間隔
CvSeq *pcvSeqLines = cvHoughLines2(pCannyImage, pcvMStorage, CV_HOUGH_PROBABILISTIC, fRho,?


fTheta, nMaxLineNumber, fMinLineLen, fMinLineGap);


IplImage *pColorImage = cvCreateImage(cvGetSize(pSrcImage), IPL_DEPTH_8U, 3);
cvCvtColor(pCannyImage, pColorImage, CV_GRAY2BGR);
int i;
for(i = 0; i < pcvSeqLines->total; i++) ?
{ ?
CvPoint* line = (CvPoint*)cvGetSeqElem(pcvSeqLines, i); ?
cvLine(pColorImage, line[0], line[1], CV_RGB(255,0,0), 2);
? }


cvNamedWindow(pstrWindowsSrcTitle, CV_WINDOW_AUTOSIZE); ?
cvShowImage(pstrWindowsSrcTitle, pSrcImage); ?
cvNamedWindow(pstrWindowsLineName, CV_WINDOW_AUTOSIZE); ?
cvShowImage(pstrWindowsLineName, pColorImage); ?
??
cvWaitKey(0); ?
??
cvReleaseMemStorage(&pcvMStorage); ?
cvDestroyWindow(pstrWindowsSrcTitle); ?
cvDestroyWindow(pstrWindowsLineName); ?
cvReleaseImage(&pSrcImage); ?
cvReleaseImage(&pGrayImage); ?
cvReleaseImage(&pCannyImage); ?
cvReleaseImage(&pColorImage); ?
return 0; ?
}


makefile:


?INCLUDE = $(shell pkg-config --cflags opencv) ?
LIBS = $(shell pkg-config --libs opencv) ?
SOURCES = hough.cpp ?
# 目標文件 ?
OBJECTS = $(SOURCES:.cpp=.o) ?
# 可執行文件 ?
TARGET = hough ?
$(TARGET):$(OBJECTS) ?
g++ -o $(TARGET) $(OBJECTS) -I $(INCLUDE) $(LIBS) ?
$(OBJECTS):$(SOURCES) ?
g++ -c $(SOURCES) ?
clean: ?
rm $(OBJECTS) $(TARGET) ?
# 編譯規則 $@代表目標文件 $< 代表第一個依賴文件 ?
%.o:%.cpp ?
g++ -I $(INCLUDE) -o $@ -c $<

所在文件夾上已有hough.jpg圖片,make后執行./hough hough.jpg

========

?

總結

以上是生活随笔為你收集整理的opencv形状识别学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。

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

精品无码国产一区二区三区av | 中文字幕无码乱人伦 | 综合人妻久久一区二区精品 | 日韩精品成人一区二区三区 | 国产精品久久久久9999小说 | 免费无码的av片在线观看 | 国产舌乚八伦偷品w中 | 狠狠亚洲超碰狼人久久 | 亚洲精品国产第一综合99久久 | 久久久国产精品无码免费专区 | 又大又硬又黄的免费视频 | 中文字幕无码日韩专区 | 牲欲强的熟妇农村老妇女视频 | 巨爆乳无码视频在线观看 | 亚洲综合无码久久精品综合 | 成人动漫在线观看 | 在线欧美精品一区二区三区 | 色综合久久久无码网中文 | 无码精品国产va在线观看dvd | 熟妇人妻中文av无码 | 欧美野外疯狂做受xxxx高潮 | 免费国产黄网站在线观看 | 国产精品久久久久7777 | 成人亚洲精品久久久久软件 | 色婷婷欧美在线播放内射 | 日本又色又爽又黄的a片18禁 | 无码国产色欲xxxxx视频 | 国产黄在线观看免费观看不卡 | 国产精品18久久久久久麻辣 | 久久99精品国产.久久久久 | 日韩精品一区二区av在线 | 图片小说视频一区二区 | 蜜桃av抽搐高潮一区二区 | 国产精品美女久久久网av | 丰满少妇高潮惨叫视频 | 又大又硬又黄的免费视频 | 亚洲爆乳精品无码一区二区三区 | 亚洲午夜福利在线观看 | 中文字幕中文有码在线 | 色妞www精品免费视频 | 中文字幕无码免费久久99 | 亚洲日韩av片在线观看 | 99久久久无码国产精品免费 | 精品国偷自产在线视频 | 国产麻豆精品一区二区三区v视界 | 超碰97人人做人人爱少妇 | 中文字幕久久久久人妻 | 九一九色国产 | 欧美第一黄网免费网站 | 亚洲 另类 在线 欧美 制服 | 亚洲人成人无码网www国产 | 国产69精品久久久久app下载 | 无码乱肉视频免费大全合集 | 少妇久久久久久人妻无码 | 日本一卡2卡3卡四卡精品网站 | 国内精品人妻无码久久久影院蜜桃 | av无码久久久久不卡免费网站 | 亚洲日韩乱码中文无码蜜桃臀网站 | 一本久道久久综合婷婷五月 | 青青久在线视频免费观看 | 在线观看国产午夜福利片 | 蜜桃视频插满18在线观看 | 丰满少妇人妻久久久久久 | av无码久久久久不卡免费网站 | 亚洲综合精品香蕉久久网 | 99在线 | 亚洲 | 欧美一区二区三区视频在线观看 | 国产两女互慰高潮视频在线观看 | 99久久人妻精品免费一区 | 国产 精品 自在自线 | 激情内射亚州一区二区三区爱妻 | 国产艳妇av在线观看果冻传媒 | 亚洲区欧美区综合区自拍区 | 最近免费中文字幕中文高清百度 | 狠狠色噜噜狠狠狠7777奇米 | 国产97色在线 | 免 | 2019午夜福利不卡片在线 | 欧美午夜特黄aaaaaa片 | 国产美女极度色诱视频www | 国产亚洲人成a在线v网站 | 久久久久久久人妻无码中文字幕爆 | 国产精品久久国产精品99 | 激情五月综合色婷婷一区二区 | v一区无码内射国产 | 国产精品无码一区二区桃花视频 | 亚洲人亚洲人成电影网站色 | 日韩亚洲欧美精品综合 | 欧美激情内射喷水高潮 | 亚欧洲精品在线视频免费观看 | 日本乱偷人妻中文字幕 | 激情国产av做激情国产爱 | 日本精品久久久久中文字幕 | 成人欧美一区二区三区黑人 | 未满小14洗澡无码视频网站 | 亚洲无人区午夜福利码高清完整版 | 国产午夜亚洲精品不卡 | а√天堂www在线天堂小说 | 中文字幕无码免费久久9一区9 | 中文字幕+乱码+中文字幕一区 | 两性色午夜视频免费播放 | 欧美午夜特黄aaaaaa片 | 国产两女互慰高潮视频在线观看 | 狠狠色丁香久久婷婷综合五月 | 国产精品a成v人在线播放 | 欧美大屁股xxxxhd黑色 | 麻豆人妻少妇精品无码专区 | 欧美大屁股xxxxhd黑色 | 日韩亚洲欧美中文高清在线 | 国产莉萝无码av在线播放 | 精品无码国产自产拍在线观看蜜 | av人摸人人人澡人人超碰下载 | 久久久久久国产精品无码下载 | 在线观看国产一区二区三区 | 色诱久久久久综合网ywww | 久久精品中文字幕一区 | 无码国内精品人妻少妇 | 欧美 日韩 人妻 高清 中文 | 最新国产乱人伦偷精品免费网站 | 国产肉丝袜在线观看 | 亚洲欧美精品aaaaaa片 | 中文字幕精品av一区二区五区 | 99久久精品日本一区二区免费 | 99久久精品日本一区二区免费 | 久久久久亚洲精品中文字幕 | 人妻尝试又大又粗久久 | 纯爱无遮挡h肉动漫在线播放 | 熟妇人妻无乱码中文字幕 | 狂野欧美激情性xxxx | 久久综合九色综合欧美狠狠 | 亚洲色欲色欲天天天www | 国产人妻久久精品二区三区老狼 | 无码av最新清无码专区吞精 | 人妻少妇被猛烈进入中文字幕 | 国产深夜福利视频在线 | 亚洲色www成人永久网址 | 免费中文字幕日韩欧美 | 日日碰狠狠躁久久躁蜜桃 | 国产人妻人伦精品1国产丝袜 | 欧美成人高清在线播放 | 99久久人妻精品免费二区 | 国产猛烈高潮尖叫视频免费 | 无码国产色欲xxxxx视频 | 亚洲国产欧美日韩精品一区二区三区 | 欧美丰满熟妇xxxx性ppx人交 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲精品久久久久中文第一幕 | 波多野结衣 黑人 | 18无码粉嫩小泬无套在线观看 | 日欧一片内射va在线影院 | 亚洲色成人中文字幕网站 | 鲁鲁鲁爽爽爽在线视频观看 | 欧美 亚洲 国产 另类 | 国产成人无码av片在线观看不卡 | 久久97精品久久久久久久不卡 | 国产无套粉嫩白浆在线 | 无码帝国www无码专区色综合 | 东京热无码av男人的天堂 | 久久精品一区二区三区四区 | 黑人大群体交免费视频 | 成人无码精品1区2区3区免费看 | 亚洲综合无码一区二区三区 | 久久zyz资源站无码中文动漫 | 日产国产精品亚洲系列 | 性生交大片免费看女人按摩摩 | 无码一区二区三区在线 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产精品无套呻吟在线 | 人人爽人人澡人人人妻 | 欧美日韩人成综合在线播放 | 老司机亚洲精品影院无码 | 亚洲中文字幕无码一久久区 | 国产黑色丝袜在线播放 | 国产猛烈高潮尖叫视频免费 | 麻豆成人精品国产免费 | 久热国产vs视频在线观看 | 中文字幕人妻无码一区二区三区 | 无遮挡国产高潮视频免费观看 | 久久久久se色偷偷亚洲精品av | 午夜理论片yy44880影院 | 国产午夜精品一区二区三区嫩草 | 特黄特色大片免费播放器图片 | 亚洲无人区午夜福利码高清完整版 | 欧美xxxxx精品 | 国产精品毛多多水多 | 熟妇女人妻丰满少妇中文字幕 | 午夜成人1000部免费视频 | 男女性色大片免费网站 | 国精产品一品二品国精品69xx | 亚洲中文无码av永久不收费 | 亚洲色成人中文字幕网站 | 久久久久99精品成人片 | 欧美成人午夜精品久久久 | 麻豆国产97在线 | 欧洲 | 露脸叫床粗话东北少妇 | 午夜精品久久久久久久久 | 亚洲 激情 小说 另类 欧美 | 国产精品第一国产精品 | 老司机亚洲精品影院 | 精品无码一区二区三区的天堂 | 国产情侣作爱视频免费观看 | 日本精品久久久久中文字幕 | 亚洲精品国产第一综合99久久 | 免费看男女做好爽好硬视频 | 亚洲欧美中文字幕5发布 | 国产精品第一区揄拍无码 | 国产又粗又硬又大爽黄老大爷视 | 搡女人真爽免费视频大全 | 成人动漫在线观看 | 国产真人无遮挡作爱免费视频 | 人妻体内射精一区二区三四 | 中文字幕人妻无码一区二区三区 | 欧美国产亚洲日韩在线二区 | 国产亚洲日韩欧美另类第八页 | 狠狠色欧美亚洲狠狠色www | 好爽又高潮了毛片免费下载 | 女人和拘做爰正片视频 | 欧美日韩一区二区免费视频 | 亚洲啪av永久无码精品放毛片 | 亚洲欧美国产精品久久 | 131美女爱做视频 | 99精品无人区乱码1区2区3区 | 丝袜 中出 制服 人妻 美腿 | 免费国产成人高清在线观看网站 | 青青草原综合久久大伊人精品 | 天下第一社区视频www日本 | 人人妻人人澡人人爽欧美精品 | 日韩av无码一区二区三区 | 国产精品美女久久久久av爽李琼 | 成人无码精品1区2区3区免费看 | 亚洲熟妇色xxxxx欧美老妇 | 中文无码伦av中文字幕 | 亚洲精品午夜无码电影网 | 中国女人内谢69xxxxxa片 | 国内揄拍国内精品少妇国语 | 国产香蕉尹人综合在线观看 | 少妇激情av一区二区 | 久久久亚洲欧洲日产国码αv | 亚洲精品午夜无码电影网 | 乱中年女人伦av三区 | 日日碰狠狠躁久久躁蜜桃 | 波多野结衣一区二区三区av免费 | 亚洲精品鲁一鲁一区二区三区 | 最新版天堂资源中文官网 | 又大又黄又粗又爽的免费视频 | 双乳奶水饱满少妇呻吟 | 国产激情无码一区二区app | 亚洲精品中文字幕乱码 | 亚洲另类伦春色综合小说 | 国产精品自产拍在线观看 | 动漫av网站免费观看 | 国产乱子伦视频在线播放 | 色综合久久88色综合天天 | 少妇的肉体aa片免费 | 久久久久久亚洲精品a片成人 | www国产亚洲精品久久久日本 | 国产精品美女久久久久av爽李琼 | 精品欧洲av无码一区二区三区 | 岛国片人妻三上悠亚 | 国内综合精品午夜久久资源 | 精品国产一区二区三区av 性色 | 特大黑人娇小亚洲女 | 国产精品18久久久久久麻辣 | 久久久久久亚洲精品a片成人 | 无人区乱码一区二区三区 | 国产精品毛多多水多 | 欧美xxxx黑人又粗又长 | 亚洲国产精品久久久久久 | 97人妻精品一区二区三区 | 欧美亚洲国产一区二区三区 | 乱码午夜-极国产极内射 | 日本精品少妇一区二区三区 | 成人试看120秒体验区 | 色一情一乱一伦一视频免费看 | 亚洲啪av永久无码精品放毛片 | 狠狠色色综合网站 | 兔费看少妇性l交大片免费 | 国产精品a成v人在线播放 | 伊人久久大香线蕉亚洲 | 久久综合色之久久综合 | 蜜臀av在线播放 久久综合激激的五月天 | 2019午夜福利不卡片在线 | 久久国产精品精品国产色婷婷 | 日韩亚洲欧美中文高清在线 | 国产色视频一区二区三区 | 国产精品毛多多水多 | 18禁黄网站男男禁片免费观看 | 99久久精品国产一区二区蜜芽 | 国产精品久久久久久久影院 | 免费无码一区二区三区蜜桃大 | 色一情一乱一伦一视频免费看 | 中文字幕中文有码在线 | 国产亚洲视频中文字幕97精品 | 午夜丰满少妇性开放视频 | 国产精品久久久av久久久 | 18禁止看的免费污网站 | 精品乱子伦一区二区三区 | 动漫av一区二区在线观看 | 一本精品99久久精品77 | 成人三级无码视频在线观看 | 国产精品视频免费播放 | 中文字幕av伊人av无码av | 成人亚洲精品久久久久软件 | 波多野结衣av在线观看 | 丁香啪啪综合成人亚洲 | 亚无码乱人伦一区二区 | 日韩人妻无码中文字幕视频 | 精品夜夜澡人妻无码av蜜桃 | 日韩无码专区 | 亚洲欧洲中文日韩av乱码 | 亚洲中文字幕成人无码 | 无码人妻丰满熟妇区五十路百度 | 国产亚洲精品久久久久久国模美 | 日本一卡二卡不卡视频查询 | 少妇太爽了在线观看 | 激情五月综合色婷婷一区二区 | 西西人体www44rt大胆高清 | 人妻与老人中文字幕 | 国产av无码专区亚洲awww | 乱人伦中文视频在线观看 | 性欧美大战久久久久久久 | 日本一卡二卡不卡视频查询 | 久久久av男人的天堂 | 日本xxxx色视频在线观看免费 | 久久精品国产一区二区三区肥胖 | 捆绑白丝粉色jk震动捧喷白浆 | 97se亚洲精品一区 | 粉嫩少妇内射浓精videos | 国产美女极度色诱视频www | 色情久久久av熟女人妻网站 | 一个人免费观看的www视频 | 欧美35页视频在线观看 | 中文无码精品a∨在线观看不卡 | 色一情一乱一伦一视频免费看 | 亚洲成av人影院在线观看 | 成 人影片 免费观看 | 国产97人人超碰caoprom | 福利一区二区三区视频在线观看 | 久久精品视频在线看15 | 免费男性肉肉影院 | 丝袜人妻一区二区三区 | 久久99精品久久久久久 | 日本熟妇人妻xxxxx人hd | 国产免费久久精品国产传媒 | 国精品人妻无码一区二区三区蜜柚 | 人妻尝试又大又粗久久 | 亚洲区欧美区综合区自拍区 | 亚洲欧美精品aaaaaa片 | 成人av无码一区二区三区 | 久久久久99精品国产片 | 77777熟女视频在线观看 а天堂中文在线官网 | 亚洲国产精品成人久久蜜臀 | 曰韩少妇内射免费播放 | 美女黄网站人色视频免费国产 | 国内揄拍国内精品人妻 | 无码一区二区三区在线观看 | 国产成人综合色在线观看网站 | 国产精品无码永久免费888 | 粗大的内捧猛烈进出视频 | 久久精品国产大片免费观看 | 98国产精品综合一区二区三区 | 国产亚av手机在线观看 | 俄罗斯老熟妇色xxxx | 国产精品无码一区二区桃花视频 | 亚洲熟妇色xxxxx欧美老妇 | 77777熟女视频在线观看 а天堂中文在线官网 | 99精品久久毛片a片 | 国产尤物精品视频 | 国产一区二区三区影院 | 一个人看的www免费视频在线观看 | 亚洲一区二区三区国产精华液 | 国产内射老熟女aaaa | 午夜福利电影 | 成人免费视频在线观看 | 国产免费观看黄av片 | 成人亚洲精品久久久久软件 | 欧洲美熟女乱又伦 | 成人精品天堂一区二区三区 | 亚洲一区二区三区国产精华液 | 国产激情无码一区二区app | 国产精品99久久精品爆乳 | 人人妻人人澡人人爽欧美一区 | 精品国产乱码久久久久乱码 | 亚洲人交乣女bbw | 人妻无码久久精品人妻 | 亚洲综合无码久久精品综合 | 精品一区二区三区波多野结衣 | 熟女体下毛毛黑森林 | 九月婷婷人人澡人人添人人爽 | 国产精品人人爽人人做我的可爱 | 欧美freesex黑人又粗又大 | 一本无码人妻在中文字幕免费 | 欧美怡红院免费全部视频 | 波多野结衣一区二区三区av免费 | 久热国产vs视频在线观看 | 精品国精品国产自在久国产87 | 久久99精品久久久久久 | 色诱久久久久综合网ywww | 亚洲一区二区三区在线观看网站 | 在线精品国产一区二区三区 | 无码人妻久久一区二区三区不卡 | 亚洲va中文字幕无码久久不卡 | 熟女少妇在线视频播放 | 国产舌乚八伦偷品w中 | 国产9 9在线 | 中文 | 亚洲成a人片在线观看无码 | 国内精品人妻无码久久久影院蜜桃 | 国产一区二区三区四区五区加勒比 | 人人妻人人澡人人爽人人精品浪潮 | 四虎国产精品免费久久 | 99精品无人区乱码1区2区3区 | 国产精品高潮呻吟av久久4虎 | 色综合久久久无码中文字幕 | 精品成在人线av无码免费看 | 中文字幕精品av一区二区五区 | 欧美人与牲动交xxxx | 任你躁在线精品免费 | 国产一区二区三区影院 | 国产99久久精品一区二区 | 国产午夜视频在线观看 | 国产97色在线 | 免 | 久9re热视频这里只有精品 | 综合人妻久久一区二区精品 | 亚洲色欲色欲欲www在线 | 激情内射日本一区二区三区 | 日韩精品a片一区二区三区妖精 | 高清无码午夜福利视频 | 97久久国产亚洲精品超碰热 | 亚洲男人av天堂午夜在 | 5858s亚洲色大成网站www | 亚洲日韩av一区二区三区四区 | 久久综合九色综合97网 | 伊在人天堂亚洲香蕉精品区 | 少妇太爽了在线观看 | 国产精品高潮呻吟av久久 | 亚洲区欧美区综合区自拍区 | 97无码免费人妻超级碰碰夜夜 | 久久aⅴ免费观看 | 亚洲综合另类小说色区 | 无码av免费一区二区三区试看 | 久久综合狠狠综合久久综合88 | 青青青爽视频在线观看 | 人妻无码久久精品人妻 | 亚洲精品午夜无码电影网 | 2019nv天堂香蕉在线观看 | 亚洲综合另类小说色区 | 精品国精品国产自在久国产87 | 欧美人与物videos另类 | 亚洲一区二区三区四区 | 国产精品对白交换视频 | 99久久人妻精品免费一区 | 午夜性刺激在线视频免费 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 97久久国产亚洲精品超碰热 | 亚洲欧美综合区丁香五月小说 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲一区二区三区四区 | 国产亚洲欧美日韩亚洲中文色 | 在线播放亚洲第一字幕 | 精品一二三区久久aaa片 | 国产精品亚洲五月天高清 | 亚洲 欧美 激情 小说 另类 | 老子影院午夜精品无码 | 日韩av无码一区二区三区 | 久9re热视频这里只有精品 | 久久亚洲中文字幕无码 | 人人澡人人透人人爽 | 国产情侣作爱视频免费观看 | 美女黄网站人色视频免费国产 | 国内精品人妻无码久久久影院 | 国产日产欧产精品精品app | 综合激情五月综合激情五月激情1 | 少妇性l交大片欧洲热妇乱xxx | 日本va欧美va欧美va精品 | 日产精品99久久久久久 | 麻豆国产人妻欲求不满 | 亚洲欧美中文字幕5发布 | 99精品无人区乱码1区2区3区 | 国产黄在线观看免费观看不卡 | 久久久久亚洲精品中文字幕 | 综合人妻久久一区二区精品 | 成 人 网 站国产免费观看 | 精品无人国产偷自产在线 | 国产精品久久久久7777 | 国产精品亚洲五月天高清 | 亚洲第一网站男人都懂 | 国产亚洲精品久久久久久久久动漫 | 国产精品久久国产精品99 | 18黄暴禁片在线观看 | 少妇人妻偷人精品无码视频 | 国产无av码在线观看 | 国产三级精品三级男人的天堂 | 国产精品第一国产精品 | 少妇激情av一区二区 | 水蜜桃av无码 | 亚洲爆乳大丰满无码专区 | 无码午夜成人1000部免费视频 | 国产精品亚洲lv粉色 | 亚洲无人区一区二区三区 | 爆乳一区二区三区无码 | 岛国片人妻三上悠亚 | 熟妇激情内射com | 亚洲一区二区三区含羞草 | 欧美精品无码一区二区三区 | 人妻少妇被猛烈进入中文字幕 | 国产av一区二区精品久久凹凸 | 欧美激情综合亚洲一二区 | 夜夜夜高潮夜夜爽夜夜爰爰 | 无码乱肉视频免费大全合集 | 久久久久99精品国产片 | 国产人妻精品一区二区三区 | aa片在线观看视频在线播放 | 久久99精品久久久久久 | 3d动漫精品啪啪一区二区中 | 2019nv天堂香蕉在线观看 | 国产精品毛片一区二区 | 久久www免费人成人片 | 亚洲aⅴ无码成人网站国产app | 亚洲一区二区观看播放 | 日韩成人一区二区三区在线观看 | 欧美丰满熟妇xxxx性ppx人交 | 一本无码人妻在中文字幕免费 | 国产精品无码mv在线观看 | 成人欧美一区二区三区黑人 | 乌克兰少妇性做爰 | 性欧美熟妇videofreesex | a在线观看免费网站大全 | 亚洲成a人片在线观看无码 | 久久午夜无码鲁丝片午夜精品 | 青青草原综合久久大伊人精品 | 日韩精品a片一区二区三区妖精 | 久久97精品久久久久久久不卡 | 少妇一晚三次一区二区三区 | 97精品人妻一区二区三区香蕉 | 99久久久国产精品无码免费 | 小鲜肉自慰网站xnxx | 国产av久久久久精东av | 在线成人www免费观看视频 | 欧美成人高清在线播放 | 国产两女互慰高潮视频在线观看 | 欧美成人免费全部网站 | 99久久久国产精品无码免费 | 又湿又紧又大又爽a视频国产 | 强辱丰满人妻hd中文字幕 | 亚洲另类伦春色综合小说 | 丰满肥臀大屁股熟妇激情视频 | 少妇高潮一区二区三区99 | 老熟妇乱子伦牲交视频 | 亚洲欧美日韩国产精品一区二区 | 国产舌乚八伦偷品w中 | 天天综合网天天综合色 | 国产做国产爱免费视频 | 日本熟妇浓毛 | 小泽玛莉亚一区二区视频在线 | 亚洲无人区午夜福利码高清完整版 | 亚洲另类伦春色综合小说 | 天堂一区人妻无码 | 久久成人a毛片免费观看网站 | 久久国产精品精品国产色婷婷 | 色诱久久久久综合网ywww | 国产综合久久久久鬼色 | 粉嫩少妇内射浓精videos | 国产无套内射久久久国产 | 成 人 网 站国产免费观看 | 国产欧美精品一区二区三区 | 亚洲成色在线综合网站 | 久久精品丝袜高跟鞋 | 亚洲精品一区二区三区婷婷月 | 少妇高潮喷潮久久久影院 | 国产精品毛多多水多 | 欧美 日韩 人妻 高清 中文 | 国产精品久久久久影院嫩草 | 精品无码一区二区三区的天堂 | 国产精品香蕉在线观看 | 欧美日本免费一区二区三区 | 国产成人综合在线女婷五月99播放 | 成人性做爰aaa片免费看 | 国产手机在线αⅴ片无码观看 | 亚洲乱亚洲乱妇50p | 亲嘴扒胸摸屁股激烈网站 | 国产精品无码mv在线观看 | 午夜无码区在线观看 | 久久精品国产一区二区三区肥胖 | 俄罗斯老熟妇色xxxx | 大乳丰满人妻中文字幕日本 | 无码av岛国片在线播放 | 成人无码精品一区二区三区 | 亚洲精品午夜无码电影网 | 国产女主播喷水视频在线观看 | 久久久av男人的天堂 | 欧美精品在线观看 | 国产精品办公室沙发 | 日韩精品无码免费一区二区三区 | 荫蒂被男人添的好舒服爽免费视频 | 国产精品-区区久久久狼 | 久久久av男人的天堂 | 亚洲国产综合无码一区 | 日韩人妻无码一区二区三区久久99 | 久久久精品成人免费观看 | 国产电影无码午夜在线播放 | а天堂中文在线官网 | 欧美变态另类xxxx | 欧美人与动性行为视频 | 亚洲成a人片在线观看无码3d | 久久国产精品偷任你爽任你 | 中文字幕无线码免费人妻 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 亚洲精品综合一区二区三区在线 | 一个人看的视频www在线 | 国产内射老熟女aaaa | 色综合久久久无码中文字幕 | 九一九色国产 | 东京热男人av天堂 | 日韩精品一区二区av在线 | 久久精品成人欧美大片 | 亚洲欧美国产精品久久 | 色一情一乱一伦一区二区三欧美 | 国产人妻久久精品二区三区老狼 | 青青草原综合久久大伊人精品 | 波多野42部无码喷潮在线 | 中文字幕色婷婷在线视频 | 成人亚洲精品久久久久软件 | 蜜臀av在线播放 久久综合激激的五月天 | 人人妻人人澡人人爽精品欧美 | 伊人久久婷婷五月综合97色 | 无码人妻丰满熟妇区五十路百度 | 乱人伦人妻中文字幕无码久久网 | 久久久久成人精品免费播放动漫 | 久久久久久国产精品无码下载 | 亚洲综合色区中文字幕 | 国产乡下妇女做爰 | 狠狠色色综合网站 | 在教室伦流澡到高潮hnp视频 | 人妻尝试又大又粗久久 | 伊人久久大香线蕉av一区二区 | 大肉大捧一进一出视频出来呀 | 精品国产一区av天美传媒 | 亚洲中文字幕成人无码 | 国产亲子乱弄免费视频 | 日韩 欧美 动漫 国产 制服 | 丰满岳乱妇在线观看中字无码 | 成年美女黄网站色大免费视频 | 无码午夜成人1000部免费视频 | 在线观看免费人成视频 | a国产一区二区免费入口 | 中文字幕无码免费久久9一区9 | 国色天香社区在线视频 | 中文字幕无码热在线视频 | 久久人人爽人人人人片 | 丁香花在线影院观看在线播放 | 久久精品人人做人人综合 | 午夜不卡av免费 一本久久a久久精品vr综合 | 亚洲人成网站在线播放942 | 成人精品视频一区二区三区尤物 | 亚洲综合无码一区二区三区 | 老子影院午夜伦不卡 | 亚洲人亚洲人成电影网站色 | 在线 国产 欧美 亚洲 天堂 | 中文亚洲成a人片在线观看 | 久久久久99精品国产片 | 国产97色在线 | 免 | 99久久久无码国产aaa精品 | 亚洲精品久久久久久久久久久 | 亚洲 日韩 欧美 成人 在线观看 | 国产午夜无码视频在线观看 | 我要看www免费看插插视频 | 国产凸凹视频一区二区 | 日本va欧美va欧美va精品 | 精品无码成人片一区二区98 | 中文字幕精品av一区二区五区 | 亚洲熟妇色xxxxx欧美老妇y | 欧美丰满熟妇xxxx性ppx人交 | 少妇一晚三次一区二区三区 | 国色天香社区在线视频 | 免费视频欧美无人区码 | 久久精品国产99久久6动漫 | 日韩视频 中文字幕 视频一区 | 国产艳妇av在线观看果冻传媒 | 思思久久99热只有频精品66 | 四虎国产精品一区二区 | 日韩精品无码一本二本三本色 | 午夜无码区在线观看 | 爱做久久久久久 | 久激情内射婷内射蜜桃人妖 | 色狠狠av一区二区三区 | 亚洲狠狠婷婷综合久久 | 在线欧美精品一区二区三区 | 精品国产av色一区二区深夜久久 | 国产成人精品久久亚洲高清不卡 | 精品一区二区不卡无码av | 对白脏话肉麻粗话av | 男人的天堂2018无码 | 亚洲国产精品无码久久久久高潮 | 亚洲欧洲中文日韩av乱码 | 樱花草在线播放免费中文 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 精品一区二区不卡无码av | 少妇高潮一区二区三区99 | 亚洲精品成人av在线 | 精品亚洲成av人在线观看 | 久久精品国产日本波多野结衣 | 中文字幕无码人妻少妇免费 | 成年美女黄网站色大免费全看 | 精品 日韩 国产 欧美 视频 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 久久zyz资源站无码中文动漫 | 色五月五月丁香亚洲综合网 | www国产亚洲精品久久网站 | 午夜福利试看120秒体验区 | 日韩精品a片一区二区三区妖精 | 色综合久久久无码网中文 | 国产成人无码av一区二区 | 中文字幕无码日韩专区 | 国产三级精品三级男人的天堂 | 一区二区三区高清视频一 | 色五月五月丁香亚洲综合网 | 亚洲人亚洲人成电影网站色 | 精品夜夜澡人妻无码av蜜桃 | 国产无遮挡又黄又爽免费视频 | 成人精品天堂一区二区三区 | 亚洲色欲色欲天天天www | a在线亚洲男人的天堂 | 国内精品人妻无码久久久影院 | 强奷人妻日本中文字幕 | 老太婆性杂交欧美肥老太 | 男女性色大片免费网站 | 蜜臀aⅴ国产精品久久久国产老师 | 98国产精品综合一区二区三区 | 我要看www免费看插插视频 | 在线成人www免费观看视频 | www一区二区www免费 | 熟女俱乐部五十路六十路av | 国产 浪潮av性色四虎 | 亚洲人亚洲人成电影网站色 | 欧美老妇交乱视频在线观看 | 九九久久精品国产免费看小说 | 日本欧美一区二区三区乱码 | 学生妹亚洲一区二区 | 日本www一道久久久免费榴莲 | 亚洲欧美日韩国产精品一区二区 | 精品厕所偷拍各类美女tp嘘嘘 | 国产精品自产拍在线观看 | 全球成人中文在线 | 成人av无码一区二区三区 | 丰满人妻翻云覆雨呻吟视频 | 亚洲码国产精品高潮在线 | 国内老熟妇对白xxxxhd | 人妻夜夜爽天天爽三区 | 少妇愉情理伦片bd | 在线精品亚洲一区二区 | 双乳奶水饱满少妇呻吟 | 麻豆精品国产精华精华液好用吗 | 一本色道婷婷久久欧美 | 国产激情精品一区二区三区 | 日本熟妇乱子伦xxxx | 色综合视频一区二区三区 | 欧美一区二区三区视频在线观看 | 亚洲中文字幕在线观看 | 亚洲aⅴ无码成人网站国产app | aⅴ亚洲 日韩 色 图网站 播放 | 免费视频欧美无人区码 | 国产一区二区三区影院 | 婷婷丁香六月激情综合啪 | 日本一卡2卡3卡四卡精品网站 | 精品国产一区二区三区四区 | 亚洲一区二区三区 | 青青草原综合久久大伊人精品 | 鲁大师影院在线观看 | 水蜜桃色314在线观看 | 色欲久久久天天天综合网精品 | 狠狠综合久久久久综合网 | 鲁鲁鲁爽爽爽在线视频观看 | 乱人伦人妻中文字幕无码久久网 | 无码人妻出轨黑人中文字幕 | 成人性做爰aaa片免费看 | 无码av免费一区二区三区试看 | 国产手机在线αⅴ片无码观看 | 日韩精品成人一区二区三区 | 4hu四虎永久在线观看 | 久久精品成人欧美大片 | 色窝窝无码一区二区三区色欲 | 精品一区二区不卡无码av | 亚洲成av人影院在线观看 | 久久人人爽人人爽人人片av高清 | 成人性做爰aaa片免费看不忠 | 国产精品va在线观看无码 | 日日噜噜噜噜夜夜爽亚洲精品 | 999久久久国产精品消防器材 | 日本一卡2卡3卡四卡精品网站 | av人摸人人人澡人人超碰下载 | 国产精品无码久久av | 国产精品第一区揄拍无码 | 人妻aⅴ无码一区二区三区 | av人摸人人人澡人人超碰下载 | 成人免费无码大片a毛片 | 亚洲日本一区二区三区在线 | 国产精品亚洲а∨无码播放麻豆 | 日本成熟视频免费视频 | 狠狠色色综合网站 | 久久熟妇人妻午夜寂寞影院 | 免费网站看v片在线18禁无码 | 国产无套粉嫩白浆在线 | 真人与拘做受免费视频一 | 国产成人无码a区在线观看视频app | 国产精品二区一区二区aⅴ污介绍 | 国产精品无码mv在线观看 | 色欲av亚洲一区无码少妇 | 少妇无套内谢久久久久 | 亚洲国产精品久久久久久 | 男人和女人高潮免费网站 | 又紧又大又爽精品一区二区 | 男女下面进入的视频免费午夜 | 亚洲一区二区三区国产精华液 | 中文字幕乱码亚洲无线三区 | 精品aⅴ一区二区三区 | 中文字幕无码乱人伦 | 成在人线av无码免观看麻豆 | 东京热一精品无码av | 久久国产自偷自偷免费一区调 | 欧美丰满少妇xxxx性 | 色综合久久久久综合一本到桃花网 | 亚洲经典千人经典日产 | 午夜精品久久久久久久久 | 欧美三级不卡在线观看 | 国产精品久久久久影院嫩草 | 一本大道伊人av久久综合 | 国产亚洲欧美日韩亚洲中文色 | 国内少妇偷人精品视频 | 欧美丰满老熟妇xxxxx性 | 久久99久久99精品中文字幕 | 永久免费观看美女裸体的网站 | 亚洲一区二区三区无码久久 | av人摸人人人澡人人超碰下载 | 永久免费观看国产裸体美女 | 欧美性生交活xxxxxdddd | 99久久人妻精品免费一区 | √8天堂资源地址中文在线 | 欧美老妇与禽交 | 99视频精品全部免费免费观看 | 亚洲精品国偷拍自产在线麻豆 | 久久久精品欧美一区二区免费 | 狠狠色欧美亚洲狠狠色www | 亚洲色大成网站www国产 | 人妻少妇被猛烈进入中文字幕 | 纯爱无遮挡h肉动漫在线播放 | 国产性生大片免费观看性 | 无套内谢老熟女 | 十八禁真人啪啪免费网站 | 黑人粗大猛烈进出高潮视频 | 久久精品中文字幕大胸 | 中文字幕乱码中文乱码51精品 | 中文字幕+乱码+中文字幕一区 | 国产午夜亚洲精品不卡 | 好屌草这里只有精品 | 无码任你躁久久久久久久 | 日日橹狠狠爱欧美视频 | 中文字幕乱码中文乱码51精品 | 亚洲国产成人av在线观看 | 欧洲精品码一区二区三区免费看 | 中文字幕人妻无码一区二区三区 | 久久熟妇人妻午夜寂寞影院 | 亚洲 激情 小说 另类 欧美 | 中文字幕无码日韩专区 | 中文字幕色婷婷在线视频 | 亚洲综合无码一区二区三区 | 国产特级毛片aaaaaa高潮流水 | 亚洲综合无码一区二区三区 | 亚洲精品成人av在线 | 噜噜噜亚洲色成人网站 | 国产精品人人妻人人爽 | 97人妻精品一区二区三区 | 天天综合网天天综合色 | 欧美兽交xxxx×视频 | 无码av免费一区二区三区试看 | 三级4级全黄60分钟 | 久久精品国产大片免费观看 | 51国偷自产一区二区三区 | 九九久久精品国产免费看小说 | 久久久久成人精品免费播放动漫 | 老熟妇仑乱视频一区二区 | 久久五月精品中文字幕 | 理论片87福利理论电影 | 日本肉体xxxx裸交 | 国产精品久久久久久久影院 | 亚洲精品午夜国产va久久成人 | 国产激情一区二区三区 | 中文字幕无码热在线视频 | 欧美激情综合亚洲一二区 | 国产9 9在线 | 中文 | 中文字幕无码免费久久9一区9 | 精品国产av色一区二区深夜久久 | 少妇愉情理伦片bd | 亚洲综合在线一区二区三区 | 丰满人妻一区二区三区免费视频 | 国产内射老熟女aaaa | 一本一道久久综合久久 | 国产精品久久久久久久9999 | 无码一区二区三区在线 | 国产成人无码av片在线观看不卡 | 国产成人精品必看 | 高清无码午夜福利视频 | 又紧又大又爽精品一区二区 | 乱人伦中文视频在线观看 | 国产极品美女高潮无套在线观看 | 欧美日韩色另类综合 | 亚洲自偷自拍另类第1页 | 国产成人综合美国十次 | 中文无码伦av中文字幕 | 在线a亚洲视频播放在线观看 | 国产xxx69麻豆国语对白 | 亚洲性无码av中文字幕 | 亚洲精品欧美二区三区中文字幕 | 亚洲男人av天堂午夜在 | 99久久精品日本一区二区免费 | 精品久久久久久亚洲精品 | 成年美女黄网站色大免费视频 | 亚洲精品成人av在线 | 免费人成在线观看网站 | 亚洲 激情 小说 另类 欧美 | 国产精品丝袜黑色高跟鞋 | 成人亚洲精品久久久久 | 在线观看国产午夜福利片 | 色 综合 欧美 亚洲 国产 | 亚洲精品国产a久久久久久 | 黑人巨大精品欧美黑寡妇 | 亚洲日韩av片在线观看 | 亚洲成熟女人毛毛耸耸多 | 天天做天天爱天天爽综合网 | 3d动漫精品啪啪一区二区中 | 成人亚洲精品久久久久软件 | 久在线观看福利视频 | 国产综合久久久久鬼色 | 无码毛片视频一区二区本码 | 亚洲理论电影在线观看 | 小泽玛莉亚一区二区视频在线 | 国产99久久精品一区二区 | 亚洲日本一区二区三区在线 | 人妻夜夜爽天天爽三区 | 成人无码精品1区2区3区免费看 | 国产亚洲tv在线观看 | 疯狂三人交性欧美 | 久久亚洲a片com人成 | 国产午夜福利100集发布 | 婷婷色婷婷开心五月四房播播 | 日韩欧美中文字幕在线三区 | 亚洲の无码国产の无码影院 | 日韩视频 中文字幕 视频一区 | 精品久久久久久亚洲精品 | 又大又黄又粗又爽的免费视频 | 色综合久久网 | 又黄又爽又色的视频 | 精品 日韩 国产 欧美 视频 | 亚洲s码欧洲m码国产av | 漂亮人妻洗澡被公强 日日躁 | 精品久久久无码中文字幕 | 欧美大屁股xxxxhd黑色 | 亚洲国产午夜精品理论片 | 狠狠综合久久久久综合网 | 欧美人与牲动交xxxx | 色婷婷综合中文久久一本 | 国产无套内射久久久国产 | av在线亚洲欧洲日产一区二区 | 无码精品人妻一区二区三区av | 国产偷自视频区视频 | 黑人玩弄人妻中文在线 | 久久国产精品二国产精品 | 九九热爱视频精品 | 日韩人妻系列无码专区 | 精品国精品国产自在久国产87 | 国产一精品一av一免费 | 中文字幕无码av波多野吉衣 | 国产午夜福利亚洲第一 | а√天堂www在线天堂小说 | 人妻天天爽夜夜爽一区二区 | 日日碰狠狠躁久久躁蜜桃 | 国产精品久久国产精品99 | 精品国精品国产自在久国产87 | 天天躁日日躁狠狠躁免费麻豆 | 久久亚洲精品成人无码 | 永久黄网站色视频免费直播 | 日日橹狠狠爱欧美视频 | 曰韩无码二三区中文字幕 | 久久久精品人妻久久影视 | 国产精品久久精品三级 | 丰满人妻翻云覆雨呻吟视频 | 欧美熟妇另类久久久久久多毛 | 日韩亚洲欧美中文高清在线 | 国产无套内射久久久国产 | 中文字幕av伊人av无码av | 波多野结衣av一区二区全免费观看 | 成人无码视频在线观看网站 | а√资源新版在线天堂 | 大地资源网第二页免费观看 | 熟妇人妻激情偷爽文 | 欧美变态另类xxxx | 真人与拘做受免费视频 | 日韩少妇白浆无码系列 | 久久国产精品_国产精品 | 亚洲人成无码网www | 午夜精品一区二区三区在线观看 | 欧美zoozzooz性欧美 | av无码久久久久不卡免费网站 | 纯爱无遮挡h肉动漫在线播放 | 性做久久久久久久免费看 | 福利一区二区三区视频在线观看 | 玩弄人妻少妇500系列视频 | 日本乱人伦片中文三区 | 免费无码一区二区三区蜜桃大 | 久久人妻内射无码一区三区 | 玩弄人妻少妇500系列视频 | 亚洲精品一区国产 | 成年女人永久免费看片 | 日韩精品乱码av一区二区 | a国产一区二区免费入口 | 在线天堂新版最新版在线8 | 亚洲精品一区二区三区大桥未久 | 国产精品理论片在线观看 | 亚洲狠狠婷婷综合久久 | 亚洲日韩av片在线观看 | 欧美丰满熟妇xxxx性ppx人交 | 少妇激情av一区二区 | 强伦人妻一区二区三区视频18 | 亚洲国产精品久久久天堂 | 国产午夜无码精品免费看 | 亚洲国产欧美国产综合一区 | 网友自拍区视频精品 | 亚洲日韩av一区二区三区四区 | 日本大香伊一区二区三区 | 一本加勒比波多野结衣 | 国产香蕉尹人综合在线观看 | 国产美女精品一区二区三区 | 亚洲综合无码久久精品综合 | 欧美变态另类xxxx | 亚洲中文字幕乱码av波多ji | 国产精品人妻一区二区三区四 | 伊人久久婷婷五月综合97色 | 久久精品女人天堂av免费观看 | 国产亚洲精品精品国产亚洲综合 | 亚洲日韩av片在线观看 | 露脸叫床粗话东北少妇 | 日本熟妇乱子伦xxxx | 国产激情一区二区三区 | 欧美猛少妇色xxxxx | 又紧又大又爽精品一区二区 | 999久久久国产精品消防器材 | 亚洲天堂2017无码中文 | 久久久久成人片免费观看蜜芽 | 成人试看120秒体验区 | 精品人妻人人做人人爽夜夜爽 | 中文字幕久久久久人妻 | 老子影院午夜精品无码 | 久久久久亚洲精品中文字幕 | 极品嫩模高潮叫床 | 国产性生大片免费观看性 | 中文字幕av日韩精品一区二区 | 亚洲精品久久久久久久久久久 | 99riav国产精品视频 | 精品久久久中文字幕人妻 | 少妇一晚三次一区二区三区 | 国产午夜亚洲精品不卡下载 | 动漫av网站免费观看 | 国产亲子乱弄免费视频 | 九月婷婷人人澡人人添人人爽 | 少妇性荡欲午夜性开放视频剧场 | 国产精品久久久久久久9999 | 亚洲 日韩 欧美 成人 在线观看 | 亚洲精品国偷拍自产在线麻豆 | 少妇无套内谢久久久久 | 四十如虎的丰满熟妇啪啪 | 国产无遮挡又黄又爽免费视频 | 国产成人无码av一区二区 | 欧洲熟妇色 欧美 | 久久午夜夜伦鲁鲁片无码免费 | 精品国产一区二区三区四区 | 激情综合激情五月俺也去 | 日本xxxx色视频在线观看免费 | 亚洲区欧美区综合区自拍区 | 国产人妻大战黑人第1集 | 国产精品高潮呻吟av久久 | 日本一本二本三区免费 | 国产亚洲精品久久久久久大师 | 波多野结衣一区二区三区av免费 | 激情国产av做激情国产爱 | 麻豆国产人妻欲求不满谁演的 | 5858s亚洲色大成网站www | 中文字幕无码乱人伦 | 欧美日韩一区二区免费视频 | 国产一区二区三区精品视频 | 久久久久久久久888 | 亚洲人成影院在线观看 | 日本又色又爽又黄的a片18禁 | 精品国产国产综合精品 | 亚洲国产午夜精品理论片 | 国产成人精品久久亚洲高清不卡 | 日本高清一区免费中文视频 | 国产精品久久久午夜夜伦鲁鲁 | 久久综合网欧美色妞网 | 亚洲欧美日韩成人高清在线一区 | 成人无码精品1区2区3区免费看 | 少妇被黑人到高潮喷出白浆 | 真人与拘做受免费视频一 | 国产97色在线 | 免 | 婷婷色婷婷开心五月四房播播 | 亚洲综合无码一区二区三区 | 无码人妻精品一区二区三区下载 | 一本大道久久东京热无码av | 国产精品资源一区二区 | 搡女人真爽免费视频大全 | 伊人久久大香线焦av综合影院 | 麻豆蜜桃av蜜臀av色欲av | 丰满诱人的人妻3 | 国产又粗又硬又大爽黄老大爷视 | 国产亚洲欧美在线专区 | 曰韩少妇内射免费播放 | 青草视频在线播放 | 精品国精品国产自在久国产87 | 久久亚洲中文字幕无码 | 亚洲欧美日韩成人高清在线一区 | 免费看少妇作爱视频 | 欧美猛少妇色xxxxx | 天天躁夜夜躁狠狠是什么心态 | 少女韩国电视剧在线观看完整 | 国产成人无码午夜视频在线观看 | 东京热男人av天堂 | 久久久久免费看成人影片 | 亚洲 日韩 欧美 成人 在线观看 | 97夜夜澡人人爽人人喊中国片 | 欧美大屁股xxxxhd黑色 | 亚洲人成影院在线无码按摩店 | 国产香蕉尹人视频在线 | 人人爽人人澡人人高潮 | 国产精品丝袜黑色高跟鞋 | 亚洲一区二区三区无码久久 | 成 人 网 站国产免费观看 | 内射巨臀欧美在线视频 | 露脸叫床粗话东北少妇 | 中文毛片无遮挡高清免费 | 久久人人爽人人人人片 | 国产一区二区三区精品视频 | 亚洲色成人中文字幕网站 | 国语精品一区二区三区 | 一本大道伊人av久久综合 | 国产精品久久久久7777 | 亚拍精品一区二区三区探花 | 久激情内射婷内射蜜桃人妖 | 欧美性生交活xxxxxdddd | 日韩av无码中文无码电影 | 精品国产一区二区三区av 性色 | 麻豆果冻传媒2021精品传媒一区下载 | 亚洲理论电影在线观看 | 午夜福利一区二区三区在线观看 | 欧美性猛交xxxx富婆 | 中文字幕久久久久人妻 | 色一情一乱一伦一视频免费看 | 国精品人妻无码一区二区三区蜜柚 | 国产偷抇久久精品a片69 | 国产69精品久久久久app下载 | 乱人伦中文视频在线观看 | 秋霞成人午夜鲁丝一区二区三区 | 国产九九九九九九九a片 | 国产熟女一区二区三区四区五区 | 乱中年女人伦av三区 | 久久久久久久久888 | 97无码免费人妻超级碰碰夜夜 | 99视频精品全部免费免费观看 | 无码人妻黑人中文字幕 | 少妇性荡欲午夜性开放视频剧场 | 国产av久久久久精东av | 人妻人人添人妻人人爱 | 午夜时刻免费入口 | 人妻aⅴ无码一区二区三区 | 亚洲国产午夜精品理论片 | 人妻aⅴ无码一区二区三区 | 亚洲一区二区三区偷拍女厕 | 国产高清不卡无码视频 | 两性色午夜免费视频 | 性史性农村dvd毛片 | 日韩精品a片一区二区三区妖精 | 色偷偷人人澡人人爽人人模 | 高潮毛片无遮挡高清免费 | 荫蒂添的好舒服视频囗交 | 欧美午夜特黄aaaaaa片 | 中国大陆精品视频xxxx | 亚洲中文字幕va福利 | 成人精品视频一区二区三区尤物 | 国产国语老龄妇女a片 | 午夜理论片yy44880影院 | 欧美老妇交乱视频在线观看 | 中文精品无码中文字幕无码专区 | 久激情内射婷内射蜜桃人妖 | 免费播放一区二区三区 | 天堂а√在线中文在线 | 亚洲欧美日韩成人高清在线一区 | 欧美国产日韩亚洲中文 | 亚洲日韩乱码中文无码蜜桃臀网站 | 人人爽人人澡人人高潮 | 无码人妻丰满熟妇区五十路百度 | 国产精品久久久久9999小说 | 女人被爽到呻吟gif动态图视看 | 亚洲一区二区三区 | 永久免费观看美女裸体的网站 | 亚洲呦女专区 | 日韩av无码中文无码电影 | 乌克兰少妇xxxx做受 | 丰满人妻一区二区三区免费视频 | 又大又紧又粉嫩18p少妇 | 色综合久久久无码中文字幕 | 国产在线精品一区二区三区直播 | 亚洲色欲色欲天天天www | 欧美日韩视频无码一区二区三 | 无码人妻av免费一区二区三区 | 人妻少妇精品无码专区动漫 | 国产激情艳情在线看视频 | 日本一卡二卡不卡视频查询 | 亚洲精品国产第一综合99久久 | 波多野结衣高清一区二区三区 | 999久久久国产精品消防器材 | 国产另类ts人妖一区二区 | 色窝窝无码一区二区三区色欲 | 欧美大屁股xxxxhd黑色 | 无码国产乱人伦偷精品视频 | 无码人妻精品一区二区三区下载 | 国产精品久久久久久亚洲影视内衣 | 亚洲中文字幕在线无码一区二区 | 无码国产乱人伦偷精品视频 | 免费无码的av片在线观看 | 国产香蕉尹人综合在线观看 | 内射欧美老妇wbb | 久久这里只有精品视频9 | 亚洲综合色区中文字幕 | 性欧美牲交xxxxx视频 | 精品人人妻人人澡人人爽人人 | 国产一区二区三区四区五区加勒比 | 精品偷拍一区二区三区在线看 | 成人毛片一区二区 | 成人一在线视频日韩国产 | 国产亚洲美女精品久久久2020 | 欧美自拍另类欧美综合图片区 | 国产成人久久精品流白浆 | 欧美成人家庭影院 | 性色欲网站人妻丰满中文久久不卡 | 国产精品手机免费 | 97夜夜澡人人爽人人喊中国片 | 377p欧洲日本亚洲大胆 | 国产精品怡红院永久免费 | 四虎影视成人永久免费观看视频 | 无码帝国www无码专区色综合 | 久久亚洲精品中文字幕无男同 | 熟妇女人妻丰满少妇中文字幕 | 国产午夜亚洲精品不卡下载 | 精品久久8x国产免费观看 | 无码av中文字幕免费放 | 欧美 亚洲 国产 另类 | 成人精品视频一区二区 | 影音先锋中文字幕无码 | 性欧美牲交xxxxx视频 | 欧美35页视频在线观看 | 亚欧洲精品在线视频免费观看 | 丰满人妻一区二区三区免费视频 | 亚洲区欧美区综合区自拍区 | 国产9 9在线 | 中文 | 久久久久国色av免费观看性色 | 亚洲精品一区二区三区四区五区 | 亚洲国产精品毛片av不卡在线 | 成人欧美一区二区三区黑人免费 | 午夜精品一区二区三区在线观看 | 国产在线无码精品电影网 | 久久久久亚洲精品中文字幕 | 最近免费中文字幕中文高清百度 | 国产xxx69麻豆国语对白 | 亚洲乱亚洲乱妇50p | 高清无码午夜福利视频 | 天堂久久天堂av色综合 | 任你躁在线精品免费 | 永久免费精品精品永久-夜色 | 娇妻被黑人粗大高潮白浆 | 精品熟女少妇av免费观看 | 在线观看国产一区二区三区 | 国产在线aaa片一区二区99 | 国产乱人伦av在线无码 | 男女猛烈xx00免费视频试看 | 亚洲日韩中文字幕在线播放 | 日韩av无码中文无码电影 | 人妻无码αv中文字幕久久琪琪布 | 国产成人无码午夜视频在线观看 | 丝袜足控一区二区三区 | 久久精品人人做人人综合试看 | 国产高清av在线播放 | 377p欧洲日本亚洲大胆 | 亚洲国产日韩a在线播放 | 日日摸天天摸爽爽狠狠97 | aa片在线观看视频在线播放 | 成人精品一区二区三区中文字幕 | 免费观看又污又黄的网站 | 久久精品国产亚洲精品 | 未满成年国产在线观看 | 亚洲日韩一区二区三区 | 99er热精品视频 | 丰满少妇高潮惨叫视频 | 成人无码精品一区二区三区 | 婷婷五月综合缴情在线视频 | 免费无码午夜福利片69 | 亚洲欧洲日本综合aⅴ在线 | 纯爱无遮挡h肉动漫在线播放 | 欧美亚洲日韩国产人成在线播放 | 中文字幕中文有码在线 | 欧美精品国产综合久久 | 荫蒂被男人添的好舒服爽免费视频 | 搡女人真爽免费视频大全 | 亚洲国产综合无码一区 | 色妞www精品免费视频 | 亚洲色成人中文字幕网站 | 无码人妻少妇伦在线电影 | 国产乱人偷精品人妻a片 | 曰本女人与公拘交酡免费视频 | 人妻少妇精品无码专区动漫 | 欧美性黑人极品hd | 国产成人无码av片在线观看不卡 | 欧美熟妇另类久久久久久不卡 | 久久99精品国产.久久久久 | 人妻少妇精品久久 | 国产乱子伦视频在线播放 | 亚洲精品国产精品乱码不卡 | 性啪啪chinese东北女人 | 国产高清av在线播放 | 一个人看的www免费视频在线观看 | 午夜成人1000部免费视频 | 久久99精品久久久久久动态图 | 久久久久亚洲精品中文字幕 | 女人被爽到呻吟gif动态图视看 | 亚洲国产高清在线观看视频 | 激情亚洲一区国产精品 | 亚洲毛片av日韩av无码 | 麻豆果冻传媒2021精品传媒一区下载 | 在线а√天堂中文官网 | 亚洲区小说区激情区图片区 | 免费人成在线视频无码 | 国产欧美亚洲精品a | 久久精品国产精品国产精品污 | 精品国产成人一区二区三区 | 日本在线高清不卡免费播放 | 女人高潮内射99精品 | 精品偷拍一区二区三区在线看 | 国产av一区二区精品久久凹凸 | 久久亚洲精品成人无码 | 中文字幕乱码人妻二区三区 | 国产成人无码一二三区视频 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 精品无码国产自产拍在线观看蜜 | 人人妻人人澡人人爽人人精品浪潮 | 99久久久无码国产aaa精品 | 久久综合网欧美色妞网 | 久久久久成人片免费观看蜜芽 | 人人爽人人澡人人高潮 | 性做久久久久久久久 | 久久久精品欧美一区二区免费 | 国产亚洲精品久久久ai换 | 天天综合网天天综合色 | 国产凸凹视频一区二区 | 精品 日韩 国产 欧美 视频 | 国产亚洲欧美日韩亚洲中文色 | 国内精品久久久久久中文字幕 | 国产成人久久精品流白浆 | 欧美日韩一区二区三区自拍 | 亚洲乱码中文字幕在线 | 中国女人内谢69xxxxxa片 | 无码人妻精品一区二区三区不卡 | 成在人线av无码免费 | 国产人妻精品一区二区三区不卡 | 性欧美熟妇videofreesex | 国产色精品久久人妻 | 成年美女黄网站色大免费视频 | 欧美亚洲日韩国产人成在线播放 | 欧美阿v高清资源不卡在线播放 | 亚洲综合伊人久久大杳蕉 | 日日摸日日碰夜夜爽av | 亚洲国产成人a精品不卡在线 | 亚洲成a人片在线观看无码 | 99久久人妻精品免费二区 | 少女韩国电视剧在线观看完整 | 国产尤物精品视频 | 国产精品免费大片 | 亚洲a无码综合a国产av中文 | 日产精品高潮呻吟av久久 | 人人妻人人澡人人爽精品欧美 | 精品少妇爆乳无码av无码专区 | 天下第一社区视频www日本 | 香港三级日本三级妇三级 | 狠狠亚洲超碰狼人久久 | 国产精品国产自线拍免费软件 | 亚洲色欲色欲天天天www | 少妇厨房愉情理9仑片视频 | 国产在线精品一区二区高清不卡 | 国产精品无码一区二区三区不卡 | 激情亚洲一区国产精品 | 精品亚洲韩国一区二区三区 | 99国产精品白浆在线观看免费 | 精品久久久久香蕉网 | 久久久久免费看成人影片 | 国产极品视觉盛宴 | 久久亚洲中文字幕无码 | 牛和人交xxxx欧美 | 国内揄拍国内精品少妇国语 | 国产又爽又黄又刺激的视频 | 国产人妻精品午夜福利免费 | 国产人妻精品一区二区三区 | 国产精品久久精品三级 | 狠狠色丁香久久婷婷综合五月 | 国产超级va在线观看视频 | 俺去俺来也www色官网 | 国产精品无码一区二区三区不卡 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 麻豆国产人妻欲求不满谁演的 | 性欧美牲交xxxxx视频 | 亚洲熟熟妇xxxx | 在线亚洲高清揄拍自拍一品区 | 国产精品毛片一区二区 | 久久亚洲中文字幕精品一区 | 国产一区二区三区日韩精品 | 午夜嘿嘿嘿影院 | 国内老熟妇对白xxxxhd | 在教室伦流澡到高潮hnp视频 | 中文字幕 人妻熟女 | 国产亚av手机在线观看 | 精品国产乱码久久久久乱码 | 亚洲日韩av一区二区三区四区 | 国产亚洲精品久久久久久久久动漫 | 人妻aⅴ无码一区二区三区 | 国产激情综合五月久久 | 欧美国产日韩久久mv | 久激情内射婷内射蜜桃人妖 | 久久久久免费看成人影片 | 蜜桃视频韩日免费播放 | 伊人久久大香线蕉亚洲 | 国产亚洲日韩欧美另类第八页 | 人妻少妇被猛烈进入中文字幕 | 精品无人区无码乱码毛片国产 | 成年女人永久免费看片 | 中文字幕无线码免费人妻 | www国产亚洲精品久久久日本 | 亚洲国产午夜精品理论片 | 一个人看的视频www在线 | 亚洲啪av永久无码精品放毛片 | 97久久精品无码一区二区 | 国产免费久久久久久无码 | 亚洲精品成a人在线观看 | 精品人妻人人做人人爽 | 无码av岛国片在线播放 | 亚洲国产精品毛片av不卡在线 | 久久五月精品中文字幕 | 无码人妻出轨黑人中文字幕 | 无码人妻少妇伦在线电影 | 人妻少妇精品无码专区二区 | 无码av岛国片在线播放 | 精品无码一区二区三区爱欲 | 六月丁香婷婷色狠狠久久 | 免费中文字幕日韩欧美 | 亚洲 另类 在线 欧美 制服 | 日本一卡2卡3卡四卡精品网站 | 亚无码乱人伦一区二区 | 亚洲精品欧美二区三区中文字幕 | 欧美人与牲动交xxxx | 欧美丰满熟妇xxxx性ppx人交 | 伊人久久大香线蕉午夜 | 国产av人人夜夜澡人人爽麻豆 | 国产两女互慰高潮视频在线观看 | 性欧美牲交xxxxx视频 | 中文字幕日韩精品一区二区三区 | 性欧美熟妇videofreesex | 久久天天躁狠狠躁夜夜免费观看 | 红桃av一区二区三区在线无码av | 欧美国产日产一区二区 | 午夜精品一区二区三区在线观看 | 性啪啪chinese东北女人 | 人人澡人摸人人添 | 女人色极品影院 | 精品国产福利一区二区 | 久久久无码中文字幕久... | 亚洲呦女专区 | a国产一区二区免费入口 | 日日干夜夜干 | 国产精品久久久久久无码 | 亚洲精品一区二区三区在线观看 | 人妻夜夜爽天天爽三区 | 丰满护士巨好爽好大乳 | 国产精品va在线观看无码 | 亚洲精品国产精品乱码不卡 | 人人妻人人澡人人爽欧美精品 | 亚洲啪av永久无码精品放毛片 | 国产精品久久久一区二区三区 | 中文字幕无线码免费人妻 | 特级做a爰片毛片免费69 | 精品久久久无码人妻字幂 | 国产成人无码区免费内射一片色欲 | 久久亚洲精品中文字幕无男同 | 久久久中文字幕日本无吗 | 伊在人天堂亚洲香蕉精品区 | 亚洲第一网站男人都懂 | 白嫩日本少妇做爰 | 免费无码午夜福利片69 | 久久精品一区二区三区四区 | 国产网红无码精品视频 | 老子影院午夜精品无码 | 中文字幕色婷婷在线视频 | 国内揄拍国内精品少妇国语 | 亚洲精品综合一区二区三区在线 | 国产片av国语在线观看 | 色婷婷综合中文久久一本 | 成熟人妻av无码专区 | 300部国产真实乱 | 丰满护士巨好爽好大乳 | 久在线观看福利视频 | 亚洲精品中文字幕 | 婷婷五月综合缴情在线视频 | 国产精品永久免费视频 | 久久精品一区二区三区四区 | 兔费看少妇性l交大片免费 | 亚洲一区二区观看播放 | 无码人妻少妇伦在线电影 | 无码毛片视频一区二区本码 | 亚洲成av人综合在线观看 | 日韩欧美成人免费观看 | 国产人妻精品一区二区三区不卡 | 国内综合精品午夜久久资源 | 亚洲国产成人a精品不卡在线 | 四虎国产精品一区二区 | 131美女爱做视频 | 午夜精品一区二区三区在线观看 | 国产亚洲精品久久久久久久 | aa片在线观看视频在线播放 | 亚洲熟妇自偷自拍另类 | 巨爆乳无码视频在线观看 | 99视频精品全部免费免费观看 | 色情久久久av熟女人妻网站 | 精品无码一区二区三区的天堂 | 亚洲中文字幕在线观看 | 欧美老人巨大xxxx做受 | 色综合久久久无码网中文 | 欧美精品无码一区二区三区 | 日本饥渴人妻欲求不满 | 成人性做爰aaa片免费看 | 久久精品中文字幕大胸 | 东北女人啪啪对白 | 99久久人妻精品免费一区 | 精品人妻av区 | 国产在线精品一区二区高清不卡 | 自拍偷自拍亚洲精品10p | 狂野欧美激情性xxxx | 久久综合九色综合97网 | 中文精品无码中文字幕无码专区 | 少妇愉情理伦片bd | 天海翼激烈高潮到腰振不止 | 国产成人精品久久亚洲高清不卡 | www国产亚洲精品久久网站 | 国产亚洲精品久久久久久久 | 丰满妇女强制高潮18xxxx | 国产性生大片免费观看性 | 女人和拘做爰正片视频 | 亚洲成av人在线观看网址 | 天堂久久天堂av色综合 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产精品久久久久7777 | 日欧一片内射va在线影院 | 国产国产精品人在线视 | 欧美人与物videos另类 | 欧美 丝袜 自拍 制服 另类 | 国产av人人夜夜澡人人爽麻豆 | 亚洲性无码av中文字幕 | 亚洲欧洲日本综合aⅴ在线 | 无码福利日韩神码福利片 | 免费男性肉肉影院 | 国产亚洲tv在线观看 | 激情亚洲一区国产精品 | 少妇邻居内射在线 | 国产精品手机免费 | 国色天香社区在线视频 | 亚洲精品国产品国语在线观看 | 强开小婷嫩苞又嫩又紧视频 | 国产97在线 | 亚洲 | 熟妇人妻无乱码中文字幕 | 高清不卡一区二区三区 | 日韩视频 中文字幕 视频一区 | 男人和女人高潮免费网站 | 亚洲欧美日韩成人高清在线一区 | 久久国产36精品色熟妇 | 99久久精品日本一区二区免费 | 玩弄人妻少妇500系列视频 | 亚洲一区二区三区国产精华液 | 国内精品人妻无码久久久影院蜜桃 | 国产女主播喷水视频在线观看 | 少妇无码一区二区二三区 | 蜜臀av无码人妻精品 | 精品一二三区久久aaa片 | 中文字幕无码视频专区 | 国产午夜手机精彩视频 | 亚洲高清偷拍一区二区三区 | 风流少妇按摩来高潮 | 日韩av无码一区二区三区 | 国产一区二区三区四区五区加勒比 | 特大黑人娇小亚洲女 | 中文字幕乱码人妻二区三区 | 久久精品人人做人人综合试看 | 国产情侣作爱视频免费观看 | 久久精品视频在线看15 | 精品午夜福利在线观看 | 亚欧洲精品在线视频免费观看 | 内射白嫩少妇超碰 | 中文字幕无线码免费人妻 | 精品偷拍一区二区三区在线看 | 国产午夜无码精品免费看 | 国产精品毛片一区二区 | 动漫av一区二区在线观看 | 美女黄网站人色视频免费国产 | 亚洲国产精品成人久久蜜臀 | 99er热精品视频 | 狂野欧美性猛交免费视频 | 日韩人妻系列无码专区 | 综合网日日天干夜夜久久 | 狠狠噜狠狠狠狠丁香五月 | 一个人看的视频www在线 | 亚洲日本va午夜在线电影 | 婷婷六月久久综合丁香 | 国内精品人妻无码久久久影院蜜桃 | 最新版天堂资源中文官网 | 国产精品久久久午夜夜伦鲁鲁 | 婷婷五月综合激情中文字幕 | 精品熟女少妇av免费观看 | 麻豆国产丝袜白领秘书在线观看 | √天堂中文官网8在线 | 欧美老熟妇乱xxxxx | 精品国产乱码久久久久乱码 | 国产激情艳情在线看视频 | 波多野42部无码喷潮在线 | 精品久久久久久亚洲精品 | 欧美三级不卡在线观看 | 国产精品久久久久久久影院 | 国产无遮挡又黄又爽免费视频 | av无码久久久久不卡免费网站 | 色五月五月丁香亚洲综合网 | 波多野结衣aⅴ在线 | 国产精品亚洲专区无码不卡 | 欧美变态另类xxxx | 欧美野外疯狂做受xxxx高潮 | 扒开双腿疯狂进出爽爽爽视频 | 欧洲欧美人成视频在线 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 久久精品女人的天堂av | 中文字幕乱妇无码av在线 | 无码精品国产va在线观看dvd | 国产乱子伦视频在线播放 | 精品无码av一区二区三区 | 国产在线aaa片一区二区99 | 午夜精品一区二区三区的区别 | 亚洲日本va午夜在线电影 | 国产成人无码av片在线观看不卡 | 国产亚洲精品久久久ai换 | 欧美日韩久久久精品a片 | 一本无码人妻在中文字幕免费 | 亚洲国产精品久久久久久 | 久久综合色之久久综合 | 日本护士xxxxhd少妇 | 国产av久久久久精东av | 国产熟女一区二区三区四区五区 | 久久综合香蕉国产蜜臀av | 欧美乱妇无乱码大黄a片 | 人妻少妇精品无码专区二区 | 欧美丰满熟妇xxxx性ppx人交 | 一本久久a久久精品亚洲 | 国产明星裸体无码xxxx视频 | 动漫av网站免费观看 | 国产成人精品三级麻豆 | 成人av无码一区二区三区 | 国语自产偷拍精品视频偷 | 欧洲熟妇色 欧美 | 欧美兽交xxxx×视频 | 在线天堂新版最新版在线8 | 国产人成高清在线视频99最全资源 |