基于 OpenCV 的图像边缘检测与轮廓分析

文章目录

    • 一、边缘检测方法
      • 1. Sobel算子边缘检测
      • 2. Scharr算子边缘检测
      • 3. Laplacian边缘检测
      • 4. Canny边缘检测
    • 二、图像轮廓分析
      • 1. 轮廓提取基础
      • 2. 轮廓绘制方法
      • 3. 轮廓特征计算
      • 4. 轮廓定位与排序
      • 5. 轮廓几何特征
    • 三、轮廓近似与简化

一、边缘检测方法

1. Sobel算子边缘检测

Sobel算子通过计算图像灰度函数的梯度来检测边缘,分别计算水平和垂直方向的梯度,然后合并得到完整边缘图像。

importcv2 pic=cv2.imread(r"picture_1.jpg",0)pic_x_64=cv2.Sobel(pic,cv2.CV_64F,dx=1,dy=0)pic_x_full=cv2.convertScaleAbs(pic_x_64)pic_y_64=cv2.Sobel(pic,cv2.CV_64F,dx=0,dy=1)pic_y_full=cv2.convertScaleAbs(pic_y_64)pic_xy_sobel_full=cv2.addWeighted(pic_x_full,1,pic_y_full,1,0)

参数分析:

  • cv2.CV_64F:输出图像的深度,64位浮点数类型
  • dx=1, dy=0:计算x方向(水平)梯度
  • dx=0, dy=1:计算y方向(垂直)梯度
  • cv2.convertScaleAbs():将负梯度值转换为绝对值并缩放

2. Scharr算子边缘检测

Scharr算子是Sobel算子的改进版本,对边缘的响应更敏感,能检测到更细微的边缘变化。

pic=cv2.imread(r"picture_1.jpg",cv2.IMREAD_GRAYSCALE)pic_x_64=cv2.Scharr(pic,cv2.CV_64F,dx=1,dy=0)pic_x_full=cv2.convertScaleAbs(pic_x_64)pic_y_64=cv2.Scharr(pic,cv2.CV_64F,dx=0,dy=1)pic_y_full=cv2.convertScaleAbs(pic_y_64)pic_xy_scharr_full=cv2.addWeighted(pic_x_full,1,pic_y_full,1,0)

3. Laplacian边缘检测

Laplacian算子基于二阶导数,能同时检测图像的两个方向的边缘,对噪声更敏感但能检测到更精细的边缘。

pic=cv2.imread(r"picture_1.jpg",cv2.IMREAD_GRAYSCALE)pic_lap=cv2.Laplacian(pic,cv2.CV_64F,ksize=3)pic_lap_full=cv2.convertScaleAbs(pic_lap)

参数分析:

  • ksize=3:拉普拉斯核的大小,必须为正奇数

4. Canny边缘检测

Canny边缘检测是多阶段算法,包括高斯滤波、梯度计算、非极大值抑制和双阈值检测,是效果最好的边缘检测算法之一。

pic=cv2.imread(r"picture_1.jpg",cv2.IMREAD_GRAYSCALE)pic_canny=cv2.Canny(pic,100,150)

参数分析:

  • 100:低阈值,低于此值的边缘被丢弃
  • 150:高阈值,高于此值的边缘被保留为强边缘

二、图像轮廓分析

1. 轮廓提取基础

轮廓提取需要先将图像转换为二值图像,然后使用findContours函数查找轮廓。

# 灰度图处理phone=cv2.imread(r"picture_1.jpg")phone=cv2.resize(phone,dsize=None,fx=0.4,fy=0.4)phone_gray=cv2.cvtColor(phone,cv2.COLOR_BGR2GRAY)# 阈值处理为二值图像ret,phone_binary=cv2.threshold(phone_gray,120,255,cv2.THRESH_BINARY)# 查找轮廓_,contours,hierarchy=cv2.findContours(phone_binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)print(len(contours))

参数分析:

  • cv2.THRESH_BINARY:阈值化类型,大于阈值设为255,小于设为0
  • cv2.RETR_TREE:轮廓检索模式,检索所有轮廓并重建完整的层次结构
  • cv2.CHAIN_APPROX_NONE:轮廓近似方法,存储所有轮廓点

2. 轮廓绘制方法

image_copy=phone.copy()cv2.drawContours(image=image_copy,contours=contours,contourIdx=-1,color=(0,255,0),thickness=2)# 逐个绘制轮廓的替代方法foriinrange(len(contours)):image_copy=cv2.drawContours(image=image_copy,contours=contours,contourIdx=i,color=(0,255,0),thickness=3)cv2.imshow('Contours_show',image_copy)cv2.waitKey(0)

参数分析:

  • contourIdx=-1:绘制所有轮廓,指定索引则绘制单个轮廓

3. 轮廓特征计算

