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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Kinect实现简单的三维重建

發布時間:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kinect实现简单的三维重建 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Kinect想必大家已經很熟悉了,最近基于Kinect的創意應用更是呈井噴狀態啊!看到很多國外大牛用Kinect做三維重建,其中最著名的要數來自微軟研究院的Kinect Fusion了,可以看看下面這個視頻http://v.ku6.com/show/7q2Sa__pa4-rWcAVtB3Xuw...html,或者http://v.youku.com/v_show/id_XNDcxOTg3MzUy.html。

可惜Kinect Fusion是不開源的,不過PCL實現了一個差不多的開源版本,http://www.pointclouds.org/。有興趣同時電腦配置高的朋友可以研究一下。

最近比較閑,有一點手癢,想自己做一個三維重建,不過肯定不會像Kinect Fusion那么強大,只是自己練練手、玩玩而已。代碼在最后有下載。

?

1. 獲取Kinect深度圖:

首先我使用微軟官方的Kinect SDK來控制Kinect,三維繪圖我選用了OpenFrameworks。OpenFrameworks(以后簡稱OF)是一個開源的公共基礎庫,將很多常用的庫統一到了一起,比如OpenGL,OpenCV,Boost等等,而且有大量的第三方擴展庫,使用非常方便。具體可見http://www.openframeworks.cc/。

在一切開始之前,我們需要對OpenGL和三維場景做一些設置:

?

