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

淺談OpenCV中的新函數(shù)connectedComponentsWithStats用法

 更新時間:2020年07月05日 11:33:45   作者:jsxyhelu  
這篇文章主要介紹了淺談OpenCV中的新函數(shù)connectedComponentsWithStats用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

主要內(nèi)容:對比新舊函數(shù),用于過濾原始圖像中輪廓分析后較小的區(qū)域,留下較大區(qū)域。

關(guān)鍵字:connectedComponentsWithStats

在以前,常用的方法是”是先調(diào)用 cv::findContours() 函數(shù)(傳入cv::RETR_CCOMP 標(biāo)志),隨后在得到的連通區(qū)域上循環(huán)調(diào)用 cv::drawContours() “

比如,我在GOCVHelper中這樣進行了實現(xiàn)

//尋找最大的輪廓
 VP FindBigestContour(Mat src){ 
  int imax = 0; //代表最大輪廓的序號
  int imaxcontour = -1; //代表最大輪廓的大小
  std::vector<std::vector<Point>>contours; 
  findContours(src,contours,CV_RETR_LIST,CV_CHAIN_APPROX_SIMPLE);
  for (int i=0;i<contours.size();i++){
   int itmp = contourArea(contours[i]);//這里采用的是輪廓大小
   if (imaxcontour < itmp ){
    imax = i;
    imaxcontour = itmp;
   }
  }
  return contours[imax];
 }
 //尋找并繪制出彩色聯(lián)通區(qū)域
 vector<VP> connection2(Mat src,Mat& draw){ 
  draw = Mat::zeros(src.rows,src.cols,CV_8UC3);
  vector<VP>contours; 
  findContours(src.clone(),contours,CV_RETR_LIST,CV_CHAIN_APPROX_SIMPLE);
  //由于給大的區(qū)域著色會覆蓋小的區(qū)域,所以首先進行排序操作
  //冒泡排序,由小到大排序
  VP vptmp;
  for(int i=1;i<contours.size();i++){
   for(int j=contours.size()-1;j>=i;j--){
    if (contourArea(contours[j]) < contourArea(contours[j-1]))
    {
     vptmp = contours[j-1];
     contours[j-1] = contours[j];
     contours[j] = vptmp;
    }
   }
  }

在OpenCV3中有了新的專門的函數(shù) cv::connectedComponents() 和函數(shù) cv::connectedComponentsWithStats()

定義:

int cv::connectedComponents (
 cv::InputArrayn image,    // input 8-bit single-channel (binary)
 cv::OutputArray labels,    // output label map
 int    connectivity = 8,  // 4- or 8-connected components
 int    ltype  = CV_32S // Output label type (CV_32S or CV_16U)
 );
int cv::connectedComponentsWithStats (
 cv::InputArrayn image,    // input 8-bit single-channel (binary)
 cv::OutputArray labels,    // output label map
 cv::OutputArray stats,    // Nx5 matrix (CV_32S) of statistics:
               // [x0, y0, width0, height0, area0;
               // ... ; x(N-1), y(N-1), width(N-1),
               // height(N-1), area(N-1)]
 cv::OutputArray centroids,   // Nx2 CV_64F matrix of centroids:
               // [ cx0, cy0; ... ; cx(N-1), cy(N-1)]
 int    connectivity = 8,  // 4- or 8-connected components
 int    ltype  = CV_32S // Output label type (CV_32S or CV_16U)
 );

其中,新出現(xiàn)的參數(shù)

stats:長這樣

分別對應(yīng)各個輪廓的x,y,width,height和面積。注意0的區(qū)域標(biāo)識的是background

而centroids則對應(yīng)的是中心點

而label則對應(yīng)于表示是當(dāng)前像素是第幾個輪廓

例子:

對于圖像

Mat img = cv::imread( "e:/sandbox/rect.png",0); 
 cv::Mat img_edge, labels, img_color, stats,centroids;
 cv::threshold(img, img_edge, 128, 255, cv::THRESH_BINARY);
 bitwise_not(img_edge,img_edge);
 cv::imshow("Image after threshold", img_edge);
 int i, nccomps = cv::connectedComponentsWithStats (
  img_edge, labels,
  stats, centroids
  );
 cout << "Total Connected Components Detected: " << nccomps << endl;
 vector<cv::Vec3b> colors(nccomps+1);
 colors[0] = Vec3b(0,0,0); // background pixels remain black.
 for( i = 1; i < nccomps; i++ ) {
  colors[i] = Vec3b(rand()%256, rand()%256, rand()%256);
  if( stats.at<int>(i, cv::CC_STAT_AREA) < 200 )
   colors[i] = Vec3b(0,0,0); // small regions are painted with black too.
 }
 img_color = Mat::zeros(img.size(), CV_8UC3);
 for( int y = 0; y < img_color.rows; y++ )
  for( int x = 0; x < img_color.cols; x++ )
  {
   int label = labels.at<int>(y, x);
   CV_Assert(0 <= label && label <= nccomps);
   img_color.at<cv::Vec3b>(y, x) = colors[label];
  }
 cv::imshow("Labeled map", img_color);
 cv::waitKey();

注意:

1、對于OpenCV來說,白色代表有數(shù)據(jù),黑色代表沒有數(shù)據(jù),所以圖像輸入之前要轉(zhuǎn)換成”黑底白圖“

2、看labels 和 stats,其中第1 2 6 個的面積小于200

而labels中

完全對的上號,結(jié)果為

以上這篇淺談OpenCV中的新函數(shù)connectedComponentsWithStats用法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 教你用Python為二年級的學(xué)生批量生成數(shù)學(xué)題

    教你用Python為二年級的學(xué)生批量生成數(shù)學(xué)題

    這兩天在學(xué)習(xí)pthon,正好遇到老師布置的暑假作業(yè),需要家長給還在出試卷,下面這篇文章主要給大家介紹了關(guān)于如何用Python為二年級的學(xué)生批量生成數(shù)學(xué)題的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • Python使用BeautifulSoup庫解析HTML基本使用教程

    Python使用BeautifulSoup庫解析HTML基本使用教程

    這篇文章主要介紹了Python使用BeautifulSoup庫解析HTML基本使用教程,文中主要對其適合于制作爬蟲方面的特性進行了解析,需要的朋友可以參考下
    2016-03-03
  • 十一個案例帶你吃透Python函數(shù)參數(shù)

    十一個案例帶你吃透Python函數(shù)參數(shù)

    這篇文章主要通過十一個案例帶大家一起了解一下Python中的函數(shù)參數(shù),文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下
    2022-08-08
  • Python3.13?+Pycharm?開發(fā)環(huán)境配置

    Python3.13?+Pycharm?開發(fā)環(huán)境配置

    本文全面解釋了如何配置Python3.13和PyCharm的開發(fā)環(huán)境,適合初學(xué)者,詳細(xì)介紹了Python安裝步驟、選擇解釋器、常用快捷鍵和推薦插件,強調(diào)了虛擬環(huán)境的重要性,以及如何使用PyCharm進行高效開發(fā),感興趣的可以了解一下
    2024-11-11
  • 學(xué)習(xí)createTrackbar的使用方法及步驟

    學(xué)習(xí)createTrackbar的使用方法及步驟

    這篇文章主要為大家介紹了學(xué)習(xí)createTrackbar的使用方法及步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-10-10
  • python獲取http請求響應(yīng)頭headers中的數(shù)據(jù)的示例

    python獲取http請求響應(yīng)頭headers中的數(shù)據(jù)的示例

    這篇文章主要介紹了python獲取http請求響應(yīng)頭headers中的數(shù)據(jù),本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • Python實現(xiàn)日志備份守護進程的示例

    Python實現(xiàn)日志備份守護進程的示例

    本文主要介紹了Python實現(xiàn)日志備份守護進程的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • Numpy中ndim、shape、dtype、astype的用法詳解

    Numpy中ndim、shape、dtype、astype的用法詳解

    這篇文章主要介紹了Numpy中ndim、shape、dtype、astype的用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 簡單了解python單例模式的幾種寫法

    簡單了解python單例模式的幾種寫法

    這篇文章主要介紹了簡單了解python單例模式的幾種寫法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Python實現(xiàn)快速計算24點游戲的示例代碼

    Python實現(xiàn)快速計算24點游戲的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Python如何實現(xiàn)快速計算24點游戲并獲取表達(dá)式,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-12-12

最新評論

洪雅县| 临清市| 唐河县| 临海市| 永泰县| 峨眉山市| 西峡县| 南木林县| 连城县| 徐州市| 石城县| 都江堰市| 墨竹工卡县| 东莞市| 日照市| 克拉玛依市| 库尔勒市| 大英县| 盈江县| 益阳市| 乡城县| 贺兰县| 舞阳县| 建瓯市| 天长市| 兖州市| 洪雅县| 慈利县| 廉江市| 和平县| 奉化市| 繁峙县| 华容县| 朝阳市| 铅山县| 松溪县| 时尚| 华阴市| 陇西县| 司法| 沐川县|