cv2.error: opencv(4.4.0)_【從零學習OpenCV 4】輪廓面積與長度

888557b900c26f8789cd0987a2e766c9.png

本文首發于“小白學視覺”微信公眾號,歡迎關注公眾號 本文作者為小白,版權歸人民郵電出版社發行所有,禁止轉載,侵權必究!


經過幾個月的努力,小白終于完成了市面上第一本OpenCV 4入門書籍《OpenCV 4開發詳解》。為了更讓小伙伴更早的了解最新版的OpenCV 4,小白與出版社溝通,提前在公眾號上連載部分內容,請持續關注小白。

輪廓面積

輪廓面積是輪廓重要的統計特性之一,通過輪廓面積的大小可以進一步分析每個輪廓隱含的信息,例如通過輪廓面積區分物體大小識別不同的物體。輪廓面積是指每個輪廓中所有的像素點圍成區域的面積,單位為像素。OpenCV 4提供了檢測輪廓面積的contourArea()函數,該函數的函數原型在代碼清單7-15中給出。

代碼清單
  • contour:輪廓的像素點
  • oriented:區域面積是否具有方向的標志,true表示面積具有方向性,false表示不具有方向性,默認值為不具有方向性的false。

該函數用于統計輪廓像素點圍成區域的面積,函數的返回值是統計輪廓面積的結果,數據類型為double。函數第一個參數表示輪廓的像素點,數據類型為vector或者Mat,相鄰的兩個像素點之間逐一相連構成的多邊形區域即為輪廓面積的統計區域。連續的三個像素點之間的連線有可能在同一條直線上,因此為了減少輸入輪廓像素點的數目,可以只輸入輪廓的頂點像素點,例如一個三角形的輪廓,輪廓中可能具有每一條邊上的所有像素點,但是在統計面積時可以只輸入三角形的三個頂點。函數第二個參數是區域面積是否具有方向的標志,參數為true時表示統計的面積具有方向性,輪廓頂點順時針給出和逆時針給出時統計的面積互為相反數;參數為false時表示統計的面積不具有方向性,輸出輪廓面積的絕對值。

為了了解該函數的使用方法,在代碼清單7-16中給出了統計輪廓面積的示例程序。程序中給出一個直角三角形輪廓的三個頂點以及斜邊的中點,統計出的輪廓面積與三角形的面積相等,同時統計圖7-16中每個輪廓的面積,程序的運行結果在圖7-18給出。

代碼清單

ad924d6d064d52dc0d12db94daaac668.png
圖7-18 myContourArea.cpp程序輸出結果

輪廓長度

輪廓的周長也是輪廓重要的統計特性之一,輪廓的周長雖然無法直接反應輪廓區域的大小和形狀,但是可以與輪廓面積結合得到關于輪廓區域的更多信息,例如某個區域的面積與周長平方的比值為十六分之一時該區域為正方形。OpenCV 4提供了用于檢測輪廓周長或者曲線長度的arcLength()函數,該函數的函數原型在代碼清單7-17中給出。

代碼清單
  • curve:輪廓或者曲線的2D像素點。
  • closed:輪廓或者曲線是否閉合標志,true表示閉合。

該函數能夠統計輪廓或者曲線的長度,函數返回值為統計長度,單位為像素,數據類型為double。函數的第一個參數是輪廓或者曲線的2D像素點,數據類型為vector或者Mat。函數的第二個參數是輪廓或者曲線是否閉合的標志,true表示閉合。

函數統計的長度是輪廓或者曲線相鄰兩個像素點之間連線的距離,例如計算三角形三個頂點A、B和C構成的輪廓長度時,并且函數第二個參數為true時,統計的長度是三角形三個邊AB、BC和CA的長度之和;當參數為false時,統計的長度是由A到C三個點之間依次連線的距離長度之和,即AB和BC的長度之和。

為了了解該函數的使用方法,在代碼清單7-18中給出統計輪廓長度的示例程序。程序中給出一個直角三角形輪廓的三個頂點以及斜邊的中點,分別利用arcLength()函數統計輪廓閉合情況下的尺度和非閉合情況下的長度,同時統計圖7-16中每個輪廓的長度,程序的運行結果在圖7-19給出。

