欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?OpenCV中cv2.minAreaRect實(shí)例解析

 更新時(shí)間:2022年11月18日 11:22:35   作者:求則得之,舍則失之  
minAreaRect的主要作用是獲取一個(gè)多邊形(就是有很多個(gè)點(diǎn)組成的一個(gè)圖形)的最小旋轉(zhuǎn)矩形(旋轉(zhuǎn)矩形就是我們平常見到的水平框帶了角度),這篇文章主要給大家介紹了關(guān)于Python?OpenCV中cv2.minAreaRect的相關(guān)資料,需要的朋友可以參考下

在這個(gè)文章中,我們將學(xué)習(xí)如何在感興趣區(qū)域周圍畫最小面積矩形框。

1.最小面積矩形框

下圖顯示了兩個(gè)矩形框,綠色的是普通矩形框,紅色的是最小面積矩形框??梢园l(fā)現(xiàn),紅色的是旋轉(zhuǎn)矩形。

OpenCV提供了一個(gè)函數(shù)cv2.minAreaRect來尋找最小面積的旋轉(zhuǎn)矩形。將2D點(diǎn)集作為輸入,并返回一個(gè)Box2D結(jié)構(gòu),其中包括以下詳細(xì)信息–(中心(x,y),(寬度、高度)、旋轉(zhuǎn)角度)。

(center(x,y), (width, height), angle of rotation) = cv2.minAreaRect(points)

但是要繪制一個(gè)矩形,我們需要矩形的四個(gè)角,因此為了將Box2D結(jié)構(gòu)轉(zhuǎn)換為4個(gè)角點(diǎn),OpenCV提供了另一個(gè)函數(shù)cv2.boxPoints(),這將Box2D結(jié)構(gòu)作為輸入并返回4個(gè)角點(diǎn)。4個(gè)角點(diǎn)從y最高的點(diǎn)開始按順時(shí)針順序排列。語法如下:

points = cv2.boxPoints(box)

在繪制矩形之前,需要將4個(gè)角點(diǎn)轉(zhuǎn)換為整數(shù)類型??梢允褂胣p.int32或者np.int64(不要使用np.int8,因?yàn)樗试S最大值127并截?cái)啵?。有時(shí),你可能會看到使用了np.int0,不要混淆,這相當(dāng)于np.int32或者np.int64,具體取決于你的系統(tǒng)結(jié)構(gòu)。完整的代碼如下:

rect = CV2.minAreaRect(cnt)
box = cv2.boxPoints(rect)
box = np.int0(box)

得到四個(gè)坐標(biāo)后,就可以輕松繪制圖形了?,F(xiàn)在,讓我們討論一下旋轉(zhuǎn)角度。

2.旋轉(zhuǎn)角度

獲得四個(gè)角點(diǎn)以后,這四個(gè)角點(diǎn)從具有最高y的點(diǎn)開始按順時(shí)針順序排列,如下所示。如果2個(gè)點(diǎn)具有相同的最高y,則最右的點(diǎn)是起點(diǎn)。這些點(diǎn)被編號為0,1,2,3(0開始,3結(jié)束)。

因此,OpenCV的cv2.minAreaRect()給出的旋轉(zhuǎn)角度實(shí)際上是直線(連接起點(diǎn)和終點(diǎn))與水平線之間的角度,如下所示。

因此角度值始終位于[-90, 0)之間。為什么?因?yàn)槿绻麑ο笮D(zhuǎn)超過90°,則使用下一條邊來計(jì)算與水平面的角度。因此計(jì)算出的角度始終位于[-90,0)之間。

請?zhí)砑訄D片描述

實(shí)際角度是對象旋轉(zhuǎn)的角度,計(jì)算出的角度是cv.minAreaRect()返回的角度。

補(bǔ)充:cv2.minAreaRect輸出旋轉(zhuǎn)角度測試

函數(shù)使用方法

min_rect = cv2.minAreaRect(cnt)  
# 輸入?yún)?shù)cnt是通過findContours識別出來的輪廓信息
# 輸出min_rect是一個(gè)元組,其中的結(jié)構(gòu)是最小外接矩形的(中心(x,y),(邊1長度,邊2長度),旋轉(zhuǎn)角度)

簡單測試一下對幾個(gè)角度的矩形和平行四邊形的識別效果