# 轮廓面积计算area_0=cv2.contourArea(contours[0])area_1=cv2.contourArea(contours[1])# 轮廓周长计算length=cv2.arcLength(contours[0],closed=True)# 根据面积筛选轮廓a_list=[]foriincontours:ifcv2.contourArea(i)>10000:a_list.append(i)

4. 轮廓定位与排序

# 根据面积排序获取最大轮廓sortcnt=sorted(contours,key=cv2.contourArea,reverse=True)[0]image_contours=cv2.drawContours(image_copy,[sortcnt],contourIdx=-1,color=(0,0,255),thickness=3)

5. 轮廓几何特征

cnt=contours[8]# 最小外接圆(x,y),r=cv2.minEnclosingCircle(cnt)phone_circle=cv2.circle(phone,center=(int(x),int(y)),radius=int(r),color=(0,255,0),thickness=2)# 最小外接矩形x,y,w,h=cv2.boundingRect(cnt)phone_rectangle=cv2.rectangle(phone,pt1=(x,y),pt2=(x+w,y+h),color=(0,255,0),thickness=2)

三、轮廓近似与简化

轮廓近似可以减少轮廓点的数量,同时保持轮廓的基本形状,常用于减少计算复杂度和数据存储。

phone=cv2.imread('phone.png')phone_gray=cv2.cvtColor(phone,cv2.COLOR_BGR2GRAY)ret,phone_thresh=cv2.threshold(phone_gray,120,255,cv2.THRESH_BINARY)# 兼容不同OpenCV版本的轮廓查找contours=cv2.findContours(phone_thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)[-2]# 轮廓近似epsilon=0.01*cv2.arcLength(contours[0],closed=True)approx=cv2.approxPolyDP(contours[0],epsilon,closed=True)print(contours[0].shape)# 原始轮廓点数print(approx.shape)# 近似后轮廓点数# 绘制近似轮廓phone_new=phone.copy()image_contours=cv2.drawContours(phone_new,[approx],contourIdx=-1,color=(0,255,0),thickness=3)

参数分析:

  • epsilon:近似精度参数,通常取轮廓周长的百分比
  • closed=True:指示轮廓是封闭的

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

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

相关文章

GTE中文语义相似度镜像解析|CPU友好+可视化仪表盘+开箱即用

GTE中文语义相似度镜像解析|CPU友好可视化仪表盘开箱即用 1. 项目背景与核心价值 1.1 中文语义相似度的技术需求 在自然语言处理(NLP)领域,语义相似度计算是构建智能问答、文本去重、推荐系统和信息检索等应用的核心能力。传统…

如何高效实现中文语音转写?试试科哥定制版FunASR大模型镜像

如何高效实现中文语音转写?试试科哥定制版FunASR大模型镜像 在当前AI技术快速发展的背景下,语音识别(ASR)已成为智能客服、会议记录、视频字幕生成等场景中的关键能力。然而,许多开发者在部署中文语音识别系统时面临诸…

吐血推荐专科生必用AI论文工具TOP10

吐血推荐专科生必用AI论文工具TOP10 专科生必备AI论文工具测评:2026年权威榜单出炉 随着AI技术在学术领域的广泛应用,越来越多的专科生开始借助智能写作工具提升论文效率与质量。然而,面对市场上琳琅满目的AI论文工具,如何选择真…

如何高效实现中文文本相似度分析?GTE轻量级镜像一键部署指南

如何高效实现中文文本相似度分析?GTE轻量级镜像一键部署指南 1. 中文语义相似度的应用场景与挑战 在自然语言处理(NLP)的实际工程中,中文文本相似度计算是许多智能系统的核心能力。无论是智能客服中的意图匹配、推荐系统的语义关…

GTE中文语义相似度镜像发布|CPU优化、开箱即用的本地化部署

GTE中文语义相似度镜像发布|CPU优化、开箱即用的本地化部署 1. 背景与痛点:为什么需要本地化语义相似度服务? 在自然语言处理(NLP)的实际应用中,文本语义相似度计算是许多核心场景的基础能力,…

FunASR语音识别WebUI详解|集成speech_ngram_lm_zh-cn提升中文识别准确率

FunASR语音识别WebUI详解|集成speech_ngram_lm_zh-cn提升中文识别准确率 1. 背景与技术价值 1.1 中文语音识别的挑战 在当前AI大模型快速发展的背景下,语音识别作为人机交互的重要入口,其准确性直接影响用户体验。尤其是在中文场景下&…

基于GTE中文语义相似度服务的RAG实战|轻量级CPU部署与WebUI可视化

基于GTE中文语义相似度服务的RAG实战|轻量级CPU部署与WebUI可视化 1. 引言:为什么RAG需要高质量语义相似度计算? 在当前大模型应用落地的关键阶段,检索增强生成(Retrieval-Augmented Generation, RAG) 已…

GTE中文向量模型实战:轻量级CPU镜像助力热点聚类提速

