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

Opencv繪制最小外接矩形、最小外接圓

 更新時(shí)間:2020年07月21日 09:21:46   作者:長纓縛蒼龍  
這篇文章主要為大家詳細(xì)介紹了Opencv繪制最小外接矩形、最小外接圓的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Opencv中求點(diǎn)集的最小外結(jié)矩使用方法minAreaRect,求點(diǎn)集的最小外接圓使用方法minEnclosingCircle。

minAreaRect方法原型:

RotatedRect minAreaRect( InputArray points ); 

輸入?yún)?shù)points是所要求最小外結(jié)矩的點(diǎn)集數(shù)組或向量;

minEnclosingCircle方法原型:

void minEnclosingCircle( InputArray points, 
          CV_OUT Point2f& center, CV_OUT float& radius ); 

第一個(gè)參數(shù)points是所要求最小外結(jié)圓的點(diǎn)集數(shù)組或向量;

第二個(gè)參數(shù)Point2f類型的center是求得的最小外接圓的中心坐標(biāo);

第三個(gè)參數(shù)float類型的radius是求得的最小外接圓的半徑; 

使用minAreaRect和minEnclosingCircle方法分別求最小外接矩和圓:

#include "core/core.hpp" 
#include "highgui/highgui.hpp" 
#include "imgproc/imgproc.hpp" 
#include "iostream" 
 
using namespace std; 
using namespace cv; 
 
int main(int argc,char *argv[]) 
{ 
 Mat imageSource=imread(argv[1],0); 
 imshow("Source Image",imageSource); 
 Mat image; 
 blur(imageSource,image,Size(3,3)); 
 threshold(image,image,0,255,CV_THRESH_OTSU);  
 imshow("Threshold Image",image); 
 
 //尋找最外層輪廓 
 vector<vector<Point>> contours; 
 vector<Vec4i> hierarchy; 
 findContours(image,contours,hierarchy,RETR_EXTERNAL,CHAIN_APPROX_NONE,Point()); 
 
 Mat imageContours=Mat::zeros(image.size(),CV_8UC1); //最小外接矩形畫布 
 Mat imageContours1=Mat::zeros(image.size(),CV_8UC1); //最小外結(jié)圓畫布 
 for(int i=0;i<contours.size();i++) 
 {   
  //繪制輪廓 
  drawContours(imageContours,contours,i,Scalar(255),1,8,hierarchy); 
  drawContours(imageContours1,contours,i,Scalar(255),1,8,hierarchy); 
 
 
  //繪制輪廓的最小外結(jié)矩形 
  RotatedRect rect=minAreaRect(contours[i]); 
  Point2f P[4]; 
  rect.points(P); 
  for(int j=0;j<=3;j++) 
  { 
   line(imageContours,P[j],P[(j+1)%4],Scalar(255),2); 
  } 
 
  //繪制輪廓的最小外結(jié)圓 
  Point2f center; float radius; 
  minEnclosingCircle(contours[i],center,radius); 
  circle(imageContours1,center,radius,Scalar(255),2); 
 
 } 
 imshow("MinAreaRect",imageContours);  
 imshow("MinAreaCircle",imageContours1); 
 waitKey(0); 
 return 0; 

作圖步驟:

1. 對(duì)原始圖像均值濾波并二值化;

2. 求圖像的最外層輪廓;

3.  使用minAreaRect方法求輪廓的最小外接矩形,轉(zhuǎn)化求得矩形的四個(gè)頂點(diǎn)坐標(biāo),并繪制矩形;

4.  使用minEnclosingCircle方法求輪廓的最小外接圓,獲取圓心和半徑信息,并繪制圓;

原始圖像:

最小外接矩:

最小外接圓:

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

普定县| 祥云县| 濮阳市| 鹤岗市| 阳朔县| 水富县| 台东市| 易门县| 九龙城区| 登封市| 兰州市| 饶平县| 康乐县| 阳泉市| 靖边县| 化州市| 通河县| 巫山县| 开原市| 新闻| 东乡| 临西县| 姜堰市| 梅州市| 新河县| 射洪县| 通州市| 资源县| 平武县| 大理市| 岐山县| 青河县| 屯留县| 隆化县| 新巴尔虎右旗| 长寿区| 神农架林区| 南丰县| 江孜县| 沐川县| 克山县|