1. 程式人生 > >Opencv獲取最小外接矩形——minAreaRect

Opencv獲取最小外接矩形——minAreaRect

//!computes the minimal rotated rectangle for a set of points
RotatedRect minAreaRect(InputArray points);//計算一些列點的最小外接矩形,帶角度資訊

C++: RotatedRect minAreaRect(InputArray points)
Python: cv2.minAreaRect(points) → retval
C: CvBox2D cvMinAreaRect2(const CvArr* points, CvMemStorage* storage=NULL )
Python: cv.MinAreaRect2(points, storage=None) → Box2D

Parameters:points-

Input vector of 2D points ,stored in:
1: std::vector<>or Mat (c++ interface)
2:CvSeq * or CvMat *(C interface)
3:Nx2 numpy array(python interface)

測試案例:

    vector<Vec4i> hierarchy;
    vector<vector<Point>> contours;
    findContours(src, contours, hierarchy, RETR_LIST, CHAIN_APPROX_SIMPLE, Point(0
, 0)); vector<vector<Point>>::iterator iter = contours.begin(); RotatedRect resultRect; while (iter != contours.end()) { resultRect = minAreaRect(*iter);//獲取輪廓的最小外接矩形 Point2f pt[4]; resultRect.points(pt);//獲取最小外接矩形的四個頂點座標 //繪製最小外接矩形
line(src, pt[0], pt[1], Scalar(255, 0, 0), 2, 8); line(src, pt[1], pt[2], Scalar(255, 0, 0), 2, 8); line(src, pt[2], pt[3], Scalar(255, 0, 0), 2, 8); line(src, pt[3], pt[0], Scalar(255, 0, 0), 2, 8); cout << "*******************************" << endl; cout << "X座標" << resultRect.center.x << "Y座標" << resultRect.center.y << "偏移角度"<<resultRect.angle<<endl; cout << "*******************************" << endl; }

相關推薦

Opencv獲取矩形——minAreaRect

//!computes the minimal rotated rectangle for a set of points RotatedRect minAreaRect(InputArray points);//計算一些列點的最小外接矩形,帶角度資訊 C+

opencv矩形2 的演算法

之前用到opencv最小外接矩形去表示一個類橢圓形的高度,特此記錄備查。 對給定的 2D 點集,尋找最小面積的包圍矩形,使用函式: CvBox2DcvMinAreaRect2(constCvArr*points,CvMemStorage*storage=NULL);

(五)建築物多邊形化簡系列——矩形獲取

最小外接矩形問題是在給出一個多邊形(或一群點),求出面積最小且外接多邊形的矩形的問題。這個問題看起來並不難,但是具體實現並不簡單。除了呼叫現有的公開庫之外,這裡給出一種簡單且易理解的方法。   演算法的主要思想是: (1)先實現多邊形的簡單外接矩形的演算法。簡單外接矩形是指邊平

Opencv】繪製矩形外接圓

Opencv繪製最小外接矩形、最小外接圓 Opencv中求點集的最小外結矩使用方法minAreaRect,求點集的最小外接圓使用方法minEnclosingCircle。 minAreaRect方法原型: RotatedRect minAreaRect( Input

OpenCV找出矩形

慣例先放結果吧 測試圖片盜取自:  地址  (2333) 其實就一行關鍵的程式碼: RotatedRect rect = minAreaRect(contours[i]);下面就是簡單粗暴的程

BZOJ 1185: [HNOI2007]矩形覆蓋-旋轉卡殼法求點集矩形(面積)並輸出四個頂點坐標-備忘板子

article ref https color 旋轉 blank spa def abs 來源:旋轉卡殼法求點集最小外接矩形(面積)並輸出四個頂點坐標 BZOJ又崩了,直接貼一下人家的代碼。 代碼: 1 #include"stdio.h"

opencv矩陣

求最小外接矩陣的基本原理: 獲取點簇最開始的minx,maxx,miny,maxy確定最初的外接矩形,求外接矩形的面積,然後對點簇進行旋轉,按照下面公式即可: 旋轉之後,求出新的minx,maxx,miny,maxy,計算此時的面積,直到面積達到最小,對應的即為最小外接矩形。 關於

C/C++ 影象處理(16)------影象輪廓の矩形

有時做影象處理,會遇到影象中大部分資訊是冗餘的情況,以下圖為例: 假設圖中黑色部分才是我們需要研究的物件,則外圍的一堆白色是我們希望去掉的,這個時候用最小外接矩形來框住黑色部分,進而擷取該部分的資

矩形(ROI)

//---------------------------------【標頭檔案、名稱空間包含部分】---------------------------- // 描述:包含程式所使用的標頭檔案和名稱空間 //-------------------------------

點集矩演算法

作者:馮浩 時間: 2007.10.11 文件型別/出處:NOI專刊 題目簡述: 給出一個平面點集S,求一個面積最小的矩形使其包含S所有的點。 預備知識: 在求解這道題之前我們先要了解一些關於凸包的知識。 什麼是凸包?簡單地說,對於一個

連通域的多邊形

在MATLAB中,使用roipoly來選擇一個感興趣區域(ROI),該函式將生成一個多邊形的ROI。函式的用法為:1、B=roipoly(f,c,r);其中f為要處理的影象,c和r分別是ROI的頂點對應的列座標和行座標(按順序排列)。定點座標的原點在左上角。B為一幅二值影象,

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

opencv minAreaRect獲取方框函式總結

不得不說,opencv的函式還是很豐富的,最近專案需求發現opencv還有minAreaRect這個函式,這個函式的功能就是: @param points Input vector of 2D points, stored in std::vector\<\> or Mat */ CV_

AreEngine 求面積的矩形,非IEnvelope,表達不清楚了

1,總是會得到一些奇奇怪怪的要求,求一個面對象的外接最小面積的矩形,和ArcToolBox中的Mininum Bounding Geometry功能下的RECTANGLE_BY_AREA想似。具體看下圖:   區別如上圖所示:IEnvelope 得到的是下圖所示,需要的是第一種 (只是記錄一

hdu 5251 矩形面積 (旋轉卡殼求面積矩形

矩形面積 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 417    Accepted Submission

26、【opencv入門】輪廓查找與繪制(4)——正矩形

waitkey font 定義 truct 形狀 esp 圖片 namespace open 一、簡介 1、使用特定形狀的輪廓包圍   在實際應用中, 經常會有將檢測到的輪廓用多邊形表示出來的需求, 提取包圍輪廓的多邊形也方便我們做進一步分析, 輪廓包圍主要有一下幾種: 輪

openCV實現影象的輪廓檢測以及矩形

前兩篇博文分別介紹了影象的邊緣檢測和輪廓檢測,本文接著介紹影象的輪廓檢測和輪廓外接矩形: 一、程式碼部分: // extract_contours.cpp : 定義控制檯應用程式的入口點。 // #include "stdafx.h" #include&

opencv包絡矩形

RotatedRect cv::minAreaRect ( InputArray points ) 小demo cv::Mat inputMat( cvPoionts2d.size()/*std::vector<cv::Point2f&

採用opencv計算矩形

img = cv2.imread(‘d://2.png’, 0) ret, thresh = cv2.threshold(img, 167, 255, 0) contours, hierarch