GTE中文向量模型实战:轻量级CPU镜像助力热点聚类提速 1. 背景与挑战:传统聚类方法的性能瓶颈 在舆情分析、新闻聚合、用户评论归类等实际业务场景中,热点聚类是一项关键任务。其目标是将语义相近的内容自动归为一类,帮助运营人员…

CV-UNet Universal Matting镜像核心优势解析|附单图与批量抠图实操案例

CV-UNet Universal Matting镜像核心优势解析|附单图与批量抠图实操案例 1. 技术背景与行业痛点 图像抠图(Image Matting)是计算机视觉中一项关键的细粒度分割任务,其目标是从原始图像中精确提取前景对象,并生成带有透…

救命神器9个一键生成论文工具,本科生毕业论文轻松搞定!

救命神器9个一键生成论文工具,本科生毕业论文轻松搞定! AI 工具如何让论文写作变得轻松 对于本科生而言,撰写毕业论文是一项既重要又充满挑战的任务。从选题到开题,再到资料收集、大纲搭建、初稿撰写和最终润色,每一个…

基于CV-UNet一键抠图实战|快速实现单张与批量图像去背景

基于CV-UNet一键抠图实战|快速实现单张与批量图像去背景 1. 引言:智能抠图的工程化落地需求 在电商、广告设计、内容创作等领域,图像去背景(抠图) 是一项高频且关键的任务。传统手动抠图效率低下,而基于深…

数字员工是什么?AI销冠系统与AI提效软件系统的独特优势是什么?

数字员工通过自动化和智能化的工作流程,为企业的业务流程优化、成本降低和效率提升提供了强有力的支持。借助AI销冠系统,数字员工能够高效处理客户咨询与销售环节,显著减少人力投入,提高工作效率。企业可以通过自动化外呼、即时响…

Zookeeper添加SASL安全认证 修复方案

#作者:张桐瑞 文章目录1修复背景2修复方案说明3配置流程3.1停止zookeeper服务3.2Zookeeper添加SASL参数3.2.1配置解析3.3配置jaas密码文件3.4添加启动参数3.5启动zookeeper服务3.6访问测试4Kafka连接zookeeper服务端配置4.1未配置身份认证4.2停止kafka服务4.3 配置身…

语义相似度计算实战|基于GTE中文模型镜像快速部署WebUI与API

语义相似度计算实战|基于GTE中文模型镜像快速部署WebUI与API 1. 背景与核心价值 在当前的自然语言处理(NLP)应用中,语义相似度计算已成为搜索、推荐、问答系统和RAG(检索增强生成)等场景的核心能力。传统…

学霸同款9个AI论文网站,专科生轻松搞定毕业论文!

学霸同款9个AI论文网站,专科生轻松搞定毕业论文! AI 工具让论文写作不再难 在当前的学术环境中,越来越多的学生开始借助 AI 工具来提升论文写作的效率与质量。尤其是在面对毕业论文时,专科生往往面临时间紧、资料少、思路不清晰等…

如何高效完成图片去背景?CV-UNet大模型镜像助你秒级抠图

如何高效完成图片去背景?CV-UNet大模型镜像助你秒级抠图 在图像处理、电商展示、广告设计等场景中,图片去背景(即图像抠图) 是一项高频且关键的任务。传统手动抠图耗时费力,而基于AI的智能抠图技术正逐步成为主流。本…

从入门到实用:CV-UNet镜像助力高精度Alpha通道提取

从入门到实用:CV-UNet镜像助力高精度Alpha通道提取 1. 技术背景与核心价值 在图像处理、视觉设计和AI内容生成领域,精确的前景提取与Alpha通道生成是关键基础能力。传统抠图方法依赖人工标注或简单阈值分割,效率低且难以应对复杂边缘&#…

突破瓶颈!大数据行式存储性能提升之道

突破瓶颈!大数据行式存储性能提升之道——从原理到实践的优化指南 摘要 行式存储(Row-based Storage)是大数据场景中最经典的存储模式之一,其顺序写入效率高、数据完整性好的特点,使其成为批量加载、实时数据摄入等场景的首选。然而,当数据规模增长到TB甚至PB级时,行式…

低成本单发单收激光测距传感器方案 低成本单发单收激光测距全套方案,包括原理图、源代码、PCB、...

低成本单发单收激光测距传感器方案 低成本单发单收激光测距全套方案,包括原理图、源代码、PCB、BOM、光学部分资料,结构、特殊元件数据手册及供应商联系方式,提供调试技术文档。 全套方案已成功打板验证,实现0.05~50m测量范围&…

CV-UNet大模型镜像应用解析|附通用抠图WebUI同款实战案例

CV-UNet大模型镜像应用解析|附通用抠图WebUI同款实战案例 1. 技术背景与核心价值 随着AI图像处理技术的快速发展,智能抠图已成为电商、设计、内容创作等领域的刚需功能。传统手动抠图效率低、成本高,而基于深度学习的自动抠图方案正逐步成为…