最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用opencv實現(xiàn)車道線檢測實戰(zhàn)代碼

 更新時間:2022年03月18日 15:11:24   作者:liu_jie_bin  
這篇文章主要介紹了opencv車道線檢測實戰(zhàn),效果非常逼真,代碼簡單易懂,對opencv車道線檢測實戰(zhàn)代碼感興趣的朋友一起看看吧

效果

 void lane_detection(cv::Mat &src, cv::Mat &dst)
 {
     dst = cv::Mat::zeros(src.size(),src.type());
     cv::Mat grid =cv::Mat::zeros(src.size(),src.type());
     int iStep = 25;
     int iNUmsX = src.cols / iStep;
     int inUmsY = src.rows / iStep;

     for(int i = 1; i <= inUmsY; i++)
     {
         int yPos = i * iStep + src.cols / 5;
         cv::Point2d pt1,pt2;
         int iOffset = 10;
         pt1.x = 0 + iOffset;
         pt1.y = yPos;
         pt2.x = src.cols - iOffset;
         pt2.y = yPos;
         cv::line(grid,pt1,pt2,cv::Scalar(255), 1, cv::LINE_4);
     }
     for(int i = 1; i <= iNUmsX; i++)
         int xPos = i * iStep;
         pt1.x = xPos;
         pt1.y = 0 + iOffset + src.rows / 5;
         pt2.x = xPos;
         pt2.y = src.rows - iOffset;
     cv::imshow("grid", grid);
     cv::Mat bitNot;
     cv::bitwise_and(src, grid, bitNot);
     cv::Mat add = cv::Mat::zeros(bitNot.rows, bitNot.cols,bitNot.type());
     int iDiffTh = 200;
     
     QTime timer;
     timer.start();
     //#pragma omp parallel for num_threads(10)
      for (int i = 1; i < bitNot.rows - 1; i++)
      {
          for (int j = 1; j < bitNot.cols - 1; j++)
          {
              int iValueX = (int)bitNot.at<uchar>(i, j);
              int iValueXPre = (int)bitNot.at<uchar>(i-1, j);
              int iValueXNext = (int)bitNot.at<uchar>(i+1, j);
              int iValueY = (int)bitNot.at<uchar>(i, j);
              int iValueYPre = (int)bitNot.at<uchar>(i, j-1);
              int iValueYNext = (int)bitNot.at<uchar>(i, j+1);
              if((iValueX - iValueXPre > iDiffTh && iValueX - iValueXNext > iDiffTh) ||
                  (iValueY - iValueYPre > iDiffTh && iValueY - iValueYNext > iDiffTh))
              {
                  add.at<uchar>(i, j) = 255;
              }
          }
      }
      qDebug()<<"process time: "<<timer.elapsed()<<" ms";
      //形態(tài)學(xué)預(yù)處理
      cv::Mat matDilate;
      cv::Mat k33 = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(9, 9), cv::Point(-1, -1));
      cv::morphologyEx(add, matDilate, cv::MORPH_DILATE, k33, cv::Point(-1, -1), 3);
      cv::imshow("matDilate", matDilate);
    //cv::bitwise_not(src, matDilate, matRoi);
    cv::Mat matRoi;
    cv::bitwise_and(src, matDilate, matRoi);
    cv::imshow("matRoi", matRoi);
    cv::Mat matThresh;
    cv::threshold(matRoi, matThresh, 200, 255,cv::THRESH_BINARY);
    cv::imshow("matThresh", matThresh);
    //std::vector<std::vector<cv::Point>> contours;
    //cv::findContours(matThresh,contours,)
    std::vector<std::vector<cv::Point> > contoursDefect;
    std::vector<cv::Vec4i> hierarchyDefect;
    cv::Mat canves;
    cv::cvtColor(src, canves,cv::COLOR_RGBA2RGB);
    cv::findContours(matThresh, contoursDefect, hierarchyDefect, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_NONE);
    for (size_t i = 0; i < contoursDefect.size(); i++)
    {
     cv::Mat contour(contoursDefect.at(i));//第i個輪廓
     double area = contourArea(contour);
     if (area >=  50)
         cv::Moments moment;//矩
         moment = moments(contour, false);
         cv::Point2d pt1;
         double m00 = moment.m00 + 0.01;
         pt1.x = moment.m10 / m00;//計算重心橫坐標(biāo)
         pt1.y = moment.m01 / m00;//計算重心縱坐標(biāo)
         cv::drawContours(canves, contoursDefect, i, cv::Scalar(255, 255, 0), -1);
    }
    cv::imshow("canves", canves);
    cv::waitKey(0);
 }
 void test_lane_detection()
     int i = 0;
     while(1)
         cv::Mat src;
         QString  dir("D:\\QtProject\\Opencv_Example\\gen_grid_region\\scene_");
         QString path;
         if(i>9)  path =  QString("%1%2%3").arg(dir).arg(i++).arg(".png");
         else path = QString("%1%2%3%4").arg(dir).arg("0").arg(i++).arg(".png");
         cout<<path.toStdString();
         src = cv::imread(path.toStdString(), cv::IMREAD_GRAYSCALE);
         if (src.empty()) {
             cout << "Cannot load image" << endl;
             return;
         }
         cv::imshow("src", src);
         cv::Mat dst;
         lane_detection(src, dst);

