day10 - 使用canny算子进行人像勾勒

news2024/11/19 0:52:04

本期主要介绍canny算子,了解canny算子的流程以及各个流程的原理和实现。

完成本期内容,你可以:

  • 了解canny算子的流程和应用

若要运行案例代码,你需要有:

  • 操作系统:Ubuntu 16 以上 或者 Windows10

  • 工具软件:VScode 或者其他源码编辑器

  • 硬件环境:无特殊要求

  • 核心库:python 3.6.13, opencv-contrib-python 3.4.11.39,opencv-python 3.4.2.16

点击下载源码


canny算子函数

OpenCV将Canny算子封装成了cv2.Canny()方法。

函数原型: edges = cv2.Canny( image, threshold1, threshold2[, apertureSize[, L2gradient]])
dst为输出图像。

参数描述如下:

  • edges:计算得到的边缘图像。
  • image:8位输入图像。
  • threshold1:处理过程中的第一个阈值。
  • threshold2:处理过程中的第二个阈值。
  • apertureSize:Sobel算子的孔径大小。
  • L2gradient:计算图像梯度强度(gradient magnitude)的标识。

canny算子流程

① 高斯滤波对图像进行平滑处理;

② Sobel算子计算图像的梯度幅值;

③ 对图像的梯度幅值进行非极大值抑制;

④ 滞后阈值处理进行边缘连接。


具体步骤

1. 创建项目结构

创建项目名为使用canny算子进行人像勾勒,项目根目录下新建code文件夹储存代码,新建dataset文件夹储存数据,项目结构如下:

使用canny算子进行人像勾勒                 # 项目名称
├── code                               # 储存代码文件
├── dataset                            # 储存数据文件

注:如项目结构已存在,无需再创建。

2. 使用canny算子进行人像勾勒

  1. code文件夹下创建edge.py文件;

  2. 导入所需的库,OpenCV;

  3. 读取dataset文件夹下的girl.png图片,并进行展示,标题为original ;

  4. 使用阈值为128 200的canny算子进行人像勾勒,并展示结果;

  5. 使用阈值为32 128的canny算子进行人像勾勒,并展示结果。

代码实现

# 导入所需模块 OpenCV
import cv2
# 读取图片
img = cv2.imread("../dataset/girl.png", 0)
cv2.imshow("original", img)

# 使用阈值为128 200的canny算子进行人像勾勒
r1 = cv2.Canny(img,128,200)
cv2.imshow("canny_128_200", r1)

# 使用阈值为32 128的canny算子进行人像勾勒
r2 = cv2.Canny(img,32,128)
cv2.imshow("canny_32_128", r2)

cv2.waitKey(0)
cv2.destroyAllWindows()

请添加图片描述

处理效果

3. 分步实现canny边缘检测(了解)

  1. code文件夹下找到expand.py文件;
  2. 根据canny边缘检测的流程来读懂代码,了解实现每一步操作的具体流程。

本期通过使用canny算子实现了人像的勾勒,巩固了canny算子的原理和实现。

点击下载源码

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

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

相关文章

Kubernetes(k8s)集群安装部署

一. 环境说明 名称IP系统配置主控节点192.168.136.11Rocky9.22核4G工作节点1192.168.136.12Rocky9.22核4G工作节点2192.168.136.13Rocky9.22核4G 二. 系统先决条件配置(所有节点) 2.1 关闭防火墙 防火墙可能会导致重复的防火墙规则和破坏kube-proxy,…

如何编写一个测试方案?---她是这样做的!

1、背景 工作上的项目规范要求:测试排期大于3D的项目要编写测试方案。调研了部分同学的情况,在此流程规范要求的基础上,对于需求的逻辑复杂或技术实现复杂等情况也会准备测试方案。 我个人主要负责OMS系统测试,它是整个履约流转中…

HTTPS的加密技术——中间人攻击

HTTPS的加密技术 文章目录 HTTPS的加密技术认识HTTPS对称加密和非对称加密①只使用对称加密方式②只使用非对称加密③两种加密算法联合使用🧛‍♂️中间人攻击📖引入证书总结https加密技术🐱‍👤 http和 https之间相差一个字母&a…

基于springboot+mybatis-plus+mysql+vue在线考试系统

基于springbootMybatis-plusmysqlvue在线考试系统 一、系统介绍1.系统主要功能:2.涉及技术框架:3.本项目所用环境: 二、功能展示三、其它系统四、获取源码 一、系统介绍 1.系统主要功能: 权限控制 本系统存在三个不同的角色&…

Linux 提权前信息搜集