代碼清單

34a41a33daae5f083ed5b5e49ccf1a6c.png
圖7-19 myArcLength.cpp程序輸出結果

經過幾個月的努力,市面上第一本OpenCV 4入門書籍《OpenCV 4開發詳解》將春節后由人民郵電出版社發行。如果小伙伴覺得內容有幫助,希望到時候多多支持!

關注小白的小伙伴可以提前看到書中的內容,我們創建了學習交流群,歡迎各位小伙伴添加小白微信加入交流群,添加小白時請備注“學習OpenCV 4”。

https://u.wechat.com/MJ-57nVtXgxUyL3dTwWd014 (二維碼自動識別)

270ae5ce62611e0f2139a3491e9ac72a.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534145.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534145.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534145.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux 腳本批量刪除,Linux Shell使用Bash腳本批量刪除文件

PHP每天生成一個存有系統要刪除的臨時文件的.out文件列表,由bash腳本逐行通過讀取.out文件(每一行代表一個待刪除的文件)挨個刪除,代碼如下(dl.sh): #!/bin/bash # Shell script utility to delete file. # You can call script as follows, …

python自定義安裝哪些不需要_【1】python模塊:自定義模塊的3種導入方式

一、定義 模塊就是用一堆的代碼實現了一些功能的代碼的集合,通常一個或者多個函數寫在一個.py文件里,而如果有些功能實現起來很復雜,那么就需要創建n個.py文件,這n個.py文件的集合就是模塊。如果不懂可以先看下面這篇博文&#xf…

linux mysql數據庫日志關閉,linux 怎樣恢復mysql數據庫日志

1、用dump命令備份數據庫。# mysqldump -u root -p dbfile > dbfile.sql2、用rsync從新服務器獲得備份的文件(SCP或WGET也可以)。# rsync -avr rootmyolddbserver:/home/mydumpfolder/dbfile.sql3、登陸新服務器的mysql客戶端。# mysql -u root -p4. 建立數據庫。mysql> …

linux劃分root_vg,為Linux添加新硬盤,劃分LVM分區

1、為VM添加兩塊SCSI硬盤→→完成后重啟VM→→運行fdisk -l,可以看到系統自動將添加的硬盤識別為/dev/sdb和dev/sdc.2、分區對sdb和sdc進行分區,並調整分區類型為8e(LVM類型),sdb劃分為sdb1,sdb2,sdc劃分為sdc1,sdc2,sdc3[rootpromote ~]# fdisk /dev/sd…

python文件輸入符_python讀入文件時加r的作用?

r’xxx’ 的含義 **加 r 會把字符串轉變為非轉義的原始字符串。**比較常用。 例如:print(D:\\test\\test.txt)print(rD:\\test\\test.txt)print(rD:\test\test.txt)123 結果是:D:\test\test.txt D:\\test\\test.txt D:\test\test.txt123 從結果看來&…

linux kvm切換器,KVM切換器是什么,看懂這一篇就夠

原標題:KVM切換器是什么,看懂這一篇就夠在服務器機房的機架不便于存放多個顯示器和鍵盤的空間里,KVM切換器起著重要的作用。KVM切換器能從本地或遠程監視與控制多個計算機與服務器,由鍵盤、鼠標和顯示屏組成的KVM控制臺是最方便和…

alien指令 linux,使用alien命令讓deb包和rpm包互相轉換

