小案例:利用python估算最外轮廓区域面积

一、需求:

给出一张图片,估算最外轮廓区域面积

二、步骤:

1、读取图片信息

2、利用open-cv,自适应分割图片

3、提取最外轮廓像素值

4、利用像素值标记轮廓

5、计算轮廓面积

三、代码:

import cv2# 读取图片信息
img_path = r"D:\Desktop\img\out1.png"# 读取文件
mat_img = cv2.imread(img_path)
mat_img2 = cv2.imread(img_path, cv2.CV_8UC1)# 自适应分割
dst = cv2.adaptiveThreshold(mat_img2, 210, cv2.BORDER_REPLICATE, cv2.THRESH_BINARY_INV, 3, 10)
# 提取轮廓
contours, heridency = cv2.findContours(dst, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 标记轮廓
cv2.drawContours(mat_img, contours, -1, (255, 0, 255), 3)x_list = []
y_list = []
for c in contours:for i in c:x_list.append(i[0][0])y_list.append(i[0][1])print(min(x_list), max(x_list))
print(min(y_list), max(y_list))# 计算轮廓面积
area = 0
for i in contours:area += cv2.contourArea(i)
print(area)# 图像show
cv2.imshow("window1", mat_img)
cv2.waitKey(0)

四、结果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ApplicationContext容器的设计原理

1.在ApplicationContext容器中,我们以常用的FileSystemXmlApplicationContext的实现为例来说明ApplicationContext容器的设计原理。 2.在FileSystemXmlApplicationContext的设计中,我们看到ApplicationContext应用上下文的主要功能已经在FileSystemXmlAp…

使用c++查看linux服务器某个进程正在使用的内存_Linux 系统管理

1、进程管理介绍什么是进程程序是人使用计算机语言编写的,可以实现一定功能,并且可以执行的代码集合进程是正在执行当中的程序。程序在执行时,执行人的权限和属性、以及程序的代码都会被加载进内存,操作系统给这个进程分配一个 ID…

小案例:利用Python写个教师常用的点名软件

一、需求: 教师上课常用的点名软件 二、python库安装: openpyxl是Python中用于读写excel文件tkinter是Python中GUI编程非常好用的库,而且是标准库,不需要安装,导入即可使用random库是Python中用于实现随机功能的库&…

python contains类似函数_01--实际工作中,python基础理念和数据处理

1.工作中遇到的python坑1.1 合并文件问题:正常将文件依次读取并append时,莫名出现很多空行。解决:在append前删除空行:data_tmp 1.2 重复数据行问题: append多日文件时,由于人工误操作,容易存在…

小案例:利用Python实现图片上下、左右翻转

一、前言需求: 对图片进行操作,使图片上下、左右翻转 二、函数库: 使用Pillow模块提供的transpose()方法可以让图像翻转,上下翻转,或者左右翻转 三、操作说明: 原图如下: 图片上下翻转代码…

LeetCode 1736. 替换隐藏数字得到的最晚时间

文章目录1. 题目2. 解题1. 题目 给你一个字符串 time ,格式为 hh:mm(小时:分钟),其中某几位数字被隐藏(用 ? 表示)。 有效的时间为 00:00 到 23:59 之间的所有时间,包括 00:00 和…

【SSH进阶之路】一步步重构MVC实现Struts框架——封装业务逻辑和跳转路径(四)...

目录: 【SSH进阶之路】Struts基本原理 实现简单登录(二) 【SSH进阶之路】一步步重构MVC实现Struts框架——从一个简单MVC开始(三) 【SSH进阶之路】一步步重构MVC实现Struts框架——封装业务逻辑和跳转路径&#xff08…

实用工具:推荐Pycharm常用的几款插件

相信对于不少的Python程序员们都是用Pycharm作为开发时候的IDE来使用的,今天来分享几个好用到爆的Pycharm插件,在安装上之后,你的编程效率、工作效率都能够得到极大地提升。 Pycharm插件安装教程 打开file---settings---plugins&#xff0c…

dataframe 添加一行_R语言Data Frame数据框常用操作

来源 | R友舍Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的。Data Frame每一列有列名,每一行也可以指定行名。如果不指…

LeetCode 1737. 满足三条件之一需改变的最少字符数(计数)

文章目录1. 题目2. 解题1. 题目 给你两个字符串 a 和 b ,二者均由小写字母组成。 一步操作中,你可以将 a 或 b 中的 任一字符 改变为 任一小写字母 。 操作的最终目标是满足下列三个条件 之一 : a 中的 每个字母 在字母表中 严格小于 b 中…

oracle对查询结果求和_oracle基础知识分享

原文链接:https://page.om.qq.com/page/OO2PXCD6VZ6CVqLqjpU6uShg0以下是本人整理的ORACLE学习的一些基本的语法知识,如有不对的地方,望大家批评指正,如有转载请注明出处:一、ORACLE完整性约束:1.NOT NULL …

Docker官方案例学习

下面以官方的一个demo学习学习。。。 1、进入windows版docker界面,新建文件夹pp 2、进入pp,在目录下新建三个文件 dockerfile.txt,app.py,requirements.txt 2.1 dockerfile文件 # Use an official Python runtime as a parent…

LeetCode 1738. 找出第 K 大的异或坐标值(DP)

文章目录1. 题目2. 解题947 / 3851&#xff0c;前 24.6%2533 / 11282&#xff0c;前 22.5% 1. 题目 给你一个二维矩阵 matrix 和一个整数 k &#xff0c;矩阵大小为 m x n 由非负整数组成。 矩阵中坐标 (a, b) 的 值 可由对所有满足 0 < i < a < m 且 0 < j <…

小案例:基于python的动态时钟,带十二时辰和经络养身

一、前言 1、仅用来研究学习使用。 2、除正常显示时钟外&#xff0c;还可以实时显示当前对应的时辰&#xff0c;和经络养身提示。 3、适合辅助上班族来养生 二、效果如下&#xff1a; 三、源码如下&#xff1a; 动态时钟附带十二时辰显示import turtle # 导入绘图海龟模块 …

【海淘域名】GoDaddy账户被锁定后的解决方法

转载自【美国海淘网】http://www.usahaitao.com/Experience/Detail_2886.html通过ICANN申诉顺利的从国内无良奸商(35互联与商务中国,小编的域名在这2个大的服务商手中。不过开始都是图便宜&#xff0c;不懂得国内域名管理的黑幕&#xff0c;所以从其下属的皮包第三方手里购入域…

回归分析常数项t值没有显著异于零怎么办_线性回归分析思路总结!简单易懂又全面!...

线性回归分析是一种研究影响关系的方法&#xff0c;在实际研究里非常常见。不管你有没有系统学习过&#xff0c;对于线性回归&#xff0c;相信多少都有那么一点了解。即使如此&#xff0c;在实际分析时&#xff0c;还是会碰到很多小细节&#xff0c;让我们苦思冥想困扰很久&…

LeetCode 1733. 需要教语言的最少人数(哈希+枚举)

文章目录1. 题目2. 解题1. 题目 在一个由 m 个用户组成的社交网络里&#xff0c;我们获取到一些用户之间的好友关系。 两个用户之间可以相互沟通的条件是他们都掌握同一门语言。 给你一个整数 n &#xff0c;数组 languages 和数组 friendships &#xff0c;它们的含义如下&a…

在c#中用mutex类实现线程的互斥_面试官经常问的synchronized实现原理和锁升级过程,你真的了解吗...

本篇文章主要从字节码和JVM底层来分析synchronized实现原理和锁升级过程&#xff0c;其中涉及到了简单认识字节码、对象内部结构以及ObjectMonitor等知识点。阅读本文之前&#xff0c;如果大家对synchronized关键字的基本使用还不是很了解的话&#xff0c;推荐阅读笔者之前的一…

TensorFlow 2.x GPU版在conda虚拟环境下安装步骤

先下载安装驱动&#xff1a;https://www.nvidia.cn/Download/index.aspx?langcn&#xff0c;版本要求 WSL cuda 驱动 https://developer.nvidia.com/cuda/wsl 下载安装 anaconda&#xff0c;管理虚拟环境&#xff1a;https://www.anaconda.com/products/individual&#xff0…

如何通过网络将文件传输到嵌入式设备_嵌入式系统 Boot Loader技术内幕,带你完全了解Boot Loader...

一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次&#xff1a;1. 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选)&#xff0c;和 Boot Loader 两大部分。2. Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。3. 文件系统。包括根文件系统和建…