[cpp]?view plaincopy
  • void?testApp::setup(){??
  • ????//Do?some?environment?settings.??
  • ????ofSetVerticalSync(true);??
  • ????ofSetWindowShape(640,480);??
  • ????ofBackground(0,0,0);??
  • ??
  • ????//Turn?on?depth?test?for?OpenGL.??
  • ????glEnable(GL_DEPTH_TEST);??
  • ????glDepthFunc(GL_LEQUAL);??
  • ????glShadeModel(GL_SMOOTH);??
  • ??????
  • ????//Put?a?camera?in?the?scene.??
  • ????m_camera.setDistance(3);??
  • ????m_camera.setNearClip(0.1f);??
  • ??
  • ????//Turn?on?the?light.??
  • ????m_light.enable();??
  • ??
  • ????//Allocate?memory?to?store?point?cloud?and?normals.??
  • ????m_cloud_map.Resize(DEPTH_IMAGE_WIDTH,DEPTH_IMAGE_HEIGHT);??
  • ????m_normal_map.Resize(DEPTH_IMAGE_WIDTH,DEPTH_IMAGE_HEIGHT);??
  • ????//Initialize?Kinect.??
  • ????InitNui();??
  • }??

  • OF是使用OpenGL進行繪圖的,所以可以直接使用OpenGL中的函數(以gl開頭),為了方便,OF還自己封裝了一些常用函數(以of開頭)。在上面代碼的最后有一個InitNui()函數,在那里面我們會對Kinect進行初始化:

    ?

    ?

    [cpp]?view plaincopy
  • void?testApp::InitNui()??
  • {??
  • ????m_init_succeeded?=?false;??
  • ????m_nui?=?NULL;??
  • ??????
  • ????int?count?=?0;??
  • ????HRESULT?hr;??
  • ??
  • ????hr?=?NuiGetSensorCount(&count);??
  • ????if?(count?<=?0)??
  • ????{??
  • ????????cout<<"No?kinect?sensor?was?found!!"<<endl;??
  • ????????goto?Final;??
  • ????}??
  • ??
  • ????hr?=?NuiCreateSensorByIndex(0,&m_nui);??
  • ????if?(FAILED(hr))??
  • ????{??
  • ????????cout<<"Create?Kinect?Device?Failed!!"<<endl;??
  • ????????goto?Final;??
  • ????}??
  • ??
  • ????//We?only?just?need?depth?data.??
  • ????hr?=?m_nui->NuiInitialize(NUI_INITIALIZE_FLAG_USES_DEPTH);??
  • ??
  • ????if?(FAILED(hr))??
  • ????{??
  • ????????cout<<"Initialize?Kinect?Failed!!"<<endl;??
  • ????????goto?Final;??
  • ????}??
  • ??
  • ????//Resolution?of?320x240?is?good?enough?to?reconstruct?a?3D?model.??
  • ????hr?=?m_nui->NuiImageStreamOpen(NUI_IMAGE_TYPE_DEPTH,NUI_IMAGE_RESOLUTION_320x240,0,2,NULL,&m_depth_stream);??
  • ????if?(FAILED(hr))??
  • ????{??
  • ????????cout<<"Open?Streams?Failed!!"<<endl;??
  • ????????goto?Final;??
  • ????}??
  • ??
  • ????m_init_succeeded?=?true;??
  • ??
  • ????Final:??
  • ????if?(FAILED(hr))??
  • ????{??
  • ????????if?(m_nui?!=?NULL)??
  • ????????{??
  • ????????????m_nui->NuiShutdown();??
  • ????????????m_nui->Release();??
  • ????????????m_nui?=?NULL;??
  • ????????}??
  • ????}??
  • }??

  • 接下來我們需要將每一幀的深度信息保存到我們自己的buffer中,專門寫一個函數來做這件事情:

    ?

    ?

    [cpp]?view plaincopy
  • bool?testApp::UpdateDepthFrame()??
  • {??
  • ????if?(!m_init_succeeded)return?false;??
  • ??
  • ????HRESULT?hr;??
  • ????NUI_IMAGE_FRAME?image_frame?=?{0};??
  • ????NUI_LOCKED_RECT?locked_rect?=?{0};??
  • ??????????
  • ????hr?=?m_nui->NuiImageStreamGetNextFrame(m_depth_stream,0,&image_frame);??
  • ??
  • ????//If?there's?no?new?frame,?we?will?return?immediately.??
  • ????if?(SUCCEEDED(hr))??
  • ????{??
  • ????????hr?=?image_frame.pFrameTexture->LockRect(0,&locked_rect,NULL,0);??
  • ????????if?(SUCCEEDED(hr))??
  • ????????{??
  • ????????????//Copy?depth?data?to?our?own?buffer.??
  • ????????????memcpy(m_depth_buffer,locked_rect.pBits,locked_rect.size);??
  • ??
  • ????????????image_frame.pFrameTexture->UnlockRect(0);??
  • ????????}??
  • ????????//Release?frame.??
  • ????????m_nui->NuiImageStreamReleaseFrame(m_depth_stream,&image_frame);??
  • ????}??
  • ??????
  • ????if?(SUCCEEDED(hr))return?true;??
  • ??
  • ????return?false;??
  • }??

  • 通過上面幾步,我們已經可以拿到一幅深度圖了。在OF中,每一幀更新時,update()函數都會被調用,我們可以把所有需要適時更新的代碼都寫在里面:

    ?

    ?

    [cpp]?view plaincopy
  • void?testApp::update(){??
  • ??
  • ????//Get?a?new?depth?frame?from?Kinect.??
  • ????m_new_depth?=?UpdateDepthFrame();??
  • ??
  • ????if?(m_new_depth)??
  • ????{??
  • ????????Mat?depth_frame?=?Mat(DEPTH_IMAGE_HEIGHT,DEPTH_IMAGE_WIDTH,CV_16UC1,m_depth_buffer);??
  • ?<span?style="white-space:pre">???????</span>imshow("Depth?Frame",?depth_frame);??
  • ??}??
  • }??

  • 現在編譯并運行程序,我們可以看到通過OpenCV畫出來的深度圖:

    ?

    但你會發現,這樣的深度圖具有很多小孔和噪點,邊緣也不平滑。因此要對圖像進行濾波,為了使邊緣不被模糊掉,這里最好使用中值濾波。修改一下上面的update()函數,使用5x5的窗口進行中值濾波:

    ?

    [cpp]?view plaincopy
  • void?testApp::update(){??
  • ??
  • ????//Get?a?new?depth?frame?from?Kinect.??
  • ????m_new_depth?=?UpdateDepthFrame();??
  • ??
  • ????if?(m_new_depth)??
  • ????{??
  • ????????Mat?smoothed_depth?=?Mat(DEPTH_IMAGE_HEIGHT,DEPTH_IMAGE_WIDTH,CV_16UC1,m_depth_buffer);??
  • ????????medianBlur(smoothed_depth,smoothed_depth,5);??
  • ????????imshow("Depth?Frame",?smoothed_depth);??
  • ????}??
  • }??

  • 再次運行程序,得到的深度圖就變成下面這樣了,感覺好了很多!!

    ?

    ?

    2. 通過深度圖得到點云:

    為了得到點云,我專門寫了一個類來完成這一操作。這個類不僅會根據深度圖計算點云,還會將得到的點云以矩陣的形式存放起來,矩陣中每一個元素代表一個點,同時對應深度圖中具有相同行列坐標的像素。而計算點云的方法,Kinect SDK自身有提供,即NuiTransformDepthImageToSkeleton()函數,具體用法可看官方文檔。
    下面是這個類中生成點云的代碼:

    ?

    [cpp]?view plaincopy
  • void?PointCloudMap::Create(Mat&?depth_image,USHORT?max_depth,float?scale)??
  • {??
  • ????USHORT*?depth_line?=?(USHORT*)depth_image.data;??
  • ????UINT?stride?=?depth_image.step1();??
  • ??????
  • ????//m_points?is?the?place?where?we?store?the?whole?point?cloud.??
  • ????ofVec3f*?points_line?=?m_points;??
  • ????Vector4?vec;??
  • ????for?(DWORD?y?=?0;?y?<?m_height;?y++)??
  • ????{??
  • ????????for?(DWORD?x?=?0;?x?<?m_width;?x++)??
  • ????????{??
  • ????????????ofVec3f?point(0);??
  • ????????????USHORT?real_depth?=?(depth_line[x]?>>?3);??
  • ????????????if?(real_depth?>=?800?&&?real_depth?<?max_depth)??
  • ????????????{??
  • ????????????????//For?each?pixel?in?the?depth?image,?we?calculate?its?space?coordinates.??
  • ????????????????vec?=?NuiTransformDepthImageToSkeleton(??
  • ????????????????????x,??
  • ????????????????????y,??
  • ????????????????????depth_line[x]??
  • ????????????????);??
  • ??????????????????
  • ????????????????//Save?the?point?with?a?scale.??
  • ????????????????point.x?=?vec.x*scale;??
  • ????????????????point.y?=?vec.y*scale;??
  • ????????????????point.z?=?-vec.z*scale;??
  • ????????????}??
  • ??????????????
  • ????????????points_line[x]?=?point;??
  • ????????}??
  • ????????depth_line?+=?stride;??
  • ????????points_line?+=?m_width;??
  • ????}??
  • }??

  • 拿到點云后,我們可以考慮對點云進行三角化了。一提到三角化,很多人腦海中的第一印象是復雜、計算量大等等,我個人也是這樣。但是,Kinect返回的點云是結構化的,并不是無序點云,也就是說每一個點在空間中與其他點的相互關系我們是知道的,因此可以用一些簡單的方法來實現三角化,雖然這樣的三角化結果不是最優的,但是簡單快速,60fps毫無壓力。
    首先,我們的點云是存放在一個矩陣中的,而且矩陣的大小與深度圖完全一樣(行x列),因此我們將點云視為一幅圖,每一個像素存放的是點的空間坐標。我們可以像遍歷一般圖像的像素一樣遍歷點云圖,從而得到空間中某一點的所有相鄰點。然后,我們使用OpenGL的連線功能,每畫一個點就與它之前的兩個點連成一個三角面。
    如下圖,點旁邊的序號是畫點的順序:

    ?

    這樣我們就可以一行一行的將點云三角化,但注意當一行結束時,要讓OpenGL停止連線,否則這一行最后的點會和下一行第一個點連在一起。
    以上過程我直接寫在了主程序的draw方法中,OF在每一幀調用完update方法后,就會調用draw方法:

    ?

    [cpp]?view plaincopy
  • void?testApp::draw(){??
  • ??
  • ????if?(!m_init_succeeded)return;??
  • ??????
  • ????m_camera.begin();??
  • ??????
  • ????ofVec3f*?points_line?=?m_cloud_map.m_points;??
  • ????ofVec3f*?points_next_line?=?m_cloud_map.m_points?+?DEPTH_IMAGE_WIDTH;??
  • ??????
  • ????bool?mesh_break?=?true;??
  • ??????
  • ????for?(int?y?=?0;?y?<?m_cloud_map.m_height?-?1;?y++)??
  • ????{??
  • ????????for?(int?x?=?0;?x?<?m_cloud_map.m_width;?x++)??
  • ????????{??
  • ????????????ofVec3f&?space_point1?=?points_line[x];??
  • ????????????ofVec3f&?space_point2?=?points_next_line[x];??
  • ??
  • ????????????if?(abs(space_point1.z)?<=?FLT_EPSILON*POINT_CLOUD_SCALE?||???
  • ????????????????abs(space_point2.z)?<=?FLT_EPSILON*POINT_CLOUD_SCALE)??
  • ????????????{??
  • ????????????????if?(!mesh_break)??
  • ????????????????{??
  • ????????????????????//If?there's?no?point?here,?the?mesh?should?break.??
  • ????????????????????mesh_break?=?true;??
  • ????????????????????glEnd();??
  • ????????????????}??
  • ????????????????continue;??
  • ????????????}??
  • ??
  • ????????????if?(mesh_break)??
  • ????????????{??
  • ????????????????//Start?connecting?points?to?form?mesh.??
  • ????????????????glBegin(GL_TRIANGLE_STRIP);??
  • ????????????????mesh_break?=?false;??
  • ????????????}??
  • ??
  • ????????????//Draw?the?point?and?set?its?normal.??
  • ????????????glColor3f(0.7,0.7,0.7);??
  • ????????????glVertex3f(space_point1.x,space_point1.y,space_point1.z);??
  • ??????????????
  • ????????????//Draw?the?point?below?the?prior?one?to?form?a?triangle.??
  • ????????????glColor3f(0.7,0.7,0.7);??
  • ????????????glVertex3f(space_point2.x,space_point2.y,space_point2.z);??
  • ????????}??
  • ????????if?(!mesh_break)???
  • ????????{??
  • ????????????//At?the?end?of?the?line,?we?break?the?mesh.??
  • ????????????glEnd();??
  • ????????????mesh_break?=?true;??
  • ????????}??
  • ????????points_line?+=?DEPTH_IMAGE_WIDTH;??
  • ????????points_next_line?+=?DEPTH_IMAGE_WIDTH;??
  • ????}??
  • ??????
  • ????m_camera.end();??
  • ??????
  • ????//Draw?frame?rate?for?fun!??
  • ????ofSetColor(255);??
  • ????ofDrawBitmapString(ofToString(ofGetFrameRate()),10,20);??
  • }??

  • 再次編譯并運行程序,在OF的窗口中,我們會看到如下結果:

    ?

    怎么看起來是一張平面圖,一點3D感覺都沒有,呵呵~~因為我們還沒有給頂點設置法向。OpenGL會根據頂點法線來計算該點的光照,如果沒有法線,光照是失效的,也就是我們看到的白茫茫一片。

    ?

    3. 計算頂點法向
    法線的計算可以非常簡單,比如對每一個點,取和它相鄰的兩個點組成三角形,計算這個三角形的法向,即作為該點的法向。但這種方法太不精確了,而且其中一個點的坐標稍有變化,就會影響最終法線的方向,光照效果會很不穩定。
    我打算考慮一個點周圍所有的點,并使用最小二乘法來擬合一個最佳平面,這個平面的法向即為該點的法向。

    我們希望該點包括周圍的領點到這個平面的距離之平方和最小,即使下式最小:

    ?

    其中a,b,c是決定這個平面的參數,也就是這個平面的法矢量(a,b,c)。x,y,z是點的坐標。為了求出適合的abc值,分別對這三個變量求偏導:

    要求最小值,就要使下面三式成立:

    這樣我們就得到一個關于a,b,c的三元一次線性方程組,表示為矩陣形式即如下:

    根據Cramer法則,這個方程組的解可以表示為:

    其中:

    ,即系數矩陣的行列式

    計算這些行列式的值后,就可解出a,b,c。

    但是這里要注意,使用Cramer法則時,D不能為零,也就是說我們所期望的平面不能過原點。而過原點這種事情是很可能發生的,這時我們怎么辦呢?

    當平面過原點時,上面的三元一次方程組可簡化為一個齊次方程組:

    若上面系數矩陣的每一行所構成的向量共面但不共線,則a,b,c是有唯一解的,而其他情況下,只有零階或無窮多個解。后者在實際應用中一般是不會出現的。因此我們只考慮前一種情況。這種情況的解,就是三個行向量所在面的法線。因此我們將這三個行向量兩兩作叉積(外積),得到三個垂直于該面的法線,取模最大的一個作為我們的解。

    現在考慮什么點可以作為所求點的領點,由于點云是一幅圖,我們可以借鑒二維圖像濾波器的思想,將所求點周圍的8領域點作為領點。(圖畫得丑,還請諒解):

    但是我們的點是有深度的,所以還需對以上領域點判斷一下深度,只有某一點的深度與中心點的深度接近時,才能真正當做領點。

    現在還有最后一個問題,通過上面的方法算出來的法線方向是不定的(有可能是你想要的法向的反方向),因此我們還需要一個方法讓所有法線的朝向一致,我這里就簡單的選擇了朝向攝像機。

    將上面的所有方法寫在了一個類中,這個類根據點云圖計算法線,并像點云圖一樣將所有法線保存為一副法線圖。下面是計算法線和調整朝向的代碼:

    ?

    [cpp]?view plaincopy
  • void?NormalsMap::Create(PointCloudMap&?point_cloud,?float?max_distance)//創建一副法線圖??
  • {??
  • ????if?(point_cloud.m_height?!=?m_height?||??
  • ????????point_cloud.m_width?!=?m_width)??
  • ????????throw?exception("NormalsMap?has?different?size?width?the?PointCloudMap");??
  • ??
  • ????ofVec3f*?points_line0?=?point_cloud.m_points;??
  • ????ofVec3f*?points_line1?=?points_line0?+?m_width;??
  • ????ofVec3f*?points_line2?=?points_line1?+?m_width;??
  • ??
  • ????ofVec3f*?norms_line?=?m_normals?+?m_width;??
  • ????vector<ofVec3f>?neighbors;??
  • ??????
  • ????int?y_line0?=?0;??
  • ????int?y_line1?=?y_line0?+?m_width;??
  • ????int?y_line2?=?y_line1?+?m_width;??
  • ??
  • ????for?(int?y?=?1;?y?<?m_height?-?1;?y++)??
  • ????{?????????
  • ????????for?(int?x?=?1;?x?<?m_width?-?1;?x++)??
  • ????????{??
  • ????????????neighbors.clear();??
  • ????????????norms_line[x]?=?ofVec3f(0);??
  • ????????????if?(points_line1[x].z?==?0)continue;??
  • ??????????????
  • ????????????neighbors.push_back(points_line1[x]);??
  • ????????????//Add?all?neighbor?points?to?the?vector.??
  • ????????????if?(IsNeighbor(points_line0[x-1],points_line1[x],max_distance))??
  • ????????????{??
  • ????????????????neighbors.push_back(points_line0[x-1]);??
  • ????????????}??
  • ????????????if?(IsNeighbor(points_line0[x],points_line1[x],max_distance))??
  • ????????????{??
  • ????????????????neighbors.push_back(points_line0[x]);??
  • ????????????}??
  • ????????????if?(IsNeighbor(points_line0[x+1],points_line1[x],max_distance))??
  • ????????????{??
  • ????????????????neighbors.push_back(points_line0[x+1]);??
  • ????????????}??
  • ??
  • ????????????if?(IsNeighbor(points_line1[x-1],points_line1[x],max_distance))??
  • ????????????{??
  • ????????????????neighbors.push_back(points_line1[x-1]);??
  • ????????????}??
  • ????????????if?(IsNeighbor(points_line1[x+1],points_line1[x],max_distance))??
  • ????????????{??
  • ????????????????neighbors.push_back(points_line1[x+1]);??
  • ????????????}??
  • ??
  • ????????????if?(IsNeighbor(points_line2[x-1],points_line1[x],max_distance))??
  • ????????????{??
  • ????????????????neighbors.push_back(points_line2[x-1]);??
  • ????????????}??
  • ????????????if?(IsNeighbor(points_line2[x],points_line1[x],max_distance))??
  • ????????????{??
  • ????????????????neighbors.push_back(points_line2[x]);??
  • ????????????}??
  • ????????????if?(IsNeighbor(points_line2[x+1],points_line1[x],max_distance))??
  • ????????????{??
  • ????????????????neighbors.push_back(points_line2[x+1]);??
  • ????????????}??
  • ??
  • ????????????if?(neighbors.size()?<?3)continue;//Too?small?to?identify?a?plane.??
  • ??
  • ????????????norms_line[x]?=?EstimateNormal(neighbors);??
  • ????????}??
  • ????????points_line0?+=?m_width;??
  • ????????points_line1?+=?m_width;??
  • ????????points_line2?+=?m_width;??
  • ????????norms_line?+=?m_width;??
  • ??
  • ????????y_line0?+=?m_width;??
  • ????????y_line1?+=?m_width;??
  • ????????y_line2?+=?m_width;??
  • ????}??
  • }??
  • ??
  • inline?bool?NormalsMap::IsNeighbor(ofVec3f&?dst,?ofVec3f&?ori,?float?max_distance)//判斷是否是領點??
  • {??
  • ????if?(abs(dst.z?-?ori.z)?<?max_distance)??
  • ????????return?true;??
  • ??
  • ????return?false;??
  • }??
  • ??
  • ofVec3f?NormalsMap::EstimateNormal(vector<ofVec3f>&?points)//使用最小二乘法計算法線??
  • {??
  • ????ofVec3f?normal(0);??
  • ??
  • ????float?x?=?0,?y?=?0,?z?=?0;??
  • ????float?x2?=?0,?y2?=?0,?z2?=?0;??
  • ????float?xy?=?0,?xz?=?0,?yz?=?0;??
  • ????for?(int?i?=?0;?i?<?points.size();?i++)??
  • ????{??
  • ????????float?cx?=?points[i].x;??
  • ????????float?cy?=?points[i].y;??
  • ????????float?cz?=?points[i].z;??
  • ??
  • ????????x?+=?cx;?y?+=?cy;?z?+=?cz;??
  • ????????x2?+=?cx*cx;?y2?+=?cy*cy;?z2?+=?cz*cz;??
  • ????????xy?+=?cx*cy;?xz?+=?cx*cz;?yz?+=?cy*cz;??
  • ????}??
  • ??
  • ????float?D?=?x2*y2*z2?+?2*xy*xz*yz?-?x2*yz*yz?-?y2*xz*xz?-?z2*xy*xy;??
  • ????if?(abs(D)?>=?FLT_EPSILON)??
  • ????{??
  • ????????//Use?least?squares?technique?to?get?the?best?normal.??
  • ????????float?Da?=?x*(yz*yz?-?y2*z2)?-?y*(yz*xz?-?z2*xy)?+?z*(y2*xz?-?xy*yz);??
  • ????????float?Db?=?x2*(z*yz?-?y*z2)?-?xy*(z*xz?-?x*z2)?+?xz*(y*xz?-?x*yz);??
  • ????????float?Dc?=?x2*(y*yz?-?z*y2)?-?xy*(x*yz?-?z*xy)?+?xz*(x*y2?-?y*xy);??
  • ??
  • ????????normal.x?=?Da/D;??
  • ????????normal.y?=?Db/D;??
  • ????????normal.z?=?Dc/D;??
  • ??
  • ????????normal.normalize();??
  • ????}??
  • ????else??
  • ????{??
  • ????????/*D?==?0,?it?means?some?axes(x,y?or?z)?are?on?the?normal?plane.?
  • ????????We?need?another?way?to?calculate?normal?vector.*/??
  • ??
  • ????????ofVec3f?row0(x2,xy,xz);??
  • ????????ofVec3f?row1(xy,y2,yz);??
  • ????????ofVec3f?row2(xz,yz,z2);??
  • ??
  • ????????ofVec3f?vec1?=?row0.getCrossed(row1);??
  • ????????ofVec3f?vec2?=?row0.getCrossed(row2);??
  • ????????ofVec3f?vec3?=?row1.getCrossed(row2);??
  • ??
  • ????????float?len1?=?vec1.lengthSquared();??
  • ????????float?len2?=?vec2.lengthSquared();??
  • ????????float?len3?=?vec3.lengthSquared();??
  • ??
  • ????????if?(len1?>=?len2?&&?len1?>=?len3)??
  • ????????????normal?=?vec1?/?sqrt(len1);??
  • ????????else?if?(len2?>=?len1?&&?len2?>=?len3)??
  • ????????????normal?=?vec2?/?sqrt(len2);??
  • ????????else??
  • ????????????normal?=?vec3?/?sqrt(len3);??
  • ????}??
  • ??????
  • ????return?normal;??
  • }??
  • ??
  • void?NormalsMap::FlipNormalsToVector(ofVec3f?main_vector)//調整法線朝向,是其全部指向main_vector方向??
  • {??
  • ????ofVec3f*?normal?=?m_normals;??
  • ????for?(int?i?=?0;?i?<?m_width*m_height;?i++)??
  • ????{??
  • ????????if?((*normal).dot(main_vector)?<?0)??
  • ????????????(*normal)?*=?-1;??
  • ??
  • ????????normal++;??
  • ????}??
  • }??

  • 4. 全部放在一起:

    ?

    將以上全部放在一起,并修改一下我們的draw函數,以使其設置頂點的法向:

    ?

    [cpp]?view plaincopy
  • void?testApp::draw(){??
  • ??
  • ????if?(!m_init_succeeded)return;??
  • ??????
  • ????m_camera.begin();??
  • ??????
  • ????ofVec3f*?points_line?=?m_cloud_map.m_points;??
  • ????ofVec3f*?points_next_line?=?m_cloud_map.m_points?+?DEPTH_IMAGE_WIDTH;??
  • ????ofVec3f*?normals_line?=?m_normal_map.m_normals;??
  • ???
  • ????bool?mesh_break?=?true;??
  • ??????
  • ????for?(int?y?=?0;?y?<?m_cloud_map.m_height?-?1;?y++)??
  • ????{??
  • ????????for?(int?x?=?0;?x?<?m_cloud_map.m_width;?x++)??
  • ????????{??
  • ????????????ofVec3f&?space_point1?=?points_line[x];??
  • ????????????ofVec3f&?space_point2?=?points_next_line[x];??
  • ??
  • ????????????if?(abs(space_point1.z)?<=?FLT_EPSILON*POINT_CLOUD_SCALE?||???
  • ????????????????abs(space_point2.z)?<=?FLT_EPSILON*POINT_CLOUD_SCALE)??
  • ????????????{??
  • ????????????????if?(!mesh_break)??
  • ????????????????{??
  • ????????????????????//If?there's?no?point?here,?the?mesh?should?break.??
  • ????????????????????mesh_break?=?true;??
  • ????????????????????glEnd();??
  • ????????????????}??
  • ????????????????continue;??
  • ????????????}??
  • ??
  • ????????????if?(mesh_break)??
  • ????????????{??
  • ????????????????//Start?connecting?points?to?form?mesh.??
  • ????????????????glBegin(GL_TRIANGLE_STRIP);??
  • ????????????????mesh_break?=?false;??
  • ????????????}??
  • ??????????????
  • ????????????//Draw?the?point?and?set?its?normal.??
  • ????????????glColor3f(0.8,0.8,0.8);??
  • ????????????glNormal3f(normals_line[x].x,normals_line[x].y,normals_line[x].z);??
  • ????????????glVertex3f(space_point1.x,space_point1.y,space_point1.z);??
  • ??????????????
  • ????????????//Draw?the?point?below?the?prior?one?to?form?a?triangle.??
  • ????????????glColor3f(0.8,0.8,0.8);??
  • ????????????glVertex3f(space_point2.x,space_point2.y,space_point2.z);??
  • ????????}??
  • ????????if?(!mesh_break)???
  • ????????{??
  • ????????????//We?break?the?mesh?at?the?end?of?the?line,.??
  • ????????????glEnd();??
  • ????????????mesh_break?=?true;??
  • ????????}??
  • ????????points_line?+=?DEPTH_IMAGE_WIDTH;??
  • ????????points_next_line?+=?DEPTH_IMAGE_WIDTH;??
  • ????????normals_line?+=?DEPTH_IMAGE_WIDTH;??
  • ????}??
  • ??????
  • ????m_camera.end();??
  • ??????
  • ????//Draw?frame?rate?for?fun!??
  • ????ofSetColor(255);??
  • ????ofDrawBitmapString(ofToString(ofGetFrameRate()),10,20);??
  • }??

  • 最后編譯運行,我們的目標就達到了!!!!

    ?

    ?

    作為一個自娛自樂的小程序,感覺還不錯吧!!!注意看左上角的幀率,60fps妥妥的。

    ?

    小結:

    做這個完全是為了學習和興趣,不要說我是重復造輪子啊。寫這個程序復習了很多線性代數的知識,溫故而知新,感覺還是很有收獲的。最后的效果還可以改進,最大的改進點就是三角化的方法,以后發現快速且效果好的三角化方法再和大家分享。

    最后給出代碼的下載地址?點擊打開鏈接

    代碼在Windows7 ultimate,opencv?2.4.3,OpenFrameworks 0073,Kinect SDK 1.7 下編譯通過。

    編譯有問題的可以看看下面的評論。

    轉載于:https://www.cnblogs.com/lyx2018/p/7130401.html

    總結

    以上是生活随笔為你收集整理的Kinect实现简单的三维重建的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    天天碰天天操视频 | 在线亚洲高清视频 | 色福利网站 | 欧美精品小视频 | 99视频这里有精品 | 在线视频 国产 日韩 | 免费av大全 | 特级片免费看 | 四虎在线免费观看视频 | 国产精品网址在线观看 | 92国产精品久久久久首页 | 99久久久久久久久久 | 天天躁天天操 | 国产日韩精品一区二区三区在线 | 国内精品福利视频 | av成人黄色 | 亚洲精品色视频 | 黄色网www | 国产性xxxx| 九九九热 | avav片 | 国产中文字幕一区 | 国产五十路毛片 | 国产精品视频免费观看 | 在线观看的av | 国产亚洲人 | 色天天中文 | 在线观看视频免费大全 | www日韩在线| 国产在线理论片 | 在线观看小视频 | 日韩一级黄色av | 成人a级免费视频 | 国产中文视| 国产黄在线播放 | 青青河边草免费观看完整版高清 | 337p日本大胆噜噜噜噜 | 激情五月播播久久久精品 | 久久久视频在线 | 五月激情av | 日本久久中文 | 天天干夜夜干 | 综合网中文字幕 | 精品国产资源 | 久久综合久久伊人 | 午夜在线免费观看 | 国产玖玖精品视频 | 欧美大片在线观看一区 | 欧美精品久久久久久久久老牛影院 | 丝袜美腿在线播放 | 精品亚洲免费视频 | 亚洲精品国产免费 | 亚洲免费一级电影 | 伊人中文字幕在线 | 欧美日韩亚洲国产一区 | 日日夜夜添 | 四虎影视久久久 | 色婷婷av国产精品 | av大全免费在线观看 | 福利视频在线看 | 天天做天天爱天天爽综合网 | 色丁香色婷婷 | 亚洲精品国偷自产在线91正片 | 综合在线亚洲 | 激情综合婷婷 | 99在线免费观看视频 | 国产精品美| 夜夜躁狠狠躁日日躁视频黑人 | 亚洲精品午夜久久久久久久 | 午夜视频在线观看一区二区 | 美女视频又黄又免费 | 中文字幕网站 | 亚洲综合小说 | 欧美aⅴ在线观看 | 欧美日韩视频在线一区 | 免费观看av网站 | 91视视频在线直接观看在线看网页在线看 | 国产视频精品久久 | 日韩三级久久 | 亚洲综合视频在线 | 国产成人av电影在线观看 | av片免费播放 | 亚洲激情小视频 | 正在播放一区 | 4438全国亚洲精品观看视频 | av免费网站 | 国产麻豆电影 | 婷婷激情综合 | 久久理论视频 | 久久免费观看视频 | 91精品资源 | 国产一区二区在线免费 | 国产成人精品一区二三区 | 黄免费网站| 久草在线视频网站 | 91黄色免费网站 | 亚洲成人家庭影院 | 激情网综合| 中文字幕在线一区二区三区 | 国产精品久久久久av | 涩涩在线 | 免费看一级黄色大全 | 日本高清久久久 | 久久久精品国产一区二区 | 国产成人av电影在线观看 | 美女在线国产 | 人人爽人人爽人人 | 精品成人久久 | 色综合天天狠狠 | 亚洲精品中文在线资源 | 麻豆精品视频在线观看免费 | 99久久精品免费看国产免费软件 | 看黄色.com | 热久在线 | 在线观看黄色av | 精品国产综合区久久久久久 | 69av视频在线| 一区二区三区免费在线 | 日日摸日日爽 | 亚洲高清资源 | 久久久官网 | 久久久黄色免费网站 | 在线免费中文字幕 | 一区二区三区免费看 | 人人爽人人爽人人片av | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 午夜精品一区二区国产 | 国产精品黄色 | 久久精品视频网站 | 亚洲精品免费观看 | 亚洲成人精品久久 | 激情久久综合网 | 久久www免费人成看片高清 | 亚洲国产偷 | 在线视频 一区二区 | 国产最新福利 | 66av99精品福利视频在线 | 精品视频免费久久久看 | 黄色a在线 | 高清国产午夜精品久久久久久 | 久久精品中文 | 日本美女xx | 精品uu | 九九九九热精品免费视频点播观看 | 青青久草在线 | 国产黄大片 | 99免费在线观看 | 国产精品免费一区二区三区 | 国产区高清在线 | 日本精品一区二区三区在线观看 | 国产午夜视频在线观看 | 国产二区av| 亚洲欧美视频 | 麻豆视频在线观看 | 国产91探花| 久久成年人 | 久久天天躁狠狠躁亚洲综合公司 | 丁香婷婷久久久综合精品国产 | 欧美日韩中文国产一区发布 | 国产三级国产精品国产专区50 | av网站免费线看精品 | 日韩视频欧美视频 | 特级黄色一级 | 国产精品毛片一区视频播 | 欧美日韩色婷婷 | 日日躁你夜夜躁你av蜜 | 日日夜夜人人天天 | 嫩草av在线| 在线 欧美 日韩 | www.久久色| 日韩av黄 | 久久久久亚洲精品中文字幕 | 青青草国产免费 | 日韩激情第一页 | 91麻豆精品国产自产 | 香蕉视频在线视频 | 亚洲成人av在线播放 | 婷婷色六月天 | 成人免费观看电影 | 国产精品久久久久av免费 | 69成人在线 | 国产精品99精品久久免费 | 婷婷激情欧美 | 黄色一级大片在线免费看国产一 | 国产精品视频永久免费播放 | 在线观看激情av | 天堂久色 | 久久国产午夜精品理论片最新版本 | 99视频99| 99这里只有久久精品视频 | wwwwwww黄 | 日韩丝袜视频 | 国产一级片视频 | 久久人人添人人爽添人人88v | www久草| 色精品视频| 免费观看一级 | 精品超碰 | 国产高清在线视频 | 久草在线免费播放 | 色婷婷色 | 国产在线观看一 | 日本三级在线观看中文字 | 久久久久欧美精品999 | 美女av在线免费 | 国产美女网站视频 | 99视频久 | 久久午夜免费视频 | 骄小bbw搡bbbb揉bbbb | 日本在线中文在线 | 成人亚洲欧美 | 亚洲 av网站| 国产色影院 | 国产精品欧美一区二区 | 色www精品视频在线观看 | 精品久久免费看 | 久久不射电影院 | 91豆花在线观看 | 国产不卡在线播放 | 国产成人一区二区三区在线观看 | 一级片视频在线 | 亚洲精品动漫在线 | 天天干天天摸天天操 | 五月婷婷在线综合 | 91传媒激情理伦片 | 精品国产电影一区 | 天天干.com| 九九免费观看全部免费视频 | 天天操月月操 | 一区在线播放 | 中文字幕有码在线播放 | 成人av手机在线 | 欧美a性| 2024国产精品视频 | 91精品国产福利在线观看 | 91精品国产福利在线观看 | 又色又爽又黄高潮的免费视频 | 2022久久国产露脸精品国产 | 国产一二三区av | 国产精品一区二区久久国产 | 亚洲国产精品va在线看黑人动漫 | 成年人在线观看 | 久久激情网站 | www久久久久| av短片在线观看 | 伊人五月天综合 | 青青草国产精品视频 | 欧美精品久久久久久久 | 午夜少妇av| 免费看污网站 | 亚洲va男人天堂 | www黄在线| 免费www视频 | 丝袜美腿在线播放 | 麻豆 91 在线 | 国产免费久久 | 91丨九色丨国产女 | 99婷婷 | 激情网五月天 | 91精品视频播放 | 中文字幕一区二区三区在线播放 | av色一区| 国产精品久久久久久久久久了 | 六月丁香激情综合 | 日韩在线高清 | 久久久久久高潮国产精品视 | 久99久精品视频免费观看 | 国内精品久久久久久久久 | 日韩在线视频国产 | 婷婷激情5月天 | 久久久久看片 | 黄色毛片在线 | 国产精品久久久久久久久久久久午夜 | 国内精品久久天天躁人人爽 | 2018亚洲男人天堂 | 五月天激情视频在线观看 | 五月天婷婷在线播放 | 又黄又刺激的网站 | 国产一区在线不卡 | 国产你懂的在线 | 激情五月婷婷激情 | 国产精品99在线观看 | 美女av免费看 | 九色琪琪久久综合网天天 | 亚洲欧美视屏 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 日韩欧美综合在线视频 | 亚洲国产精品久久 | 午夜丰满寂寞少妇精品 | 色姑娘综合 | 亚洲欧美成人综合 | 狠狠的干狠狠的操 | 日韩中文在线观看 | 国产乱老熟视频网88av | 日本中文一区二区 | 久久精品一区二区三区四区 | 天天色天天射天天干 | 久久精品第一页 | 黄色片视频在线观看 | 久av在线| 丁香视频免费观看 | 在线日韩中文 | 欧美激情综合五月色丁香小说 | 日日夜夜精品视频 | 欧女人精69xxxxxx| 深爱五月激情网 | 久久久综合精品 | 久久久人人人 | 久久人91精品久久久久久不卡 | 国产理论影院 | 成人av网站在线播放 | 国产在线视频一区二区 | 国产精品1区2区3区在线观看 | 成人av手机在线 | 欧美日韩视频一区二区 | 在线一二区 | 色婷婷电影网 | 五月婷丁香网 | 人人插人人干 | 在线色资源 | 中文字幕字幕中文 | 日本精品一 | 99精品欧美一区二区蜜桃免费 | 在线国产99| 日韩三级av | 日韩精品中文字幕在线 | 日韩欧美在线免费观看 | 色婷婷免费 | 中文字幕久久精品一区 | 天天干,夜夜操 | 四虎小视频 | 国产不卡在线看 | 久久亚洲人 | 久久在线视频在线 | 国产精品日韩高清 | 免费黄色网址大全 | 久久视讯 | 草久电影 | 国产精品久久久久久久久久新婚 | 亚洲精品99久久久久久 | www夜夜操com | 国产精品美 | 亚洲在线精品视频 | 伊人夜夜| 亚洲视频免费在线看 | 久久成人久久 | 欧美综合国产 | 一区二区三区四区五区在线视频 | 成年人视频免费在线 | 成人黄色短片 | 操处女逼 | 国产97在线看 | 久久久久国产视频 | 国产精品日韩在线播放 | 欧美综合色 | 97国产在线视频 | 日韩精品一区二区三区免费观看视频 | 成人精品电影 | 综合在线亚洲 | 日韩网站一区二区 | 欧美日韩国产一区二区在线观看 | 久久超 | 国内三级在线观看 | 精品日韩视频 | 91大神精品视频 | 日韩成人黄色av | 日韩视频一区二区在线 | 成人91在线 | 国产剧情在线一区 | 欧美亚洲免费在线一区 | 在线www色 | 99久久www免费 | 99久e精品热线免费 99国产精品久久久久久久久久 | 成人一级电影在线观看 | 国内小视频在线观看 | 久草在线免费看视频 | av黄色大片 | 国产精品久久久久久久免费大片 | 激情婷婷网 | 五月婷婷开心中文字幕 | 精品国产一区二区三区四区在线观看 | 欧美精品一区二区在线观看 | 久久激情精品 | 韩日电影在线免费看 | 成人资源网 | 99久久久国产精品 | 91精品国产99久久久久久红楼 | 免费a视频 | 麻豆视频免费入口 | 久久精品黄 | 国产人成免费视频 | 天天综合成人网 | 欧美一级乱黄 | 国产精品黄 | 亚洲资源| 久久狠狠干 | 又粗又长又大又爽又黄少妇毛片 | 中文字幕资源在线观看 | 美女久久久久久 | 国产在线一区二区 | 91精品国产麻豆 | 国产精品网红直播 | 免费日韩电影 | 日日操夜夜操狠狠操 | www久久久 | 日韩中字在线观看 | 国产精品中文字幕在线播放 | 在线观看一区二区精品 | 黄色av大片 | 日韩视频一区二区三区在线播放免费观看 | 丁香婷婷综合五月 | 国产日韩三级 | 久久久久蜜桃 | av免费观看网址 | 午夜久久电影网 | 欧美精品久久久久久久久免 | 亚洲精品av中文字幕在线在线 | 日本女人在线观看 | 日韩av午夜在线观看 | 国产精品久久久久久久久久久免费 | 热re99久久精品国产66热 | 免费网站v | 日日天天 | 久久久久久久久久久久av | 91激情视频在线播放 | 波多野结衣资源 | 狠狠狠狠狠狠天天爱 | 少妇搡bbb | 中文字幕欧美日韩va免费视频 | 亚洲国产精品女人久久久 | 久久精品久久精品久久精品 | 久久精品国产第一区二区三区 | 国产精品乱码久久 | 4p变态网欧美系列 | 久久久网 | 成人手机在线视频 | 国产精品国产三级国产aⅴ无密码 | 天天干天天插 | 精品久久久国产 | 91精品久久久久久综合五月天 | 天天综合网天天综合色 | 国产性天天综合网 | 看黄色.com | 日韩免费视频播放 | 亚州av成人 | 99精品国产兔费观看久久99 | 欧美日韩在线电影 | 奇米影视8888在线观看大全免费 | 九九久久免费视频 | 日韩久久午夜一级啪啪 | 极品美女被弄高潮视频网站 | 99久久精品免费看国产 | 午夜av一区二区三区 | 超碰在线最新地址 | 日韩在线观看精品 | 在线激情网 | 成年人三级网站 | 一级久久精品 | 视频一区亚洲 | 亚洲国产精品人久久电影 | 91大神电影 | 视频在线一区二区三区 | 九九色在线| 在线看av的网址 | 在线观看久久久久久 | 久久综合狠狠综合久久狠狠色综合 | 婷婷丁香九月 | 久久最新视频 | 天天操人 | 久久久精品久久日韩一区综合 | 久久久久久久久久久福利 | 国产理论一区二区三区 | 国产精品小视频网站 | 高潮久久久久久 | 日韩 精品 一区 国产 麻豆 | 中文字幕在线观看网 | 国产精品入口66mio女同 | 午夜91视频 | 成人国产精品免费观看 | 国产精品一区二区久久精品爱涩 | 国产精品一区二区三区在线免费观看 | 色综合婷婷 | 中文字幕免费一区二区 | 在线观看视频99 | 色婷婷亚洲婷婷 | 欧美在线一 | 91av网址 | 亚洲视频观看 | 日韩大片在线免费观看 | 亚洲电影av在线 | 国产四虎影院 | 欧美日韩一区二区久久 | 亚洲毛片在线观看. | 五月激情在线 | 久久久久久久久久久黄色 | 黄色91免费观看 | 中文字幕在线观看网址 | 中文字幕高清视频 | 日韩免费视频播放 | 国产又粗又猛又色 | 99日精品| 免费瑟瑟网站 | 91av视频观看 | 日韩三级av| 91九色丨porny丨丰满6 | 成人羞羞视频在线观看免费 | 欧美色综合 | 日韩成人免费在线 | 欧美日韩免费视频 | www.久热| 丁香在线观看完整电影视频 | 国产成人av免费在线观看 | 久久天天躁狠狠躁夜夜不卡公司 | 国产亚洲精品久久久久久久久久 | 国产一区网址 | 亚洲国产精品一区二区尤物区 | 狠狠狠狠狠狠天天爱 | 国产91aaa | 91在线免费播放视频 | 色七七亚洲影院 | 久久免费99精品久久久久久 | 亚洲精品中文在线观看 | 欧美日韩中文在线 | 操操操av | 色综合在 | 日日夜夜免费精品视频 | 麻豆va一区二区三区久久浪 | 奇米网在线观看 | 亚洲欧美国产精品va在线观看 | 亚洲成人精品 | 在线观看黄av | 久久国产麻豆 | 最新日韩中文字幕 | 成人精品99| 日本在线中文在线 | 午夜国产福利在线 | 精品国产一二三 | 国产激情小视频在线观看 | av资源免费观看 | 久久国产视屏 | 日韩三级在线 | 国产精品精品国产 | 伊人官网| 国产亚洲91| 在线av资源 | 国产精品永久在线 | 日日操操操 | 99综合视频| 亚洲欧美精品一区二区 | 欧美色图88| 日本中文字幕观看 | 亚洲人天堂 | 中文字幕免费成人 | 久久久午夜精品理论片中文字幕 | 久久精品牌麻豆国产大山 | 亚洲黄色在线播放 | 色婷婷六月 | 亚洲天堂网在线观看视频 | 91在线观看视频网站 | 免费观看成人av | 91精品国产综合久久福利 | 中文字幕在线视频免费播放 | 九九热只有精品 | 五月天电影免费在线观看一区 | 欧美性黄网官网 | 国产精品久久久久久久久久不蜜月 | 911久久香蕉国产线看观看 | 成人国产精品一区 | 国产精品 欧美 日韩 | 黄色一级动作片 | 日韩免费在线观看 | 久久免费国产 | 国模一区二区三区四区 | 欧美aa级 | 97手机电影网 | 久久国产精品久久精品国产演员表 | 99精品黄色 | 久久精品99国产国产 | 国产黄色av网站 | 波多野结衣精品 | 午夜电影久久 | 亚洲免费精彩视频 | 日韩精品一区二区三区中文字幕 | 成人久久久久久久久久 | 国产精品成人aaaaa网站 | 中文字幕在线日亚洲9 | 午夜精品av在线 | 2023亚洲精品国偷拍自产在线 | 免费在线观看一区 | 91 在线视频| 91视频在线| 亚洲视频1区2区 | 超碰在线观看av.com | 99爱这里只有精品 | 手机成人在线电影 | 天天天干天天射天天天操 | 一区二区精品在线观看 | 精品视频区 | 99在线视频精品 | 在线观看日本高清mv视频 | 精品国产免费人成在线观看 | 97碰在线视频 | 天天干天天在线 | 韩国精品一区二区三区六区色诱 | 中文字幕国产在线 | 人人干在线 | 天天天干天天射天天天操 | 99999精品视频| 91网在线观看 | a在线观看免费视频 | 国产中文字幕一区二区 | 国产黄在线| 美女网色 | 美女av在线免费 | 国产馆在线播放 | 国产精品久久久久永久免费观看 | 亚洲撸撸 | 视频一区二区国产 | 成人永久免费 | 一区二区成人国产精品 | 揉bbb玩bbb少妇bbb| 天天综合91 | 国产原创av片 | 又污又黄网站 | 91精品视频在线观看免费 | 成人一级在线 | 国产高清精 | 欧美日韩视频在线播放 | 天天干天天操天天搞 | 综合激情久久 | 亚洲综合一区二区精品导航 | 免费久久99精品国产婷婷六月 | 人人爽人人爽人人爽 | 亚洲精品国产精品国 | 国产精品一区二区av日韩在线 | 国产一级精品绿帽视频 | 99亚洲天堂| 精品国产免费久久 | 国产高清在线免费视频 | 精品久久久影院 | 中文字幕乱在线伦视频中文字幕乱码在线 | 国产污视频在线观看 | 国产精品视频永久免费播放 | 精品国产精品久久一区免费式 | 成人免费视频网址 | 最新不卡av | 国产精品久久久久久久久免费 | 午夜精品视频福利 | 国产专区精品视频 | 日韩av中文字幕在线免费观看 | 九九av| 午夜在线观看 | 婷婷综合亚洲 | 日韩精品一区二区不卡 | 91av电影在线观看 | 蜜桃麻豆www久久囤产精品 | 免费观看一级特黄欧美大片 | 高清av中文在线字幕观看1 | 久久精品观看 | 久久中文欧美 | 亚洲精品理论 | 久久久久久高清 | 黄色免费网站下载 | 美女网色 | 最近中文字幕第一页 | 国产精品一区二区在线观看免费 | www.久久色 | 九九热中文字幕 | 亚洲一区网站 | 国产福利专区 | 日韩精品免费专区 | 最新国产中文字幕 | www.日韩免费| 婷婷九月丁香 | 91高清视频| 91污在线| 亚洲国产日本 | 久久人人添人人爽添人人88v | 亚洲a色 | 超碰在线个人 | 国产成人精品在线观看 | 午夜影院一级 | 99免费在线| 久久久精品国产免费观看一区二区 | 国产剧情av在线播放 | 99在线精品观看 | 91av在线免费看 | 超碰97国产在线 | 亚洲综合欧美激情 | 久久久久久亚洲精品 | 91久久久久久久一区二区 | 国产一区免费在线 | 国产精品免费在线播放 | 久久在线免费视频 | 五月婷婷.com| 国产理伦在线 | 成人网在线免费视频 | 久久99精品久久久久久秒播蜜臀 | 成人黄性视频 | 视频国产在线观看18 | av专区在线 | 人人添人人澡人人澡人人人爽 | 日韩激情影院 | 日韩欧美亚州 | 亚洲区视频在线观看 | 欧美日韩另类在线观看 | 国产精品免费久久久 | 免费视频18 | 日韩理论在线视频 | av噜噜噜在线播放 | 日日操操操 | 免费日韩一区二区 | 99免费看片 | 黄色一级免费网站 | 九九国产精品视频 | 亚洲国产精品小视频 | 免费三级网 | 中国一级片免费看 | 色射色| 久久久久电影网站 | 麻豆影视在线免费观看 | 中文字幕在线视频第一页 | 欧美一级在线观看视频 | 一级片视频在线 | 99热这里只有精品8 久久综合毛片 | 国产在线资源 | 又黄又爽又刺激的视频 | 中午字幕在线观看 | 精品国产精品久久一区免费式 | 丝袜美腿一区 | 激情久久久久久久久久久久久久久久 | 97成人精品 | 超级碰碰碰碰 | 亚洲一区天堂 | 久久久久亚洲精品男人的天堂 | 久久精品欧美视频 | 日韩电影在线观看一区 | 国产在线视频资源 | 国产伦精品一区二区三区… | 日韩欧美一级二级 | 美女国产免费 | 五月婷亚洲 | 伊人六月 | 亚洲免费av一区二区 | 丁香视频全集免费观看 | 在线视频一区二区 | 中文在线a天堂 | 天天视频色 | 中文字幕在线观看你懂的 | 亚洲区另类春色综合小说校园片 | 久久9999久久免费精品国产 | 天天爱天天 | 国产一区二区视频在线播放 | 99久久99久久精品 | 黄av在线 | 人人爽人人爽人人爽学生一级 | 国产成年免费视频 | 日本不卡123 | 在线视频免费观看 | 精品a在线 | 久久不卡视频 | 国产一区二区三精品久久久无广告 | 一区二区成人国产精品 | 91香蕉视频黄 | 五月激情天 | 美女福利视频一区二区 | 在线看日韩 | 亚洲va天堂va欧美ⅴa在线 | 国产视频精品在线 | 欧美亚洲国产日韩 | 天天草天天干天天 | 在线久久| 久久精品99北条麻妃 | 婷婷日日 | av在线免费观看网站 | 国产 日韩 欧美 中文 在线播放 | 国产精品夜夜夜一区二区三区尤 | 日韩av手机在线观看 | 色婷婷欧美 | 欧美一级片在线播放 | 免费观看成人网 | 夜夜澡人模人人添人人看 | 91欧美在线 | 欧美日韩在线观看一区 | 欧美色伊人 | 亚洲欧美日韩一区二区三区在线观看 | 超碰av在线播放 | 综合久久综合久久 | 伊人永久 | 在线视频欧美日韩 | 午夜精品久久久久99热app | 久久成人18免费网站 | 亚洲一区二区三区在线看 | 综合五月婷婷 | 一区二区三区三区在线 | 国产999精品久久久影片官网 | 丁香六月五月婷婷 | 最近日本韩国中文字幕 | 月丁香婷婷 | 色在线高清 | 91国内在线 | 视频精品一区二区三区 | 这里有精品在线视频 | 久久久久亚洲精品国产 | av免费福利 | 黄色成人小视频 | 国产视频资源在线观看 | 爱情影院aqdy鲁丝片二区 | 99久久99热这里只有精品 | 国产美腿白丝袜足在线av | 免费国产在线观看 | 怡红院av久久久久久久 | 亚洲国产免费看 | 日韩| 99精品国产高清在线观看 | 91片黄在线观看 | 97在线免费 | 91理论片午午伦夜理片久久 | 日日夜夜狠狠干 | 色天天综合久久久久综合片 | 亚洲国产播放 | 色国产在线 | 久久久久久99精品 | 99久久夜色精品国产亚洲 | 免费在线观看av网址 | 日韩精品免费一线在线观看 | 999久久国精品免费观看网站 | 免费观看高清 | 91视频大全| 免费激情在线电影 | 色a综合| 欧美污污视频 | 在线成人性视频 | 97av色| 在线播放视频一区 | 亚洲 在线 | 免费在线播放黄色 | 在线 高清 中文字幕 | 99精品免费久久久久久久久 | 欧美精品xxx | 中文字幕在线观看三区 | 亚洲作爱 | 国产精品 国产精品 | 99综合电影在线视频 | av电影免费观看 | 狠狠色丁香婷婷综合最新地址 | 天天色棕合合合合合合 | 亚洲一级电影视频 | 日本中文字幕视频 | 亚洲精品视频在线观看网站 | 久久理论电影网 | 国产精品久久久久久久久久久久午夜片 | 69国产在线观看 | 五月天久久精品 | 亚洲a免费| 日本爽妇网 | 免费看片日韩 | 中文字幕av免费 | 久久婷婷丁香 | 成人a在线观看高清电影 | 成 人 a v天堂 | 一区二区三区 中文字幕 | 手机看片| 欧美日韩综合在线 | 久热免费 | 天天艹日日干 | 日本天天色 | 特级西西www44高清大胆图片 | 天天综合91 | 国产精品亚 | 91看片麻豆 | 91在线国产观看 | 久草免费在线视频 | 日本久热 | 综合色久| 天天艹天天 | 国产精品毛片一区二区 | 日本成人黄色片 | 人人干人人草 | 天天综合日日夜夜 | 国产在线免费观看 | av中文字幕在线观看网站 | 97超碰在线久草超碰在线观看 | 激情电影影院 | 2021国产在线 | 中文字幕亚洲不卡 | 久久国产影院 | 久久精品国产99 | 亚洲jizzjizz日本少妇 | 成人国产精品免费观看 | 激情开心站 | 亚洲春色综合另类校园电影 | 精品国产乱码久久久久久1区二区 | 国色综合 | 久久久久国产精品www | 成人 亚洲 欧美 | 美女视频黄是免费的 | 日韩va在线观看 | 国产精品 中文字幕 亚洲 欧美 | 黄色网中文字幕 | 久久黄色影院 | 992tv人人网tv亚洲精品 | av成人免费在线看 | 91精品人成在线观看 | 亚洲 欧美 国产 va在线影院 | 狠狠色丁香婷婷综合久小说久 | 日批在线观看 | 久草在线在线精品观看 | 日韩在线免费高清视频 | 一 级 黄 色 片免费看的 | 亚洲最大在线视频 | 欧美一区二区三区四区夜夜大片 | 福利二区视频 | 97电影院网 | 久久一区二区三区日韩 | 99r在线视频| 伊人婷婷在线 | 丁香婷婷综合激情 | 日韩在线视频免费看 | 黄色免费网站 | 国产精品99久久久久久小说 | 久久综合久久综合久久 | 亚洲国产高清在线 | 日韩在线观看电影 | 日韩欧美在线第一页 | 97在线资源| 97国产| av成人免费在线观看 | 亚洲免费在线视频 | avwww在线 | 欧美aa在线 | 婷婷丁香狠狠爱 | 亚洲精品999 | 久草www| 狠狠躁日日躁狂躁夜夜躁 | 国产精品久久久久三级 | 丝袜美腿亚洲 | 欧美成人xxxxxxxx | 激情视频网页 | 亚洲视频axxx | 人人看人人做人人澡 | 夜夜操狠狠干 | 在线观看的av网站 | av一级在线观看 | 天天天天天干 | 欧美另类高潮 | 久久一区二区免费视频 | 黄色毛片一级片 | 狠狠干美女 | 精品国产一区二区三区久久影院 | 人人狠狠综合久久亚洲 | 欧美analxxxx | 韩国在线视频一区 | 日韩免费高清在线观看 | 婷婷丁香色综合狠狠色 | 五月天免费网站 | 中文字幕丝袜一区二区 | 91精品国产自产在线观看永久 | 国产精品都在这里 | 国产精品久久久久久久婷婷 | 五月婷婷中文 | 亚洲a资源 | 麻豆国产网站入口 | 久久久久综合 | 男女全黄一级一级高潮免费看 | 日韩久久久久久久久 | 欧美日韩高清 | av三级av| 日韩精品视频免费 | 爱情影院aqdy鲁丝片二区 | 国产精品第7页 | 视频一区二区视频 | 欧美精品久久久久久久久免 | 一区二区三区高清 | 久久99电影 | 亚洲国产精品一区二区久久,亚洲午夜 | 日韩精品一区二区三区电影 | 欧美 日韩 国产 成人 在线 | 人人藻人人澡人人爽 | 精品国产一二区 | 五月天综合网站 | 久久综合之合合综合久久 | 日韩有码第一页 | 黄色毛片在线看 | a级免费观看 | 欧洲精品久久久久毛片完整版 | 国产一区视频在线播放 | 色鬼综合网 | 久久天堂亚洲 | 一级一级一片免费 | 99免费国产 | 在线看黄色av| 天天摸天天操天天爽 | 日本中文字幕电影在线免费观看 | 国产自产高清不卡 | av在线电影网站 | 天天色成人网 | 免费福利小视频 |