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.mzph.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…