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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

(二)路径规划算法---C++结合OpenCV实现RRT算法

發布時間:2023/12/31 c/c++ 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (二)路径规划算法---C++结合OpenCV实现RRT算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C++結合OpenCV實現RRT算法

文章目錄

  • C++結合OpenCV實現RRT算法
    • 1.RRT算法簡介
    • 2.算法整體框架流程
      • 2.1 rand點的建立
      • 2.2 near和new點的建立
      • 2.3 安全性檢查
      • 2.4 算法結束判斷
    • 3.RRT代碼框架
      • 3.1 主函數
      • 3.2 地圖數據的獲取
      • 3.3 RRT算法的實現
        • 3.3.1 起點入樹
        • 3.3.2 rand點的獲取
        • 3.3.3 near點的獲取
        • 3.3.4 new點的獲取
        • 3.3.5 安全性檢測
      • 3.4 可視化顯示
    • 4. 代碼運行過程

1.RRT算法簡介

代碼鏈接:RRT
動圖展示

RRT


2.算法整體框架流程


RRT算法整體框架主要分為rand、near、new三點的建立和near與new之間的安全性檢查

2.1 rand點的建立

rand點表示在地圖MMM中隨機采樣獲得,記住是隨機。我們可以通過設計隨機函數,讓盡可能的點進入空曠區域,即算法框架中的Sample函數。下圖中紅色點表示起點,綠色的點表示終點。

2.2 near和new點的建立

near點表示從RRT樹Γ\Gamma Γ中通過距離函數,判斷樹中哪個點距離當前rand點最近,此時該點即為near點。對應于算法框架中的Near函數。

new點表示以near點到rand為方向,以EiE_iEi?為步長,生成的一個新點。對應于算法框架的Steer函數。

2.3 安全性檢查

若上述的new點在安全區域內,且new與near點連線安全,則會在RRT樹中進行擴展,否則不會進行擴展。對應于算法框架中的CollisionFree函數。

2.4 算法結束判斷

算法框架中的當new點與goal相等,表示算法運行成功,但是實際編程情況中,new點與goal點會存在一定的距離閾值。


3.RRT代碼框架

3.1 主函數

main.cpp :首先通過地圖文件中讀取地圖數據(本次代碼提供兩張地圖,供測試使用),然后設置RRT算法的起點和終點,以及相關參數設置,例如距離閾值、步長、迭代次數等。其次通過RRT算法的接口函數RRTCoreCreatePath獲得RRT算法的路徑,最后通過顯示函數Display進行數據可視化。

#include <iostream> #include <vector> #include <string> #include "map.h" #include "display.h" #include "RRT.h" using namespace std;int main() {//讀取地圖點//vector<vector<int>>mapData = MapData("map/map.txt");定義起點和終點,以及閾值//int xStart = 10;//int yStart = 10;//int xGoal = 700;//int yGoal = 700;//int thr = 50;//int delta = 30;//int numer = 3000;//讀取地圖點vector<vector<int>>mapData = MapData("map/map6.txt");//定義起點和終點,以及閾值int xStart = 134; //起點x值int yStart = 161; //起點y值int xGoal = 251; //終點x值int yGoal = 61; //終點y值int thr = 10; //結束與終點的距離閾值int delta = 10; //步長int numer = 3000; //迭代參數//創建RRT對象CRRT rrt(xStart, yStart, xGoal, yGoal, thr, delta, mapData);vector<pair<float, float>>nearList, newList;vector<pair<int, int>>path;//RRT核心函數bool flag = rrt.RRTCore(nearList, newList,numer);if (flag == true){//通過RRT獲得路徑rrt.CreatePath(path);std::cout << "path size is:" << path.size() << std::endl;//顯示函數Display(xStart, yStart, xGoal, yGoal, mapData, path, nearList, newList);}return 0; }

3.2 地圖數據的獲取

本次地圖數據通過python程序將地圖圖片中的障礙物的位置存儲起來,然后通過C++流的方式進行讀取。

img2txt.py:該程序可以將彩蛇或者黑白地圖中的障礙物**(gray_img[i][j][i][j][i][j]== 0,數據0在圖片中為純黑,表示障礙物;255在圖片中為純白,表示自由可通行區域)**讀取,然后以txt的格式進行存儲。python程序需要opencv的環境,大家自己百度安裝。

# -*- coding: utf-8 -*-import matplotlib.pyplot as plt # plt 用于顯示圖片 import numpy as np import cv2img = cv2.imread("map/map6.bmp") print(img.shape) if len(img.shape)==3:print("圖片為彩色圖") gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) elif len(img.shape)==2:print("圖片為灰度圖")gray_img=img h=gray_img.shape[0] w=gray_img.shape[1] print (gray_img.shape)f = open("map/map6.txt", "wb") # 尺寸 h, w f.write((str(h) + " " + str(w) + "\n").encode("utf-8"))for i in range(h):for j in range(w):if gray_img[i][j] == 0:print("hello world")f.write((str(i) + " " + str(j) + "\n").encode("utf-8"))f.close() print ("map.txt save sucessful")

其中保存的地圖txt數據分為兩部分,第一行表示地圖的高和寬;從第二行開始表示障礙物的坐標值,例如234 648表示第648行,第234列那個點的圖像像素值為0。圖像坐標系中原點坐標在圖像的左上角,x軸向右,y軸向下。

800 800
234 648
234 649
234 650
234 651
234 652
234 653
234 654
234 655
234 656
234 657
234 658
234 659

map.h

#pragma once #ifndef __MAP__ #define __MAP__ #include <vector> #include<iostream> #include <string> using namespace std; vector<vector<int>> MapData(std::string _MapPath);#endif

map.cpp:通過C++流的方式進行txt數據的讀取,按照上述存儲方式進行讀取。

/*該函數是讀取map.txt形成一個二維數組num,其中num里面0表示障礙物,255為可自由區域*/ #include "map.h" #include<fstream> #include<sstream> vector<vector<int>>MapData(std::string _MapPath) {ifstream f;f.open(_MapPath);string str;vector<vector<int> > num;bool FirstLine = true;while (getline(f, str)) //讀取1行并將它賦值給字符串str{if (FirstLine){istringstream in(str); // c++風格的串流的輸入操作int a;in >> a;int height = a;in >> a;int wight = a;num.resize(height, vector<int>(wight, 255));FirstLine = false;}else{istringstream input(str); // c++風格的串流的輸入操作vector<int> tmp;int a;while (input >> a) //通過input將第一行的數據一個一個的輸入給atmp.push_back(a);num[tmp[0]][tmp[1]] = 0;}}return num; }

3.3 RRT算法的實現

RRT.h:主要通過RRTCore函數實現RRT算法的本體,通過CreatePath函數獲得RRT算法的路徑。