OS version: CentOS7 / Debian9發現alien這個命令時很驚喜,之前在debian上安裝etcd找不到安裝包感覺很不科學,有了alien命令事情一下就變簡單了。這里以etcd為例,將etcd從rpm包轉換成deb包,然后傳送到debian機器上安裝。(這個命令…

linux 信號_Linux信號量(1)-SYSTEM V

?信號量概念信號量本質上是一個計數器(不設置全局變量是因為進程間是相互獨立的,而這不一定能看到,看到也不能保證引用計數為原子操作),用于多進程對共享數據對象的讀取,它和管道有所不同,它不以傳送數據為…

kali linux 截圖位置,Kali Linux中使用shutter截圖工具 | CN-SEC 中文網

摘要在Kali 2017以前的版本中默認有一款截圖工具--screenshot,升級到2017版后找不到了,下面介紹一款同樣好用的截圖工具---shutter在Kali 2017以前的版本中默認有一款截圖工具--screenshot,升級到2017版后找不到了,下面介紹一款同…

python畫圖庫哪個好_機器學習基礎5--python畫圖庫matplotlib(上)

圖像是我們最直觀的數據表達方式,python的matplotlib庫可以用來畫圖。下面來簡單總結下matplotlib的使用方法。上篇講matplot畫圖中用到的基礎對象,包括圖像Figure,平面曲線Line2D,坐標軸Axes,圖例Legend, 注解Annotat…

64位 linux 32位連接器,32位匯編程序在64位Ubuntu上的匯編和連接

本教程使用的操作系統是Ubuntu Linux 18.04 LTS版本,匯編器是GNU AS(簡稱as),連接器是GNU LD(簡稱ld)。以下是一段用于檢測CPU品牌的匯編小程序(cpuid2.s):.section .dataoutput:.asciz "The processor Vendor ID is %s\n".section…

python怎么加圖片_python中如何保存圖片

一提到數字圖像處理,可能大多數人就會想到matlab,但matlab也有自身的缺點: 1、不開源,價格貴 2、軟件容量大。一般3G以上,高版本甚至達5G以上。 3、只能做研究,不易轉化成軟件。python學習網,大…

linux用rsync實現同步,Linux下使用rsync實現主備機代碼同步

rsync 分為客戶端和服務端軟件版本:rsync-2.6.9軟件下載地址:http://rsync.samba.org/ftp/rsync/服務端安裝過程1.tar -xzvf rsync-2.6.9.tar.gz #解壓縮安裝文件2.cd rsync-2.6.93. ./configure --prefix/usr/local/rsync #配置安裝目錄為/usr/local/…

python可以在多平臺運行 體現了_Python:使用異常處理來判斷運行的平臺

try:importtermios, TERMIOS               1exceptImportError:try:importmsvcrt                  2exceptImportError:try:from EasyDialogs importAskPassword   3exceptImportError: getpass "default_getpass"      …

python精通時間_學Python需要多久能學會?精通Python需要多長時間?

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓 嚴格意思上的說,Python其實是一個腳本語言,編程語言多種多樣,但是卻有開源和閉源之分,Python就是一種開放核心源代碼編程語言,其開發代碼的效率非常高,代碼編…

linux 文檔編輯器 word,linux下vi編輯器命令大全

常用命令linux下vi編輯器命令大全來源:考試大 【學而優則進,考試大以成!】 2007年8月14日  文本編輯器是所有計算機系統中最常用的一種工具。UNIX下的編輯器有ex,sed和vi等,其中,使用最為廣泛的是vi,而vi…

西門子觸摸屏修改ip地址_基于博途V15 西門子S7-1200與觸摸屏一個簡單的例子

本篇是《基于博途V15 西門子S7-1200 ...》系列的后續篇,看懂本篇文章之前請大家關注我,然后查找相關文章,學習之后再學習此篇。也請專業領域的大神批評指正。感謝大家關注與支持!步驟:1. 創建項目創建名稱為PLC_HMI2. …

mac os和linux和安卓,在我的安卓手機里,安裝Windows和macOS系統

原標題:在我的安卓手機里,安裝Windows和macOS系統不知道各位差友還記不記得,世超前陣子分享過一款無需越獄,就能讓 iPhone 和 iPad 運行其它系統的虛擬機軟件 UTM。當時世超正是靠著這個軟件,才得以讓 iPad 成功跑上了…

python連接mysql代碼_Python3連接MySQL(pymysql)轉賬代碼

# coding:utf8 import sys # Python3 采用pymysql 連接MySQL import pymysql class TransferMoney(object): def __init__(self,conn): self.connconn def check_acct_available(self,acctid): cursor self.conn.cursor() try: sql"select * from account where acctid%s…