圖片可能較小,建議放大觀看

可以看到,輸出的旋轉(zhuǎn)角度和矩形邊2的選擇有關(guān),具體函數(shù)是按照什么規(guī)則來確定邊1和邊2,我還不清楚,但是根據(jù)上面的實(shí)驗(yàn)結(jié)論,大致可以推測出以下規(guī)律:

  • 規(guī)定水平矩陣為上圖第一個(gè)矩形形狀,即長邊平行于x軸,短邊垂直于x軸,
  • 按住水平矩形的左上角,逆時(shí)針旋轉(zhuǎn)矩形不超過90度 形成的矩形,長邊作為邊2;
  • 按住水平矩形的左上角,順時(shí)針旋轉(zhuǎn)矩形小于90度 形成的矩形,短邊作為邊2。

參考目錄

https://theailearner.com/tag/cv2-minarearect/

總結(jié)

到此這篇關(guān)于Python OpenCV中cv2.minAreaRect的文章就介紹到這了,更多相關(guān)OpenCV cv2.minAreaRect解析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Pytorch轉(zhuǎn)keras的有效方法,以FlowNet為例講解

    Pytorch轉(zhuǎn)keras的有效方法,以FlowNet為例講解

    這篇文章主要介紹了Pytorch轉(zhuǎn)keras的有效方法,以FlowNet為例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python英文文本分詞(無空格)模塊wordninja的使用實(shí)例

    Python英文文本分詞(無空格)模塊wordninja的使用實(shí)例

    今天小編就為大家分享一篇關(guān)于Python英文文本分詞(無空格)模塊wordninja的使用實(shí)例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • 提高python代碼運(yùn)行效率的一些建議

    提高python代碼運(yùn)行效率的一些建議

    這篇文章主要介紹了提高python代碼運(yùn)行效率的一些建議,幫助大家優(yōu)化python代碼,提高運(yùn)行效率,感興趣的朋友可以了解下
    2020-09-09
  • 利用Fn.py庫在Python中進(jìn)行函數(shù)式編程

    利用Fn.py庫在Python中進(jìn)行函數(shù)式編程

    這篇文章主要介紹了利用Fn.py庫在Python中進(jìn)行函數(shù)式編程,基于Scala中的類似風(fēng)格,需要的朋友可以參考下
    2015-04-04
  • Python全棧之路正則函數(shù)

    Python全棧之路正則函數(shù)

    這篇文章主要為大家介紹了Python正則函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • TensorFlow數(shù)據(jù)輸入的方法示例

    TensorFlow數(shù)據(jù)輸入的方法示例

    這篇文章主要介紹了TensorFlow數(shù)據(jù)輸入的方法示例,主要介紹了4種方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • python?pandas數(shù)據(jù)處理教程之合并與拼接

    python?pandas數(shù)據(jù)處理教程之合并與拼接

    在實(shí)際處理數(shù)據(jù)業(yè)務(wù)需求中,我們經(jīng)常會遇到這樣的需求,將多個(gè)表連接起來再進(jìn)行數(shù)據(jù)的處理和分析,類似SQL中的連接查詢功能,下面這篇文章主要給大家介紹了關(guān)于python?pandas數(shù)據(jù)處理教程之合并與拼接的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • python 字符串和整數(shù)的轉(zhuǎn)換方法

    python 字符串和整數(shù)的轉(zhuǎn)換方法

    今天小編就為大家分享一篇python 字符串和整數(shù)的轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python對列表中的各項(xiàng)進(jìn)行關(guān)聯(lián)詳解

    Python對列表中的各項(xiàng)進(jìn)行關(guān)聯(lián)詳解

    這篇文章主要給大家介紹了關(guān)于Python對列表中各項(xiàng)進(jìn)行關(guān)聯(lián)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • Python循環(huán)語句之while循環(huán)和for循環(huán)詳解

    Python循環(huán)語句之while循環(huán)和for循環(huán)詳解

    在Python中,循環(huán)語句用于重復(fù)執(zhí)行一段代碼,直到滿足某個(gè)條件為止,在Python中,有兩種主要的循環(huán)語句:for循環(huán)和while循環(huán),本文就來給大家介紹一下這兩個(gè)循環(huán)的用法,需要的朋友可以參考下
    2023-08-08

最新評論