python -opencv 边缘检测

python -opencv 边缘检测

边缘检测步骤:

第一步:读取图像为灰度图
第二步:进行二值化处理
第三步:使用cv2.findContours对二值化图像提取轮廓
第三步:将轮廓绘制到图中

代码如下:

from ctypes.wintypes import SIZE
from multiprocessing.pool import IMapUnorderedIterator
import cv2
import copy
import math
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import ospath=r'D:\learn\photo\cv\res\ballon.png'img=cv2.imread(path,1)
img_gray=cv2.imread(path,0)def cv_show(name,img):cv2.imshow(name,img)#cv2.waitKey(0),接收0,表示窗口暂停cv2.waitKey(0)#销毁所有窗口cv2.destroyAllWindows()#cv_show('img_gray',img_gray)#进行二值化处理
ret,binary=cv2.threshold(img_gray,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)#cv_show('dist',dist)def BGR_TO_RGB(img):return img[:,:, ::-1];
#检测轮廓countourClose,hierrachyclose=cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)print("len(countourclose) is",len(countourClose))#countourClose 轮廓坐标信息
#hierrachyclose 轮廓之间的层次结构#背景图
result=np.zeros(img.shape,np.uint8)#绘制轮廓边框
for  i in range(len(countourClose)):cnt=countourClose[i]#近似多边形#第一个参数,表示精度,单位是像素#第二个像素表示是否闭合approx=cv2.approxPolyDP(cnt,3,True)#绘制轮廓#-1表示绘制所有轮廓#5线条粗细cv2.drawContours(result,[approx],-1,(0,0,255),5)#绘制矩形x,y,w,h=cv2.boundingRect(cnt)cv2.rectangle(result,(x,y),(x+w,y+h),(0,255,0),5)#绘制最小外接圆(x,y),r=cv2.minEnclosingCircle(cnt)center=(int(x),int(y))r=int(r)cv2.circle(result,center,r,(255,255,255),5)#plt.figure(figsize=(400,600))print(img_gray.shape)
print(img_gray[0][0])
plt.subplot(221)
#img_gray=BGR_TO_RGB(img_gray,'gray')
plt.imshow(img_gray,'gray')
plt.title('img_gray')plt.subplot(222)
plt.imshow(binary,'gray')
plt.title('binary')
plt.subplot(223)
plt.imshow(result,'gray')
plt.title('result')plt.show()
os.system("pause")

运行结果如下:

在这里插入图片描述

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

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

相关文章

聊一聊go的单元测试

文章目录 概要一、测试框架1.1、testing1.2、stretchr/testify1.3、smartystreets/goconvey1.4、cweill/gotests 二、打桩和mock2.1、打桩2.2、mock2.2.1、mockgen 三、基准测试和模糊测试3.1、基准测试3.2、模糊测试 四、总结4.1、小结4.2、其他4.3、参考资料 概要 软件测试是…

前端入门(二)Vue2到Vue3

