【Opencv】繪製最小外接矩形、最小外接圓
Opencv繪製最小外接矩形、最小外接圓
Opencv中求點集的最小外結矩使用方法minAreaRect,求點集的最小外接圓使用方法minEnclosingCircle。
minAreaRect方法原型:
RotatedRect minAreaRect( InputArray points );
輸入引數points是所要求最小外結矩的點集陣列或向量;
minEnclosingCircle方法原型:
void minEnclosingCircle( InputArray points, CV_OUT Point2f& center, CV_OUT float& radius );
第一個引數points是所要求最小外結圓的點集陣列或向量;
第二個引數Point2f型別的center是求得的最小外接圓的中心座標;
第三個引數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); //最小外結圓畫布 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); //繪製輪廓的最小外結矩形 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); } //繪製輪廓的最小外結圓 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. 對原始影象均值濾波並二值化;
2. 求影象的最外層輪廓;
3. 使用minAreaRect方法求輪廓的最小外接矩形,轉化求得矩形的四個頂點座標,並繪製矩形;
4. 使用minEnclosingCircle方法求輪廓的最小外接圓,獲取圓心和半徑資訊,並繪製圓;
原始影象:
最小外接矩:
最小外接圓:
相關推薦
【Opencv】繪製最小外接矩形、最小外接圓
Opencv繪製最小外接矩形、最小外接圓 Opencv中求點集的最小外結矩使用方法minAreaRect,求點集的最小外接圓使用方法minEnclosingCircle。 minAreaRect方法原型: RotatedRect minAreaRect( Input
0035-OpenCV環境下繪製輪廓的外接多邊形、最小立式矩形、最小外接圓
OpenCV提供了函式approxPolyDP()、boundRect()、minEnclosingCircle()分別計算給定點集的外接多邊形,最小立式矩形和最小外接圓,下面分別給出這三個函式的原型和引數意義。approxPolyDP函式(計算外接多邊形): C++: void approxPol
opencv中最小外接矩形2 的演算法
之前用到opencv最小外接矩形去表示一個類橢圓形的高度,特此記錄備查。 對給定的 2D 點集,尋找最小面積的包圍矩形,使用函式: CvBox2DcvMinAreaRect2(constCvArr*points,CvMemStorage*storage=NULL);
Opencv獲取最小外接矩形——minAreaRect
//!computes the minimal rotated rectangle for a set of points RotatedRect minAreaRect(InputArray points);//計算一些列點的最小外接矩形,帶角度資訊 C+
OpenCV找出最小外接矩形
慣例先放結果吧 測試圖片盜取自: 地址 (2333) 其實就一行關鍵的程式碼: RotatedRect rect = minAreaRect(contours[i]);下面就是簡單粗暴的程
BZOJ 1185: [HNOI2007]最小矩形覆蓋-旋轉卡殼法求點集最小外接矩形(面積)並輸出四個頂點坐標-備忘板子
article ref https color 旋轉 blank spa def abs 來源:旋轉卡殼法求點集最小外接矩形(面積)並輸出四個頂點坐標 BZOJ又崩了,直接貼一下人家的代碼。 代碼: 1 #include"stdio.h"
(五)建築物多邊形化簡系列——最小外接矩形的獲取
最小外接矩形問題是在給出一個多邊形(或一群點),求出面積最小且外接多邊形的矩形的問題。這個問題看起來並不難,但是具體實現並不簡單。除了呼叫現有的公開庫之外,這裡給出一種簡單且易理解的方法。 演算法的主要思想是: (1)先實現多邊形的簡單外接矩形的演算法。簡單外接矩形是指邊平
C/C++ 影象處理(16)------影象輪廓の最小外接矩形
有時做影象處理,會遇到影象中大部分資訊是冗餘的情況,以下圖為例: 假設圖中黑色部分才是我們需要研究的物件,則外圍的一堆白色是我們希望去掉的,這個時候用最小外接矩形來框住黑色部分,進而擷取該部分的資
最小外接矩形(ROI)
//---------------------------------【標頭檔案、名稱空間包含部分】---------------------------- // 描述:包含程式所使用的標頭檔案和名稱空間 //-------------------------------
【OpenCV】圖像增強---灰度變換、直方圖均衡化
test 增強 映射 display 得到 .cpp scalar pic 重要 圖像增強的目的:改善圖像的視覺效果或使圖像更適合於人或機器的分析處理。通過圖像增強,可以減少圖像噪聲,提高目標與背景的對比度,也可以增強或抑制圖像中的某些細節。 -------------
26、【opencv入門】輪廓查找與繪制(4)——正外接矩形
waitkey font 定義 truct 形狀 esp 圖片 namespace open 一、簡介 1、使用特定形狀的輪廓包圍 在實際應用中, 經常會有將檢測到的輪廓用多邊形表示出來的需求, 提取包圍輪廓的多邊形也方便我們做進一步分析, 輪廓包圍主要有一下幾種: 輪
opencv求最小外接矩陣
求最小外接矩陣的基本原理: 獲取點簇最開始的minx,maxx,miny,maxy確定最初的外接矩形,求外接矩形的面積,然後對點簇進行旋轉,按照下面公式即可: 旋轉之後,求出新的minx,maxx,miny,maxy,計算此時的面積,直到面積達到最小,對應的即為最小外接矩形。 關於
Opencv 輪廓 逼近多邊形曲線 正外接矩形 外接最小矩形
環境 win7 + vs2015 + Opencv2.4.13 對影象輪廓點進行多邊形擬合 void approxPolyDP( InputArray curve, OutputArray appro
opencv 顯示最小面積的外接矩形,並求該矩形的長和寬以及四個角的位置
#include "cv.h" #include "highgui.h" #include <stdio.h> #include <math.h> int main(int argc,char** argv) { IplImage *src,*gr
MT【61】含參數二次函數最大最小值
tco pla 最大 back inline 我們 最小 但是 alt 評:此類題目在高考中作為壓軸題也曾考過,一般通性通法都如上面的做法,但是我們如果可以站在包絡的角度,很多問題將變得很清晰:MT【61】含參數二次函數最大最小值
【重磅】App內可直接打開微信小程序,新增內容安全接口等
獲得 指定 targe 吐槽 第三方服務 除了 圖片 開發 提前 今晚,微信又公布了幾項微信小程序新能力: 微信小程序上線App直接打開小程序功能 內容安全接口、插件詳情頁等多種能力接連更新上線 一、App直接打開小程序之前微信已經開放過相關能力,可以實
【OpenCV】一些常用小類彙總 (size等)
Backto OpenCV Index size OpenCV 中 size 直接給定數值的建構函式是 Size(double width, double height) 竟然不是和 Mat 一致的 (height, width), 簡直匪夷所思.
【LeetCode】154. 尋找旋轉排序陣列中的最小值 II 結題報告 (C++)
原題地址:https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array-ii/description/ 題目描述: 假設按照升序排序的陣列在預先未知的某個點上進行了旋轉。 ( 例如,陣列 [0,1,2,4,5,
【LeetCode】153. 尋找旋轉排序陣列中的最小值 結題報告 (C++)
原題地址:https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/description/ 題目描述: 假設按照升序排序的陣列在預先未知的某個點上進行了旋轉。 ( 例如,陣列 [0,1,2,4,5,6,7
【opencv】c++繪製文字
cv::putText(img,std::to_string(i),p,0,2,cv::Scalar(0,0,255)); // 0為字型,2為字號 void cv::putText( cv::Mat& img, // 待繪製的影象