openCV實現映像的輪廓檢測以及外接矩形__opencv

來源:互聯網
上載者:User

前兩篇博文分別介紹了映像的邊緣檢測和輪廓檢測,本文接著介紹映像的輪廓檢測和輪廓外接矩形:

一、代碼部分:

// extract_contours.cpp : 定義控制台應用程式的進入點。//#include "stdafx.h"#include<cv.h>  #include<highgui.h>  using namespace cv;using namespace std;int _tmain(int argc, _TCHAR* argv[]){    //load src image    string img_name="..\\image_norm\\71253.jpg";    Mat image=imread(img_name);     imshow("src_image",image);    cvWaitKey(0);    //convert into gray image    Mat gray(image.size(),CV_8U);      cvtColor(image,gray,CV_BGR2GRAY);    imshow("gray",gray);    cvWaitKey(0);    //convert into bin image    threshold(gray,gray,128,255,THRESH_BINARY);//轉換成2值映像      imshow("binary",gray);     cvWaitKey(0);    // Detecting contours     vector<vector<Point>> contours;  //定義輪廓集合      vector<Vec4i> hierarchy;     findContours(gray, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);//CV_RETR_EXTERNAL只檢測外部輪廓    // draw black contours on white image      Mat result(gray.size(),CV_8U,Scalar(255));      int index = 0;      for (; index >= 0; index = hierarchy[index][0]) //hierarchy[index][0]表示後一個輪廓    {          Scalar color(rand() & 255, rand() & 255, rand() & 255);          drawContours(result, contours, index, Scalar(0), 1, 8, hierarchy);//描繪字元的外輪廓          Rect rect = boundingRect(contours[index]);//檢測外輪廓          rectangle(result, rect, Scalar(0,0,255), 3);//對外輪廓加矩形框      }        imshow("Contours on white image",result);       cvWaitKey(0);     //draw contours on the original image       Mat original=imread(img_name);      int index_ori = 0;       for (; index_ori >= 0; index_ori = hierarchy[index_ori][0])      {         Scalar color(rand() & 255, rand() & 255, rand() & 255);           //描繪字元的外輪廓         drawContours(original,contours,index_ori,Scalar(255),1,8, hierarchy);           Rect rect = boundingRect(contours[index_ori]);//檢測外輪廓         //對外輪廓加加矩形框           rectangle(original, rect, Scalar(0,0,255), 3);      }    //print contours info    cout<<"The number of external contours:"<<contours.size()<<endl;    imshow("Contours on original image",original);      waitKey(0);     return 0;}

二、程式運行效果圖:

(1)源映像:


(2)灰階映像:

(3)二進位映像:

(4)輪廓在空白映像上顯示:

(5)在原映像上畫出映像的輪廓以及外接矩形:

至此,映像的輪廓檢測以及外接矩形已經實現,歡迎高人指正。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.