#pragma once #ifndef __RRT__ #define __RRT__ #include <iostream> #include <string> #include <vector> #include <math.h> #include "ctime" #define N 999 #define pi 3.1415926using namespace std; //定義RRT搜索樹結構 struct Tree {float Sx; //當前點的x值float Sy; //當前點的y值 //new點float SxPrev; //該點先前點的x值float SyPrev; //該點先前點的x值 //near點float Sdist; //near點與new點的距離int SindPrev; //new點的索引 }; class CRRT { public://RRT構造函數CRRT(int _xStart, int _yStart, int _xGoal, int _yGoal, int _thr, int _delta, vector<vector<int>>_map);//距離計算函數inline float GetDist(int _x1, int _y1, int _x2, int _y2);//與rand點距離較近的點在RRT樹中的索引int GetMinIndex(int _x1, int _y1, vector<Tree>_T);//點的安全性判定inline bool FeasiblePoint(float _x, float _y, vector<vector<int>>_map);//near點與new點連線之間的碰撞檢測bool CollisionChecking(vector<float> _startPose, vector<float> _goalPose, vector<vector<int>>_map);//RRT核心函數bool RRTCore(int _numer,vector<pair<float,float>>& _nearList, vector<pair<float, float>>& _newList);//RRT生成路徑函數void CreatePath(vector<pair<int, int>>& _path); private:vector<Tree> m_TreeList; //RRT搜索樹列表Tree m_tree; //RRT搜索樹vector<vector<int>>m_map; //二維地圖int m_xStart; //起點X值int m_yStart; //起點Y值int m_xGoal; //終點X值int m_yGoal; //終點Y值int m_thr; //距離閾值int m_delta; //步長int m_mapWight; //地圖寬度int m_mapHight; //地圖高度 };#endif

RRT.cpp:主要實現RRT.h頭文件中的各成員函數。

#include "RRT.h"/*********************************************************** *@函數功能: RRT構造函數,對地圖寬度和高度進行初始化 ----------------------------------------------------------- *@函數參數: _xStart 起點X值_yStart 起點Y值_xGoal 終點X值_yGoal 終點Y值_thr 距離閾值_delta 步長_map 地圖 ----------------------------------------------------------- *@函數返回: 無 ***********************************************************/ CRRT::CRRT(int _xStart, int _yStart, int _xGoal, int _yGoal, int _thr, int _delta, vector<vector<int>>_map ):m_xStart(_xStart),m_yStart(_yStart),m_xGoal(_xGoal),m_yGoal(_yGoal),m_thr(_thr),m_delta(_delta),m_map(_map) {m_mapWight = _map[0].size();m_mapHight = _map.size(); }/*********************************************************** *@函數功能: 兩點距離計算函數 ----------------------------------------------------------- *@函數參數: _x1 第一個點X值_y1 第一個點Y值_x2 第二個點X值_y2 第二個點Y值 ----------------------------------------------------------- *@函數返回: 兩點之間的距離值 ***********************************************************/ inline float CRRT::GetDist(int _x1, int _y1, int _x2, int _y2) {return sqrt(pow((_x1 - _x2), 2) + pow((_y1 - _y2), 2)); }/*********************************************************** *@函數功能: 求rand點距離較近的點在RRT樹中的索引 ----------------------------------------------------------- *@函數參數: _x1 rand點X值_y1 rand點Y值_T RRT搜索樹列表 ----------------------------------------------------------- *@函數返回: 最近索引值 ***********************************************************/ int CRRT::GetMinIndex(int _x1, int _y1, vector<Tree>_T) {float distance = FLT_MAX; //FLT_MAX表示float最大值int index = 0;for (int i = 0; i < _T.size(); i++){if (GetDist(_x1, _y1, _T[i].Sx, _T[i].Sy) < distance){distance = GetDist(_x1, _y1, _T[i].Sx, _T[i].Sy);index = i;}}return index; }/*********************************************************** *@函數功能: 點的安全性判定 ----------------------------------------------------------- *@函數參數: _x1 點X值_y1 點Y值_map 地圖點 ----------------------------------------------------------- *@函數返回: true表示該點安全,false表示不安全 ***********************************************************/ inline bool CRRT::FeasiblePoint(float _x, float _y, vector<vector<int>>_map) {//判斷該點是否在地圖的高度和寬度范圍內,且是否在障礙物內if (!(_x >= 0 && _x < m_mapWight && _y >= 0 && _y < m_mapHight && _map[_y][_x] == 255))return false;return true; }/*********************************************************** *@函數功能: near點與new點連線之間的碰撞檢測 ----------------------------------------------------------- *@函數參數: _startPose near點_goalPose new點_map 地圖點 ----------------------------------------------------------- *@函數返回: true表示安全,false表示不安全 ***********************************************************/ bool CRRT::CollisionChecking(vector<float> _startPose, vector<float> _goalPose, vector<vector<int>>_map) {//new點若在障礙物內,直接返回falseif (!(FeasiblePoint(floor(_goalPose[0]), ceil(_goalPose[1]), _map))){return false;}float dir = atan2(_goalPose[0] - _startPose[0], _goalPose[1] - _startPose[1]);float poseCheck[2] = { 0.0,0.0 };float stop = sqrt(pow(_startPose[0] - _goalPose[0], 2) + pow(_startPose[1] - _goalPose[1], 2));//r+=2表示在near與new連線的基礎上,每次移動2個步長for (float r = 0; r <= stop; r += 2){poseCheck[0] = _startPose[0] + r*sin(dir);poseCheck[1] = _startPose[1] + r*cos(dir);//由于poseCheck點為float類型,為亞像素級,因此判斷該點四領域的像素值,ceil向上取整,floor向下取整if (!(FeasiblePoint(ceil(poseCheck[0]), ceil(poseCheck[1]), _map) && \FeasiblePoint(floor(poseCheck[0]), floor(poseCheck[1]), _map) && \FeasiblePoint(ceil(poseCheck[0]), floor(poseCheck[1]), _map) && \FeasiblePoint(floor(poseCheck[0]), ceil(poseCheck[1]), _map))){return false;}}return true; }/*********************************************************** *@函數功能: RRT核心函數 ----------------------------------------------------------- *@函數參數: _nearList near點集合,為引用傳參,實際上也為返回值_newList new點集合,為引用傳參,實際上也為返回值_numer RRT算法迭代次數 ----------------------------------------------------------- *@函數返回: true表示RRT找到路徑,false表示沒找到 ***********************************************************/ bool CRRT::RRTCore(int _numer,vector<pair<float, float>>& _nearList, vector<pair<float, float>>& _newList) {//將起點插入樹中m_tree.Sx =m_xStart;m_tree.Sy = m_yStart;m_tree.SxPrev = m_xGoal;m_tree.SyPrev = m_yGoal;m_tree.Sdist = 0;m_tree.SindPrev = 0;m_TreeList.push_back(m_tree);vector<float>Rand, Near, New;Rand.resize(2, 0.0);Near.resize(2, 0.0);New.resize(2, 0.0);srand(time(NULL));//設置隨機數種子,使每次產生的隨機序列不同int count = 0;for (int i = 1; i <= _numer; i++){//隨機產生地圖點RandRand[0] =m_mapWight*(rand() % (N + 1) / (float)(N + 1));Rand[1] = m_mapHight*(rand() % (N + 1) / (float)(N + 1));//通過距離判斷來計算與Rand最近的Near點int minDisIndex = GetMinIndex(Rand[0], Rand[1], m_TreeList);Near[0] = m_TreeList[minDisIndex].Sx;Near[1] = m_TreeList[minDisIndex].Sy;//Near與Rand連線,移動delta步長float theta = atan2(Rand[1] - Near[1], Rand[0] - Near[0]);New[0] = Near[0] + m_delta*(cos(theta));New[1] = Near[1] + m_delta*(sin(theta));//連線碰撞檢測if (!CollisionChecking(Near, New, m_map))continue;//擴展RRT搜索樹std::cout << "i:" << i << std::endl;m_tree.Sx = New[0];m_tree.Sy = New[1];m_tree.SxPrev = Near[0];m_tree.SyPrev = Near[1];m_tree.Sdist = m_delta;m_tree.SindPrev = minDisIndex;m_TreeList.emplace_back(m_tree);//距離閾值判斷,是否搜索結束if (GetDist(New[0], New[1], m_xGoal, m_yGoal) < m_thr){return true;}//保存near點與new點_nearList.emplace_back(std::make_pair(Near[0], Near[1]));_newList.emplace_back(std::make_pair(New[0], New[1]));}return false;}/*********************************************************** *@函數功能: RRT生成路徑,逆向搜索 ----------------------------------------------------------- *@函數參數: _path RRT生成路徑集合點,為引用傳參,實際上也為返回值 ----------------------------------------------------------- *@函數返回: 無 ***********************************************************/ void CRRT::CreatePath(vector<pair<int, int>>& _path) {pair<int, int>temp;//將終點加入路徑集合點_path.push_back(std::make_pair(m_xGoal, m_yGoal));//由于搜索路徑結束存在一個閾值,故將搜索樹的最后一個點加入路徑集合點_path.push_back(std::make_pair(m_TreeList[m_TreeList.size() - 1].Sx, m_TreeList[m_TreeList.size() - 1].Sy));int pathIndex = m_TreeList[m_TreeList.size() - 1].SindPrev;//逆向搜索while (true){_path.emplace_back(std::make_pair(m_TreeList[pathIndex].Sx, m_TreeList[pathIndex].Sy));pathIndex = m_TreeList[pathIndex].SindPrev;if (pathIndex == 0)break;}//將起點加入路徑集合點_path.push_back(std::make_pair(m_TreeList[0].Sx, m_TreeList[0].Sy));}