到此這篇關(guān)于opencv車道線檢測實戰(zhàn)的文章就介紹到這了,更多相關(guān)opencv車道線檢測內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++之IO類,文件輸入輸出,string流練習(xí)題

    C++之IO類,文件輸入輸出,string流練習(xí)題

    這篇文章主要介紹了C++實現(xiàn)IO類的幾道數(shù)組練習(xí)題,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • C++實現(xiàn)通訊錄管理系統(tǒng)

    C++實現(xiàn)通訊錄管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Qt實現(xiàn)TCP客戶端和服務(wù)器通訊程序

    Qt實現(xiàn)TCP客戶端和服務(wù)器通訊程序

    這篇文章主要為大家詳細(xì)介紹了Qt實現(xiàn)TCP客戶端和服務(wù)器通訊程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • c++ 中vector 常見用法

    c++ 中vector 常見用法

    這篇文章主要給大家分享的是c++ 中vector 常見用法,,vector有兩個參數(shù),一個是size,表示當(dāng)前vector容器內(nèi)存儲的元素個數(shù),一個是capacity,表示當(dāng)前vector在內(nèi)存中申請的這片區(qū)域所能容納的元素個數(shù),下面來看看文章的詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • 在while中使用cin>>a?為條件及注意事項說明

    在while中使用cin>>a?為條件及注意事項說明

    這篇文章主要介紹了在while中使用cin>>a?為條件及注意事項說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 簡單談?wù)凜++中指針與引用的區(qū)別

    簡單談?wù)凜++中指針與引用的區(qū)別

    指針和引用在C++中很常用,但是對于它們之間的區(qū)別很多初學(xué)者都不是太熟悉,下面來談?wù)勊麄?者之間的區(qū)別和用法
    2017-04-04
  • C語言責(zé)任鏈模式示例代碼

    C語言責(zé)任鏈模式示例代碼

    大家好,本篇文章主要講的是C語言責(zé)任鏈模式示例代碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • 優(yōu)先隊列(priority_queue)的C語言實現(xiàn)代碼

    優(yōu)先隊列(priority_queue)的C語言實現(xiàn)代碼

    本文簡要介紹一種基于數(shù)組二叉堆實現(xiàn)的優(yōu)先隊列,定義的數(shù)據(jù)結(jié)構(gòu)和實現(xiàn)的函數(shù)接口說明如下
    2013-10-10
  • 平衡二叉樹AVL操作模板

    平衡二叉樹AVL操作模板

    這篇文章主要介紹了平衡二叉樹AVL操作模板,需要的朋友可以參考下
    2014-02-02
  • C++實現(xiàn)動態(tài)順序表(vector)

    C++實現(xiàn)動態(tài)順序表(vector)

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)動態(tài)順序表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05

最新評論

渭源县| 始兴县| 宁强县| 银川市| 新宁县| 克什克腾旗| 太仆寺旗| 竹山县| 舟曲县| 山东省| 绍兴市| 六盘水市| 中西区| 介休市| 大石桥市| 阳信县| 武汉市| 曲靖市| 察隅县| 根河市| 台安县| 沧州市| 左云县| 兴和县| 彰化县| 万全县| 三原县| 彩票| 崇文区| 杂多县| 阿克陶县| 唐山市| 米易县| 湘乡市| 大石桥市| 交城县| 天水市| 阿克| 康乐县| 渝中区| 新建县|