文章目录 Vue简介Vue的特点Hello, Vue Vue基本语法模板语法数据绑定(v-bind、v-model)el与data的两种写法 数据代理实现原理Object.defineProperty()数据代理 事件处理(v-on:click / click)事件修饰符键盘事件(略&…

万户OA upload任意文件上传漏洞复现

0x01 产品简介 万户OA ezoffice是万户网络协同办公产品多年来一直将主要精力致力于中高端市场的一款OA协同办公软件产品,统一的基础管理平台,实现用户数据统一管理、权限统一分配、身份统一认证。统一规划门户网站群和协同办公平台,将外网信息…

信息系统项目管理师-采购管理论文提纲

快速导航 1.信息系统项目管理师-项目整合管理 2.信息系统项目管理师-项目范围管理 3.信息系统项目管理师-项目进度管理 4.信息系统项目管理师-项目成本管理 5.信息系统项目管理师-项目质量管理 6.信息系统项目管理师-项目资源管理 7.信息系统项目管理师-项目沟通管理 8.信息系…

配置 `PostgreSQL` 与 `Keepalived` 以实现高可用性

配置 PostgreSQL 与 Keepalived 以实现高可用性通常包括以下步骤: PostgreSQL 配置 安装 PostgreSQL:在两台服务器上安装相同版本的 PostgreSQL。 sudo yum install postgresql-server postgresql-contrib初始化数据库:在两台服务器上初始化…

OSG文字-显示汉字 (1)

OSG文字 适当的文字信息对于显示场景信息是非常重要的。在 OSG中,osgText 提供了向场景中添加文字的强大功能,由于有第三方插件 FreeType 的支持,它完全支持TrueType字体。 读者可能对 FreeType和TrueType还不太了解,下面进行具体…

在windows Server安装Let‘s Encrypt的SSL证书

1、到官网(https://certbot.eff.org/instructions?wswebproduct&oswindows)下载 certbot客户端。 2、安装客户端(全部默认安装即可) 3、暂停IIS中的网站 开始菜单中找到并运行“Certbot”,输入指令: …

新一代车载以太网传输技术研讨会(AEM)顺利圆满举行

时间定格在2023年11月17日,新一代车载以太网传输技术研讨会在东莞国际会展中心举行。来自相关的的企业几百家。当然,深圳维信仪器作为主办方(AEM线束测试仪中国区总平台)举优质的线束测试设备,不论是手持线束测试&…

Vue3 源码解读系列(十二)——指令 directive

directive 定义:本质就是一个 JavaScript 对象,对象上挂着一些钩子函数。 实现:在元素的生命周期中注入代码。 指令注册 注册原理:把指令的定义保存到相应的地方,未来使用的时候可以从保存的地方拿到。 全局注册与…

Swagger-----knife4j框架

简介 使得前后端分离开发更加方便,有利于团队协作 接口的文档在线自动生成,降低后端开发人员编写接口文档的负担 功能测试 Spring已经将Swagger纳入自身的标准,建立了Spring-swagger项目,现在叫Springfox。通过在项目中引入Spri…

mysql innodb buffer pool缓冲池命中率和命中了哪些表?—— 筑梦之路

环境说明 mysql 5.7及以上 公式 # InnoDB缓冲区缓存的命中率计算公式100 * (1 - (innodb_buffer_pool_reads/innodb_buffer_pool_read_requests ))注意: 对于具有大型缓冲池的系统,既要关注该比率,也要关注OS页面读写速率的变化可以更好地跟踪差异。s…

【BUG库】 记录自己学习工作中遇到的程序BUG

BUG库 CGoGO语言环境配置相关go mod algorithm环境相关vscode -- 保存vscode -- 注释 在这篇博客中 我会记录自己在学习和工作中遇到的一系列bug C Go GO语言环境配置相关 go mod go: go.mod file not found in current directory or any parent directory; see ‘go help …

苹果(Apple)公司的新产品开发流程(一)

目录 简介 ANPP CSDN学院推荐 作者简介 简介 苹果这家企业给人的长期印象就是颠覆和创新。 而流程跟创新似乎是完全不搭边的两个平行线: 流程是一个做事的标准,定义了权力的边界,对应人员按章办事;而创新的主旋律是发散&am…

实时监控电脑屏幕的软件丨同时查看12台电脑屏幕

Hello 大家好 又见面啦 今天给大家推荐两款比较实用的监控电脑使用情况、屏幕的软件! 软件一 实时性能监控 从软件名就可以看出来,这是一款电脑性能监测工具。它可以实时监测内存、CPU、磁盘占用情况,也能一键结束进程,给电脑提…

德语B级SampleAcademy

德语B级 一, 反身代词(1)A 主语和宾语一致(2)D 双宾语,主语与直接宾语不一致(3), 补充单词(4)真反身代词(5)假反身代词(6)真假反身代词(7)相互反身(8)非反身#反身#相互反身 二,Nomen…

Java8实战-总结48

Java8实战-总结48 CompletableFuture:组合式异步编程对多个异步任务进行流水线操作实现折扣服务使用 Discount 服务 CompletableFuture:组合式异步编程 对多个异步任务进行流水线操作 实现折扣服务 你的“最佳价格查询器”应用现在能从不同的商店取得…

【zabbix监控三】zabbix之部署代理服务器

一、部署代理服务器 分布式监控的作用: 分担server的几种压力解决多机房之间的网络延时问题 1、搭建proxy主机 1.1 关闭防火墙,修改主机名 systemctl disbale --now firewalld setenforce 0 hostnamectl set-hostname zbx-proxy su1.2 设置zabbix下…

3 redis实现一个消息中间件

使用list实现一个队列,可以从左侧入队,也可以从右侧入对 即可以从左侧读取,也可以从右侧读取 1、Lindex Lindex 命令用于通过索引获取列表中的元素 也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的…

2023前端大厂高频面试题之CSS篇(2)

系列文章: 2023前端大厂高频面试题之JavaScript篇(1) 2023前端大厂高频面试题之JavaScript篇(2) 2023前端大厂高频面试题之JavaScript篇(3) 2023前端大厂高频面试题之JavaScript篇(4) 2023前端大厂高频面试题之HTML篇 2023前端大厂高频面试题之CSS篇(1) 2023前端大厂高频面试题…

new/delete 和malloc/free的区别

C中: 创建单个数据空间: char *ch new char; delete ch; ch NULL; 创建多个数据空间: char *ch new char[4]; delete [] ch; ch NULL; C语言中: 创建单个数据空间: char *ch malloc(sizeof(char)); fre…