linux前期提权也是要信息搜集 linux信息搜集可以使用软件进行,这里写四个脚本 (我们拿到webshell或者普通用户时,上传第三方软件的目录应该是Linux的tmp目录,tmp目录是临时目录,每次linux重启后该目录内容就会清除,而…

Dubbo源码篇05---SPI神秘的面纱---使用篇

Dubbo源码篇05---SPI神秘的面纱---使用篇 引言Jdk提供的SPI机制基本流程缺陷 Dubbo的SPI机制实例演示 Dubbo VS JDK SPI 小结Adaptive自适应扩展点demo演示如何做到动态适配的 按条件批量激活扩展点小结 引言 SPI全称是Service Provider Interface,其中服务提供者定…

全面提升测试效率,一键实现多文件、多Sheet的WEB自动化测试!

目录 前言: 设计目标 框架结构 实现 总结 前言: 在WEB开发中,自动化测试框架是一个不可或缺的组件。封装一个既能支持多文件,又能支持多Sheet的WEB自动化框架,将会极大地提升我们的开发效率。下面我将会详细介绍…

GPT-4平替版:MiniGPT-4,支持图像理解和对话,现已开源

项目地址:https://minigpt-4.github.io/ 论文链接:https://github.com/Vision-CAIR/MiniGPT-4/blob/main/MiniGPT_4.pdf 代码:https://github.com/Vision-CAIR/MiniGPT-4 视频:https://youtu.be/__tftoxpBAw 数据集&#xff…

el-dialog 关闭再打开后窗口内容不刷新问题

页面中有增加和编辑两个功能,由于弹窗样式都是一样的,于是将它拆分成一个子组件,父组件把状态传给子组件,子组件根据这个状态判断是做编辑操作还是新增操作. 编辑 添加 问题一:但是这样遇到了一个问题,在编辑时,只有第一次点编辑时,回显的数据才能正确显…

大学生就业工资低,想转行IT?0基础培训班学习半年云计算出来可以就业吗?挑战高薪职业!

大学生就业工资低,想转行IT?0基础学习云计算可以就业吗? 大学生就业工资低,想转行IT?0基础培训班学习半年云计算出来可以就业吗?这是一个很常见的问题,也是很多大学毕业生关心的话题。根据我了解…

探索2023年海外网红营销合作方式:提升品牌曝光度的创新策略

随着社交媒体的崛起和用户对网红的追捧,海外网红营销已经成为品牌推广的不可忽视的一部分。在2023年,有7种最火爆的海外网红营销合作方式备受瞩目。本文Nox聚星将和大家一起来详细了解这7种方式,为品牌提供更多营销灵感和策略。 1、跨平台合作…

Codeforces Round 834 (Div. 3)

题集链接 Codeforces Round 834 A. Yes-Yes?B. Lost PermutationC. Thermostat A. Yes-Yes? Example input 12 YES esYes codeforces es se YesY esYesYesYesYesYesYe seY Yess sY o Yesoutput NO YES NO YES NO YES YES NO NO YES NO YES题意&题解: 其实就…

Windows环境下安装及部署Nginx教程(含多个站点部署)

目录 一、下载安装Nginx 二、部署Nginx 三、多站点部署的情况 1、nginx域名解析,虚拟主机: 四、带https的站点如何部署,与http的有何不同点? 一、下载安装Nginx 1、官网下载地址:https://nginx.org/en/download.h…

2022 年第四届河南省 CCPC 大学生程序设计竞赛vp补题

Dashboard - 2022 CCPC Henan Provincial Collegiate Programming Contest - Codeforces Problem B. Hash 思路: 发现31的次幂取模的答案,所以如果一段太长肯定不如拆成2段。首先如果一段长度为7,那么无论他的开头是a,eh,n的谁,都有val>31^6887503…

0基础学习VR全景平台篇第29章:场景功能-音乐解说

本期为大家带来蛙色VR平台,场景管理模块-音乐功能! 功能位置示意 一、本功能将用在哪里? 优秀VR全景作品不仅注重视觉的体验,接入契合场景的背景音乐与解说; 可将音乐与解说进行全局播放或进行分场景播放&#xff0…

前端学习--Vue(4) 生命周期

一、组件的生命周期 一个组件从创建-运行-销毁的真个阶段,强调的是一个时间段 1.1 生命周期函数 1.1.1 创建 (只执行一次) created() 阶段任务:最早可以使用methods中的方法发起ajax请求获取数据,并将数据挂载到d…

论文阅读笔记(三)——有监督解耦+信息瓶颈

论文信息 《Disentangled Information Bottleneck》 论文地址:https://ojs.aaai.org/index.php/AAAI/article/view/17120 代码地址:GitHub - PanZiqiAI/disentangled-information-bottleneck inproceedings{pan2021disentangled, title{Disentangled in…

vue3与vue2共存环境搭建

1、全局安装vue2 npm install vue-cli -g2、自行在任意位置创建一个文件夹,局部安装vue3 npm初始化 npm initnpm初始化 提示: 初始化后 出现文件package.json 如果没有初始化 会报错,且文件夹中不会新增内容 3、局部安装vue3 npm install …

一名优秀的黑客,具备的有哪些特质

想要成为网络hacker黑客?十个必会的特质 一、基本的计算机知识 把它列为第一条,相信很多人肯定会觉得不以为然,其实掌握必要的计算机知识对黑客入门非常重要。这些包括:计算机硬件的组成、操作系统的安装、Windows批处理命令、命…

LeetCode_DFS_困难_1377.T 秒后青蛙的位置

目录 1.题目2.思路3.代码实现(Java) 1.题目 给你一棵由 n 个顶点组成的无向树,顶点编号从 1 到 n。青蛙从 顶点 1 开始起跳。规则如下: 在一秒内,青蛙从它所在的当前顶点跳到另一个未访问过的顶点(如果它…