接下里主要從RRT中的核心函數RRTCore進行算法介紹。

3.3.1 起點入樹

m_tree.Sx =m_xStart; m_tree.Sy = m_yStart; m_tree.SxPrev = m_xGoal; m_tree.SyPrev = m_yGoal; m_tree.Sdist = 0; m_tree.SindPrev = 0; m_TreeList.push_back(m_tree);vector<float>Rand, Near, New; Rand.resize(2, 0.0); Near.resize(2, 0.0); New.resize(2, 0.0);

3.3.2 rand點的獲取

為了方便起見,并沒有設置隨機采樣函數,通過隨機種子進行rand的確定。其中(rand() % (N + 1) / (float)(N + 1))是產生0~1的隨機樹,小數點與N有關。

//隨機產生地圖點Rand Rand[0] =m_mapWight*(rand() % (N + 1) / (float)(N + 1)); Rand[1] = m_mapHight*(rand() % (N + 1) / (float)(N + 1));

3.3.3 near點的獲取

通過簡單的距離函數進行near點的判斷。其中GetMinIndex就是通過遍歷獲取與rand點最近的near點,當然可以通過kd-tree對這塊進行改進,大家感興趣可以自行發揮,這里為了方便起見,就采用最原始的方法。

//通過距離判斷來計算與Rand最近的Near點 int minDisIndex = GetMinIndex(Rand[0], Rand[1], m_TreeList); Near[0] = m_TreeList[minDisIndex].Sx; Near[1] = m_TreeList[minDisIndex].Sy;

3.3.4 new點的獲取

//Near與Rand連線,移動delta步長 float theta = atan2(Rand[1] - Near[1], Rand[0] - Near[0]); New[0] = Near[0] + m_delta*(cos(theta)); New[1] = Near[1] + m_delta*(sin(theta));

注意near點的獲取使用C++中的atan2函數,該函數是 atan() 的增強版,能夠確定角度所在的象限。

其中**double atan2(double y,double x)**返回 y/x 的反正切值,以弧度表示,取值范圍為(-π,π]。如下圖所示,紅色線為sin(θ)sin(\theta)sin(θ),綠色線為cos(θ)cos(\theta)cos(θ)

當 (x, y) 在象限中時:

第一象限第二象限第三象限第四象限
0<θ<π/20<\theta<\pi/20<θ<π/2π/2<θ<π\pi/2 <\theta <\piπ/2<θ<π?π<θ<?π/2-\pi<\theta<-\pi/2?π<θ<?π/2?π/2<θ<0-\pi/2<\theta<0?π/2<θ<0

當 (x, y) 在象限的邊界(也就是坐標軸)上時:

y=0y=0y=0x≥0x \geq 0x0y=0y=0y=0x<0x < 0x<0y>0y>0y>0x=0x=0x=0y<0y<0y<0x=0x=0x=0
θ=0\theta =0θ=0θ=π\theta=\piθ=πθ=π/2\theta=\pi/2θ=π/2θ=?π/2\theta=-\pi/2θ=?π/2

那么
new_x=near_x+d?cos(θ)new_y=neae_y+d?sin(θ)new\_x=near\_x+d*cos(\theta) \\ new\_y=neae\_y+d*sin(\theta) \\ new_x=near_x+d?cos(θ)new_y=neae_y+d?sin(θ)

表示new點的情況如下,均滿足new點在near與rand點之間。這就是atan2帶來的好處。

第一象限 第二象限
第三象限第四象限

3.3.5 安全性檢測

near點與new點之間的安全性判斷通過CollisionChecking函數所實習,基本思想就是沿著near與new點的方向,每隔一定的微小步長(代碼中用rrr)取一點,判斷該點是否在障礙物內。注意微小步長所取的點,它的像素是亞像素級的,可通過雙線性插值方法判斷該像素的值。本文為了方便起見,判斷該點亞像素的周圍四點領域,進行安全性判斷。

舉個例子,例如該點為p=(1.3,4.7)p=(1.3,4.7)p=(1.3,4.7),通過向下取整floor和向上取整ceil得該亞像素點的四點領域

ceil(1.3)=2,ceil(4.7)=5???>p1=(2,5)ceil(1.3)=2,ceil(4.7) =5 --->p_1=(2,5)ceil(1.3)=2,ceil(4.7)=5???>p1?=(2,5)

floor(1.3)=1,floor(4.7)=4??>p2=(1,4)floor(1.3)=1,floor(4.7)=4-->p_2=(1,4)floor(1.3)=1,floor(4.7)=4??>p2?=(1,4)

ceil(1.3)=2,floor(4.7)=4??>p3=(2,4)ceil(1.3)=2,floor(4.7)=4-->p_3=(2,4)ceil(1.3)=2,floor(4.7)=4??>p3?=(2,4)

floor(1.3)=1,ceil(4.7)=5???>p4=(1,5)floor(1.3)=1,ceil(4.7) =5--->p_4=(1,5)floor(1.3)=1,ceil(4.7)=5???>p4?=(1,5)

bool CRRT::CollisionChecking(vector<float> _startPose, vector<float> _goalPose, vector<vector<int>>_map) {//new點若在障礙物內,直接返回falseif (!(FeasiblePoint(floor(_goalPose[0]), ceil(_goalPose[1]), _map))){return false;}float dir = atan2(_goalPose[0] - _startPose[0], _goalPose[1] - _startPose[1]);float poseCheck[2] = { 0.0,0.0 };float stop = sqrt(pow(_startPose[0] - _goalPose[0], 2) + pow(_startPose[1] - _goalPose[1], 2));//r+=2表示在near與new連線的基礎上,每次移動2個步長for (float r = 0; r <= stop; r += 2){poseCheck[0] = _startPose[0] + r*sin(dir);poseCheck[1] = _startPose[1] + r*cos(dir);//由于poseCheck點為float類型,為亞像素級,因此判斷該點四領域的像素值,ceil向上取整,floor向下取整if (!(FeasiblePoint(ceil(poseCheck[0]), ceil(poseCheck[1]), _map) && \FeasiblePoint(floor(poseCheck[0]), floor(poseCheck[1]), _map) && \FeasiblePoint(ceil(poseCheck[0]), floor(poseCheck[1]), _map) && \FeasiblePoint(floor(poseCheck[0]), ceil(poseCheck[1]), _map))){return false;}}return true; }

3.4 可視化顯示

display.h

#pragma once #ifndef __DISPLAY__ #define __DISPLAY__ #include <opencv2/opencv.hpp> #include <vector> using namespace std; //顯示函數 void Display(int _xStart,int _yStart,int _xGoal,int _yGoal,vector<vector<int>>_map, vector<pair<int, int>>_path, vector<pair<float, float>>_nearList, vector<pair<float, float>>_newList); #endif // !__DISPLAY__

display.cpp

注意該代碼會在當前項目中的image文件夾(沒有該文件夾,手動創建一個即可)中存儲rrt顯示過程圖片(為了后期作gif使用,其他沒什么用),若是不想存儲,則注釋掉。

cv::imwrite(“image/image” + std::to_string(i) + “.jpg”, image);

#include "display.h" #include <iostream> #include <string> #include <Windows.h> #include <cstdlib> #include <io.h> // _access #include <direct.h> //_mkdir /*********************************************************** *@函數功能: RRT函數顯示 ----------------------------------------------------------- *@函數參數: _xStart 起點X值_yStart 起點Y值_xGoal 終點X值_yGoal 終點Y值_thr 距離閾值_map 地圖_path 路徑點_nearList near點集合_newList new點集合 ----------------------------------------------------------- *@函數返回: 無 ***********************************************************/ void Display(int _xStart,int _yStart, int _xGoal, int _yGoal,vector<vector<int>>_map, vector<pair<int, int>>_path, vector<pair<float, float>>_nearList, vector<pair<float, float>>_newList) {int mapWight = _map[0].size();int mapHight = _map.size();//如沒有image文件夾,則新建一個,存放RRT擴展樹的中間過程std::string prefix = "image";if (_access(prefix.c_str(), 0) == -1) //如果文件夾不存在{_mkdir(prefix.c_str()); //則創建}//通過地圖點繪制圖像RGB,白色可通行區域,黑色為障礙物區域cv::namedWindow("RRT result", CV_WINDOW_AUTOSIZE);cv::Mat image(mapHight, mapWight, CV_8UC3, cv::Scalar(0, 0, 0));for (int row = 0; row < mapHight; row++){for (int col = 0; col < mapWight; col++){if (_map[row][col] == 255){image.at<cv::Vec3b>(row, col)[0] = 255;image.at<cv::Vec3b>(row, col)[1] = 255;image.at<cv::Vec3b>(row, col)[2] = 255;}}}//顯示起點和終點,紅色起點,綠色終點cv::circle(image, cv::Point(_xStart, _yStart), 4, cv::Scalar(0, 0, 255), -1, 4); //起點cv::circle(image, cv::Point(_xGoal, _yGoal), 4, cv::Scalar(0, 255, 0), -1, 4); //終點//顯示路徑探索過程for (int i = 0; i < _nearList.size(); i++){cv::line(image, cv::Point(_nearList[i].first, _nearList[i].second), cv::Point(_newList[i].first, _newList[i].second), cv::Scalar(255, 0, 0), 2, 2);cv::imshow("RRT result", image);cv::waitKey(100); //100ms刷新一下cv::imwrite("image/image" + std::to_string(i) + ".jpg", image);}//顯示最終路徑,黃色for (int i = 0; i < _path.size() - 1; i++){cv::line(image, cv::Point(_path[i].first, _path[i].second), cv::Point(_path[i + 1].first, _path[i + 1].second), cv::Scalar(0, 255, 255), 2, 2);}//保存6張最終圖片,方便制作giffor (int i = 0; i <= 5; i++){cv::imwrite("image/image"+std::to_string(_nearList.size()+i)+".jpg", image);}cv::imshow("RRT result", image);cv::waitKey(0); }

4. 代碼運行過程

注意顯示過程中的“樹枝”表示near點與new點的連接。

顯示過程顯示結果
map6.bmp
顯示過程顯示結果
map.png<動圖太大,CSDN僅支持5M,無法顯示>

一個批量將圖片轉為gif的python腳本,注意python代碼中一定要添加dir_list = natsort.natsorted(dir_list),否則會出現圖片亂序的問題。

import os import cv2 as cv import moviepy.editor as mpy import numpy as np import natsort import imageiodef frame_to_gif(frame_list):gif = imageio.mimsave('./result.gif', frame_list, 'GIF', duration=0.00085) dir_list = os.listdir('image') dir_list = natsort.natsorted(dir_list)img_list=[] for i in range(0,len(dir_list)):print (dir_list[i])img = cv.imread('image\\' + dir_list[i])#img = cv.cvtcolor(img, cv.color_bgr2rgb)img_list.append(img)frame_to_gif(img_list)

參考連接:https://blog.csdn.net/qq_44965314/article/details/107706145

啰里啰唆說了這么多,就到這里吧,圖中的部分圖片摘自深藍學院的路徑與規劃課程,博客轉載請注明出處,謝謝。

總結

以上是生活随笔為你收集整理的(二)路径规划算法---C++结合OpenCV实现RRT算法的全部內容,希望文章能夠幫你解決所遇到的問題。

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

亚洲成a人片在线观看网站口工 | 久久国产香蕉视频 | 久久99深爱久久99精品 | 免费视频一二三区 | 久久国产精品99久久久久久老狼 | 欧美色图视频一区 | 97国产电影| 最近的中文字幕大全免费版 | 久久亚洲免费 | 久久久久久毛片精品免费不卡 | 久久久久国产成人免费精品免费 | www91在线观看| 在线观看播放av | 国产成人精品综合久久久 | 黄色大片日本免费大片 | 99九九99九九九视频精品 | 91精品国产自产在线观看 | 热久久视久久精品18亚洲精品 | 中文字幕国语官网在线视频 | 黄色在线小网站 | 日韩在线视频一区二区三区 | 在线成人中文字幕 | 一区二区视频免费在线观看 | 国产一区视频在线观看免费 | 六月丁香激情综合 | 安徽妇搡bbbb搡bbbb | 夜色成人av | 国语黄色片 | 国内揄拍国产精品 | 91免费日韩 | 99视频| 亚洲aⅴ免费在线观看 | 成人片在线播放 | 欧美激情视频在线免费观看 | 91视频 - 114av| 黄色软件在线观看免费 | 国产高清av在线播放 | 美女黄频网站 | 中文字幕在线色 | 欧美在线观看视频一区二区三区 | 久草综合在线 | 中文字幕你懂的 | 精品视频久久久 | 国产精品乱码久久久久久1区2区 | 国产精品12 | 欧美天天干 | 免费久久网站 | 亚洲精品啊啊啊 | 日韩久久网站 | 午夜狠狠干 | 成人a级黄色片 | 亚洲无吗天堂 | 久久免费黄色 | av网站地址 | 黄色午夜网站 | 国产精品久久久一区二区三区网站 | 久久久久久久久综合 | 久久视频中文字幕 | 精品一区电影 | 国产高清免费观看 | 91看片在线免费观看 | 成人av电影免费在线观看 | 日日日操 | 99这里只有精品视频 | av成人免费观看 | 成人欧美一区二区三区黑人麻豆 | 日韩一级黄色av | 麻豆91在线| 一区二区三区中文字幕在线 | 99视频在线免费 | 欧美日韩在线视频观看 | 亚洲成a人片77777kkkk1在线观看 | 国产美女精品人人做人人爽 | 日韩免费电影一区二区 | 四虎影视8848dvd | 热久久最新地址 | 国产中文欧美日韩在线 | 欧美一区三区四区 | 亚洲欧美视频 | 西西44人体做爰大胆视频 | 国产精品一区二区视频 | 91视视频在线直接观看在线看网页在线看 | 综合天天色 | 青青草华人在线视频 | 国产亚洲综合在线 | 久操伊人| 黄色91免费观看 | 亚州视频在线 | 丁香视频全集免费观看 | 欧美一级片免费 | 久久伊99综合婷婷久久伊 | 久久国产午夜精品理论片最新版本 | 日韩黄色中文字幕 | 精品视频123区在线观看 | 97国产精品亚洲精品 | 亚洲欧美日本一区二区三区 | 91久久精品日日躁夜夜躁国产 | 久久综合久久综合这里只有精品 | 五月激情视频 | 久久伊人精品天天 | 国产三级视频在线 | 夜夜高潮夜夜爽国产伦精品 | 91av电影在线 | 亚洲人xxx | 91av视频免费在线观看 | 国产精品99久久久久久人免费 | 深爱开心激情 | 天天综合婷婷 | 视频在线观看入口黄最新永久免费国产 | 国产麻豆剧果冻传媒视频播放量 | 亚洲一级黄色av | 免费av片在线 | 国产一线二线三线性视频 | 亚洲va男人天堂 | 96亚洲精品久久 | 91精品久久久久久久91蜜桃 | 国色天香在线观看 | 久久亚洲免费 | 日韩av在线不卡 | 日韩国产精品一区 | 99激情网 | 日韩在线免费视频观看 | 黄色av电影网 | 免费日韩三级 | 国产精品18久久久久久久网站 | 国产韩国精品一区二区三区 | 蜜臀久久99精品久久久无需会员 | 中文av一区二区 | 亚洲精品久久久蜜臀下载官网 | 在线高清一区 | 国产色拍拍拍拍在线精品 | 国产午夜精品一区 | 日韩在线视频一区 | 国产日韩精品一区二区三区 | 二区视频在线 | 欧美 日韩 性 | 久久人视频 | 日韩va欧美va亚洲va久久 | 色婷在线| 国产精品久久久久久久久久不蜜月 | 五月天综合网站 | 黄色的网站在线 | 二区中文字幕 | 免费看黄在线网站 | 97精品电影院 | 日韩极品视频在线观看 | 不卡av在线播放 | 最新色站 | 精品福利av| 亚洲激情免费 | 国产原创av片 | 国产毛片aaa| 中文字幕中文字幕在线中文字幕三区 | 黄色网大全 | 九九热国产视频 | 亚洲天堂自拍视频 | 天天色天天干天天色 | 国产精品自产拍在线观看网站 | 狠狠五月婷婷 | 日韩在线观看视频免费 | 国产精品不卡视频 | 亚洲激情综合 | 天天干天天草天天爽 | 四虎国产精品永久在线国在线 | 日韩三级av| 亚洲精品国产品国语在线 | 久久成人国产精品免费软件 | 天天操狠狠操夜夜操 | 最新久久久 | 国产欧美中文字幕 | 国产99在线免费 | 亚洲天天在线日亚洲洲精 | 香蕉免费| 国产精品久久久久久影院 | 毛片3 | 国产精品久久伊人 | 亚洲电影自拍 | 国产明星视频三级a三级点| 免费成人av在线看 | 日日天天 | 国产 欧美 在线 | 免费看黄色91 | 午夜精品视频福利 | 日日躁夜夜躁xxxxaaaa | 国产一区二区在线精品 | 在线视频中文字幕一区 | 亚洲视频在线观看 | 国产精品久久久久永久免费看 | 久久精品看片 | 成年人免费电影 | 一区二区网 | 91在线成人| 久久婷婷开心 | 国产流白浆高潮在线观看 | 欧美一级片在线观看视频 | 免费黄色a网站 | 视频国产区 | 色婷婷综合在线 | 国产日韩一区在线 | 精品国产精品一区二区夜夜嗨 | 国产91在| 在线电影 你懂得 | 国产精品第二页 | 三级免费黄 | 中文字幕成人在线观看 | 麻豆免费视频观看 | 国产午夜精品一区 | 五月婷婷色 | 色综合天天干 | 国产高清在线精品 | 久久久国产影院 | 国产无遮挡又黄又爽馒头漫画 | 久草在线视频资源 | 久久精品美女视频 | 亚洲国产wwwccc36天堂 | www.伊人网 | 黄色aaa级片 | 国内精品久久久 | 蜜臀av性久久久久蜜臀av | 成人av播放 | 操操综合| 欧美va天堂va视频va在线 | 国产一二三精品 | 国产精品一区二区三区免费看 | 国产精品久久久久免费 | 一区二区三区四区精品视频 | 色五婷婷 | 国产色视频网站2 | 色噜噜在线观看视频 | 中文视频在线看 | 国产手机视频在线 | 一区二区三区四区五区六区 | 久久国产女人 | 亚洲精品久久久蜜桃 | 日韩欧美网站 | 精品伦理一区二区三区 | 亚洲欧美综合精品久久成人 | 国产精品99久久久精品免费观看 | 伊人丁香 | 在线91播放 | 国产在线999| 久久久久免费精品 | 视频三区在线 | 日本大片免费观看在线 | 国产一级在线视频 | 四虎影视精品 | 久久国产精品视频观看 | 在线观看视频色 | 91精品国产一区二区在线观看 | 国产色视频123区 | 免费亚洲成人 | 久久久久久国产精品亚洲78 | 久精品视频在线观看 | 亚洲成人精品久久 | 黄色片网站大全 | 欧美aaa视频| 亚洲欧美视频 | 97精品国产97久久久久久久久久久久 | 国产视频1区2区3区 久久夜视频 | 日韩com| 国内精品免费久久影院 | 免费av福利 | 国产精品1000 | 中文字幕av免费在线观看 | 日韩在线一区二区免费 | 久久久久在线观看 | 制服丝袜天堂 | 最新影院 | 亚洲va欧美va人人爽 | 激情开心站 | 亚洲视频 一区 | 精品一区 在线 | 午夜国产一区 | 日本久久免费电影 | 国产一级二级视频 | 久久草精品 | 日本中文字幕在线电影 | 成人免费在线视频观看 | 色a网| 美女网站在线 | 久久午夜精品视频 | 日产乱码一二三区别免费 | 久久99亚洲热视 | 国产小视频在线免费观看 | 久久久久一区二区三区四区 | 免费国产在线观看 | 久久国产精品二国产精品中国洋人 | 精品久久久影院 | 99riav1国产精品视频 | 九九欧美视频 | 国产综合在线视频 | 欧美视频网址 | 在线观看日韩国产 | 中文字幕av影院 | 欧美另类老妇 | 亚洲精品免费观看视频 | 日日爽夜夜操 | 日日摸日日添日日躁av | 丝袜美腿亚洲综合 | av观看久久久 | 一区二区三区在线看 | 在线黄色免费 | 欧美一级看片 | 免费a v观看 | 丁香九月激情综合 | 男女日麻批 | 亚洲有 在线 | 精品久久一区二区三区 | 日日爱视频| 狠狠操综合网 | 成 人 黄 色视频免费播放 | 精品国产伦一区二区三区免费 | 五月婷视频 | 亚洲国产中文字幕在线观看 | 99精品热视频 | 欧美激情第十页 | 激情视频国产 | 福利在线看片 | 免费在线观看国产精品 | 日日草天天干 | 国产精品片 | 日本中文字幕高清 | 国产婷婷色 | 99在线观看免费视频精品观看 | 久久永久视频 | 韩国精品一区二区三区六区色诱 | 日韩手机视频 | av色一区 | 亚洲天堂视频在线 | 久久久麻豆 | 亚洲成年人av | 亚洲成人中文在线 | 婷婷激情综合网 | 91你懂的| 黄网站免费大全入口 | 97在线播放| 激情综合网五月激情 | 成片人卡1卡2卡3手机免费看 | 91av视频在线免费观看 | 六月激情久久 | 日韩久久一区二区 | 日韩精品久久久久 | 天堂在线免费视频 | 天天干天天草天天爽 | 国产精品电影在线 | 国产人在线成免费视频 | 日韩成人免费在线电影 | 在线观看久久久久久 | 天天拍夜夜拍 | 日韩在线第一区 | 亚洲最新在线视频 | 一级黄色片在线免费看 | 亚洲夜夜综合 | 亚洲最新精品 | 亚洲精品国产精品国自产观看浪潮 | 中文字幕精品三级久久久 | 国产一级电影免费观看 | 黄色天堂在线观看 | 少妇搡bbbb搡bbb搡aa | 国产精品一区在线播放 | 国产成人久久77777精品 | 国内精品在线观看视频 | 免费在线观看毛片网站 | 一本一本久久aa综合精品 | 久久精品a | 国产美女精彩久久 | 久久综合综合久久综合 | 五月婷在线 | 免费看精品久久片 | 又黄又爽又刺激视频 | 人人精品 | 久章草在线观看 | 久久天天操 | 91九色在线视频 | 四虎在线视频免费观看 | 日韩在线三级 | 91大神精品视频在线观看 | 国产精品白虎 | 免费精品在线观看 | 国产亚洲日本 | 成人影视免费看 | 欧美国产日韩一区二区 | 久久九精品 | 中文字幕韩在线第一页 | 天天草天天摸 | 国产高清日韩欧美 | 亚洲国产精品久久久久 | 操操操av | 国产精品1000 | 国产精品九九九九九九 | 国产精品99视频 | 一区二区三区韩国免费中文网站 | 国产一区二区在线看 | 丁香 婷婷 激情 | 国产在线中文 | 日韩毛片在线一区二区毛片 | www天天操 | 免费视频xnxx com | 中国精品一区二区 | 成人精品亚洲 | 麻豆视频在线免费看 | 久久久久久综合网天天 | 日韩av一区二区在线影视 | 亚洲一区二区麻豆 | 久久久国产一区二区三区四区小说 | 在线播放 日韩专区 | 色在线免费观看 | 精品久久国产一区 | 国内精品免费久久影院 | 玖玖色在线观看 | 999久久精品 | 成人午夜片av在线看 | av在线激情| 不卡精品视频 | 最近免费中文视频 | 国产精品v欧美精品v日韩 | 欧美精品在线免费 | 亚洲免费公开视频 | 91网址在线| 国产精品尤物 | 久久99精品波多结衣一区 | 国产欧美日韩视频 | 在线观看黄网 | av中文字幕电影 | 天天综合91 | av观看网站 | 深爱开心激情网 | 日韩精品一区二区三区第95 | 国产精品久久久久久久久久久久午 | 伊人狠狠 | 久久激情五月婷婷 | 国内精品福利视频 | 成人免费中文字幕 | 久热香蕉视频 | 国产在线播放一区 | 国产精品免费久久久久久 | 国产群p视频 | 99久久日韩精品视频免费在线观看 | 精品国产99国产精品 | 天天爽人人爽 | 日韩网页| 亚洲国产一二三 | 草久在线观看视频 | 亚洲精品乱码久久久久久蜜桃不爽 | 黄色免费视频在线观看 | 激情视频在线观看网址 | 精品视频免费看 | 干亚洲少妇| 国产一区二区免费 | 国产色小视频 | 久久久久这里只有精品 | a视频免费看 | 日韩av中文在线观看 | 午夜黄色一级片 | 久久久高清一区二区三区 | 中文字幕丰满人伦在线 | 九九免费在线观看 | 视频在线播放国产 | 日韩在线视频观看免费 | 中文字幕一区二区三区四区视频 | 激情五月在线视频 | av电影中文| 人人射 | 久久久蜜桃 | 国产91aaa| 久久久久国产精品一区二区 | 久久久久久久18 | 久久男女视频 | 久久久久国产一区二区三区四区 | 在线观看的a站 | 999国产| 天天操天天操天天操天天操 | 免费成人黄色 | 亚洲成人av一区 | 久久精品aaa | 国产精品精品久久久 | 波多野结衣电影一区二区 | 超碰人人超碰 | 国产精品福利在线观看 | 一级精品视频在线观看宜春院 | 久久精品8 | 国产在线综合视频 | 人人干人人超 | 久久精品欧美日韩精品 | 97超碰免费在线观看 | 久久在线免费观看视频 | 成人a免费看 | av无限看 | 国产综合婷婷 | 在线观看日韩精品 | 亚洲最新av在线网站 | 欧美日韩不卡一区二区 | www.国产高清 | 国产精品久久视频 | 久久久久久久久久网 | 亚洲无线视频 | 免费高清男女打扑克视频 | 久草视频免费 | 免费看成年人 | 日韩精品免费在线观看 | 久久久久久久久久久高潮一区二区 | 男女啪啪免费网站 | 黄色福利| 最新精品视频在线 | 亚洲免费专区 | a'aaa级片在线观看 | 九色精品免费永久在线 | 亚洲国产视频a | 国产精品第72页 | 色多多视频在线观看 | 激情丁香综合五月 | 亚洲国产精品成人精品 | 国产精品久久久久久久久毛片 | 美女网站在线免费观看 | 免费观看xxxx9999片 | 久久涩视频 | 二区三区中文字幕 | 国产一区免费视频 | 一级黄色大片在线观看 | 婷婷精品国产欧美精品亚洲人人爽 | 超碰人人在线观看 | 日韩欧美xxxx | 99在线观看精品 | 国产不卡在线 | 美女久久久久久久久久久 | 久久99电影| av色影院 | 久色 网 | 久久人人爽人人爽 | 日本久久久精品视频 | 精品免费一区二区三区 | 国产99在线免费 | 国产日韩欧美自拍 | 欧美伦理电影一区二区 | 丁香花在线观看免费完整版视频 | 麻豆国产露脸在线观看 | 中文字幕视频播放 | 久久这里只有精品1 | 久久国内精品视频 | 国产欧美精品一区二区三区四区 | 日韩久久精品一区二区 | 久久久午夜视频 | 亚洲成人av片在线观看 | 99色婷婷 | 日韩色一区二区三区 | 九九99靖品 | 黄色毛片视频 | 日韩xxx视频 | 成人av电影网址 | 九九视频免费在线观看 | 99热99 | 久久超碰97| 在线看片成人 | 免费日韩电影 | 超碰在线免费97 | 成人影音av| 午夜国产一区二区三区四区 | 悠悠av资源片 | 亚洲韩国一区二区三区 | 久久黄色网页 | 97国产超碰在线 | 888av| 日韩a在线看| av不卡网站 | 亚洲国产视频在线 | 一级a毛片高清视频 | 天天草夜夜| 超碰av在线 | 8x成人在线 | 日韩av免费在线看 | 欧美另类xxxx | 欧美在线一二 | 国产精品九九九九九九 | 91九色视频在线播放 | 亚洲资源在线网 | 91色九色| 久久国产精品系列 | 日韩欧美亚洲 | 国产在线一线 | 国产高清在线永久 | 中文字幕在线免费看线人 | 久久一区国产 | 最近av在线 | 日韩av快播电影网 | 中文字幕免费久久 | 久久久电影 | 综合激情| 久久国产欧美日韩精品 | 国产黄色片在线免费观看 | 国产伦精品一区二区三区… | 日韩区在线观看 | 99热精品国产一区二区在线观看 | 在线观看视频你懂得 | 国产精品成人自产拍在线观看 | 在线91精品 | 欧美a级成人淫片免费看 | 五月婷婷六月综合 | 国产又粗又猛又黄视频 | 99久久婷婷国产综合精品 | 18女毛片| 国产黑丝一区二区三区 | 五月天六月丁香 | 亚洲男女精品 | 在线免费国产视频 | 人人爽人人爽av | 日日夜夜精品免费 | 精品自拍网| 91中文字幕永久在线 | 九草视频在线观看 | 日韩一区二区三区免费电影 | 五月婷香 | 片黄色毛片黄色毛片 | 69视频国产 | 久久久www成人免费毛片 | 日韩精品黄 | 特级西西444www大精品视频免费看 | 国产午夜三级一区二区三桃花影视 | 中文字幕不卡在线88 | 成人在线你懂得 | 免费电影一区二区三区 | 一本—道久久a久久精品蜜桃 | 一区二区三区四区五区在线 | 日韩欧美视频二区 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 国产精品丝袜 | 国产精品男女 | 国产精品白虎 | 亚洲精品视频观看 | www.亚洲精品 | 婷婷久久国产 | av.com在线 | 三上悠亚一区二区在线观看 | 久久九九久久 | 91资源在线免费观看 | 色99在线| 日韩在线观看中文 | 五月激情五月激情 | 久久黄色成人 | 91av电影网| 色诱亚洲精品久久久久久 | 久久涩视频 | 欧美一二在线 | 久久久久久亚洲精品 | 人人网人人爽 | 91.精品高清在线观看 | 成人一区二区三区中文字幕 | 91黄色在线视频 | 五月婷婷视频在线 | 精品亚洲欧美一区 | 成年人在线免费看 | www.国产在线观看 | 在线视频亚洲 | www夜夜操| 色中射| 高清免费在线视频 | 久草av在线播放 | 日韩欧美在线不卡 | 国产xx在线| 日本在线观看中文字幕 | 精品免费一区二区三区 | 91桃色免费观看 | 在线一区av | 亚洲精品国产精品国自产观看 | a电影在线观看 | 国产色视频一区二区三区qq号 | 国产不卡在线观看视频 | 精品在线观看一区二区 | 国产91成人在在线播放 | 五月天天色 | 欧美大片大全 | 久草a在线| 国产999视频 | 国产在线p | 精品一区精品二区 | 婷婷激情综合五月天 | 激情开心网站 | 在线观看av免费 | 99精品国产免费久久久久久下载 | 久久精品视频免费 | 色99中文字幕 | 99热这里只有精品久久 | 在线观看免费日韩 | 久久久久国产一区二区三区四区 | 在线观看成年人 | 一区二区欧美日韩 | 日韩免费在线播放 | 999久久久 | 色999视频 | 国产日产欧美在线观看 | 最近中文字幕视频完整版 | 免费日韩在线 | 午夜少妇av | 在线免费观看视频一区 | 婷婷婷国产在线视频 | a久久久久久 | 午夜久久影视 | 国内成人精品2018免费看 | 欧美另类亚洲 | 99精品免费久久久久久日本 | 中国老女人日b | 中文字幕免费观看视频 | 国产精品美女毛片真酒店 | 日韩在线中文字幕 | 亚洲精品中文在线资源 | 色窝资源 | 伊人资源视频在线 | 午夜免费在线观看 | 国产在线观看一区 | 成人午夜剧场在线观看 | 国产h在线播放 | 国产精品亚洲综合久久 | 日韩av一卡二卡三卡 | 久久人人爽人人人人片 | 国产一级h| 天天插狠狠干 | 808电影| 人成在线免费视频 | 色综合天天综合在线视频 | 天天射天天添 | 天天干.com| 日韩欧在线 | 91精品久久久久久久久久入口 | 探花视频在线观看免费 | 狠狠精品| 最近免费中文字幕大全高清10 | 国产精品亚洲片在线播放 | 精品久久久久_ | 国产成人a v电影 | 日韩亚洲在线 | 99 色| 久久久久欠精品国产毛片国产毛生 | 二区三区毛片 | 久久国产精品一国产精品 | 精品国产片 | 91亚洲精品国偷拍自产在线观看 | 国产99久久精品一区二区300 | 一区二区三区在线不卡 | 日韩午夜大片 | 中文国产成人精品久久一 | 夜夜躁日日躁狠狠躁 | 精品99久久久久久 | 中文字幕乱码一区二区 | 一区二区视频在线播放 | 欧美一区二区三区不卡 | 国产黄色观看 | 日韩美在线 | 欧美激情一区不卡 | 天天插狠狠插 | 欧美久久久久久久久中文字幕 | 国产在线中文字幕 | 欧美日韩国产精品一区二区亚洲 | 中文字幕在线观看日本 | 欧美激情另类 | 中文字幕在线观看第一区 | а中文在线天堂 | 超碰人人在线 | 91麻豆免费视频 | 国产超碰97 | 精品福利网 | 一本一本久久aa综合精品 | 日韩视频1区 | 色婷婷av国产精品 | 99麻豆视频 | 麻豆久久久 | 综合色中文 | 成人91免费视频 | 免费a视频在线观看 | 不卡电影一区二区三区 | 91av免费在线观看 | 日韩免费观看一区二区三区 | 欧美成年网站 | 亚洲免费精彩视频 | 国产不卡在线看 | 在线视频精品 | 国产精品一区二区中文字幕 | 鲁一鲁影院 | www.夜夜| 色视频 在线 | 国产亚洲va综合人人澡精品 | 91麻豆精品国产自产在线 | 亚洲精品久久久久久中文传媒 | 欧美大香线蕉线伊人久久 | 免费视频 你懂的 | 国产精品黄色 | 亚洲国产合集 | 欧美成人影音 | 免费看片色 | 国产在线免费 | 99视频在线精品免费观看2 | 国产色久| 亚洲欧美怡红院 | 欧美成人va| 手机看国产毛片 | 操操日| 国产精品美女久久久久久 | 国产成人99av超碰超爽 | 麻豆精品在线视频 | 亚洲精品88欧美一区二区 | 亚洲欧美偷拍另类 | 精品国产视频一区 | 中文字幕资源网在线观看 | 久久成人毛片 | 国产福利中文字幕 | 久久看片网站 | 国产精品av免费 | 日日夜日日干 | 成年人黄色免费视频 | 午夜精品一区二区三区在线观看 | 99热国产在线中文 | 午夜美女福利 | 国产在线综合视频 | 亚洲第一av在线 | 久久99视频免费观看 | 一区电影| 午夜久久久久久久久 | 天天干天天操av | 一级片视频免费观看 | 97超碰在线免费观看 | av爱干| 五月综合网站 | 国产高清成人在线 | 伊人小视频| 国产精品一区二区久久久 | 免费日韩在线 | 中文字幕中文字幕在线中文字幕三区 | 日本中文字幕观看 | 香蕉成人在线视频 | 青青河边草免费直播 | 亚洲国产三级在线观看 | 正在播放国产精品 | 国产乱老熟视频网88av | 99中文字幕| 久久久精品综合 | 涩av在线 | 黄色大片国产 | 国产成人久久精品一区二区三区 | 亚洲久草在线 | 欧美日韩国产伦理 | 国产一级在线视频 | 免费在线观看的av网站 | 欧美激情xxxx | 国产精品麻豆一区二区三区 | 国产96在线 | 永久黄网站色视频免费观看w | 久久久影院一区二区三区 | 国产一级做a爱片久久毛片a | 亚洲影院色 | 黄污视频网站大全 | 最新av免费 | 亚洲最新毛片 | 欧美日韩在线免费观看视频 | 国产成人福利在线 | 99在线视频免费观看 | 中文字幕欲求不满 | 久久综合导航 | 久日精品| www视频免费在线观看 | 免费观看9x视频网站在线观看 | 亚洲综合视频在线 | 美女一区网站 | 一本之道乱码区 | 欧美一区二区日韩一区二区 | 久久综合九色综合久99 | 六月色 | 成人黄色电影视频 | 欧美激情操 | 玖玖在线视频观看 | 久久精品一区二区 | 日批网站在线观看 | 国产视频每日更新 | 久久你懂得 | 国产精品第一页在线观看 | 国产精品伦一区二区三区视频 | 999精品在线 | 精品亚洲视频在线观看 | 狠狠色丁香九九婷婷综合五月 | 亚洲精品色婷婷 | 亚洲视频综合在线 | 又黄又爽又无遮挡免费的网站 | 亚洲最新av在线网站 | 国产高清日韩欧美 | 在线看av的网址 | 欧美一进一出抽搐大尺度视频 | 国产一级三级 | 久久av观看 | 成人小视频免费在线观看 | 日本黄网站 | 中文在线字幕观看电影 | 丝袜美腿一区 | 久久久网页 | 欧美精品国产精品 | 久久国产精品电影 | 91av在线视频免费观看 | 亚洲综合色视频 | 亚洲永久精品一区 | 国产午夜av | 国产精品日韩久久久久 | 奇米网网址 | 久久午夜精品视频 | 99一区二区三区 | 国产香蕉97碰碰碰视频在线观看 | 一区二区三区中文字幕在线观看 | 人人狠| 精品免费观看视频 | 国产精品一区久久久久 | 99午夜| 国产精品成人av电影 | 96av麻豆蜜桃一区二区 | 国产黄色在线网站 | 天天操天天操天天爽 | 综合色中色 | 欧美午夜性 | 免费a视频在线观看 | 国产经典av| 一区二区三区视频在线 | 久久久久在线视频 | 亚洲综合激情 | 中文字幕精品一区久久久久 | 91丨九色丨蝌蚪丨对白 | 日韩一级电影在线 | 欧美一级艳片视频免费观看 | 天天综合视频在线观看 | 成人久久网 | 69精品视频在线观看 | 91亚洲精品国偷拍自产在线观看 | 99久久久国产精品免费观看 | 欧美日韩综合在线 | 久久国产一区 | 欧美精品一区在线 | 国产精品尤物视频 | 国产自制av | 久久久久久久久久久久久国产精品 | 日本中文字幕在线看 | 国产在线高清精品 | 久久久久久国产精品 | 久久草在线精品 | 日日干天天 | 九九九视频在线 | 日韩色一区二区三区 | 91麻豆精品国产91久久久使用方法 | 日日夜夜人人天天 | 午夜精品视频一区二区三区在线看 | 精品国产免费av | 国产三级精品三级在线观看 | 久久这里只有精品1 | 国产精品久久久久久爽爽爽 | 国产高清视频在线播放一区 | 国产成人一区在线 | 国内精品免费久久影院 | 久久免费成人 | 国产一区二区三区免费在线观看 | 激情五月播播久久久精品 | 男女免费av | 免费a v网站| 欧美特一级 | 国产日本三级 | 久久色中文字幕 | 最近免费中文字幕mv在线视频3 | 五月天激情在线 | 中文字幕一区二区三区四区久久 | 天天操天天透 | 在线观看日韩av | 九九精品久久 | 91视频这里只有精品 | 午夜精品一区二区三区在线播放 | 精品国产一区二区三区四 | 成人av片在线观看 | 美女福利视频在线 | 免费观看av | 国产色女人| 91中文视频| 超碰日韩| 国产成人av一区二区三区在线观看 | 五月天激情综合网 | 日韩欧美视频在线观看免费 | 欧美专区国产专区 | 精品日本视频 | 亚洲精品日韩一区二区电影 | 99视频在线观看免费 | 久久中文网 | 亚洲资源在线观看 | 日韩成人免费电影 | 免费高清在线观看成人 | 日本三级香港三级人妇99 | 国产成人在线精品 | 国产精品一区一区三区 | 最近中文字幕高清字幕在线视频 | 国产在线97 | 欧美日韩精品影院 | 婷婷伊人网 | 青青河边草免费 | 久久一区二区三区超碰国产精品 | 日本精油按摩3 | 日韩免费视频一区二区 | 国产精品久久久久久999 | 日本动漫做毛片一区二区 | 99热9| 亚洲毛片久久 |