第12课时 轮廓检测

**学科:**人工智能年级: 七年级上
**课题:**第12课时 轮廓检测课时数:1课时

学情分析:

通过前几节课的学习,大部分学生已经能够利用老师提供的代码,通过python编程环境查看图片、访问图片中的任意像素,并能将彩色图片转换成灰度图片、黑白图片,已经具备了一定的python编程能力,在这个过程中很多同学表现出对人工智能的浓厚兴趣,但是对于代码含义、二维数组、三维数组等一系列较为抽象知识的理解还不够,很多同学表示困惑。

教学目标

1、复习并进一步理解彩色图像转化为灰度图像、灰度图像转化为二值图像的原理、方法、过程;

2、能够说出轮廓检测的大致步骤;

3、通过Python编程环境,亲身体验图片轮廓检测的原理、方法及过程。

**教学重点:**通过Python编程环境,让学生亲身体验图片轮廓检测的原理、方法及过程

教学难点:1.轮廓检测的原理、方法、过程

2.python代码对应的含义

3.灰度图像转化为二值图像中的参数对轮廓识别的影响

**教学准备:**装有opencv模块的Python编程环境、图像素材


教 学 过 程


一、开放导入
在这里插入图片描述
用李飞飞TED演讲视频进行导入,“有着圆脸、胖身子、 两个尖尖的耳朵,还有一条长尾巴的东西,就是猫。”——这是人工智能开始时计算机识别猫的逻辑,那么计算机又是怎样检测出猫的圆脸、胖身子和尖耳朵轮廓的呢?

二、核心过程推进

询问学生如何通过python访问打开一张图片,复习之前学习的内容:
在这里插入图片描述
代码如下:

import cv2  
img = cv2.imread('1.jpg') #读取图片1

(只有当.py文件和图片素材所在同一路径下时,可以省略图片路径,如果.py文件没有存储在图片素材文件夹中,上述代码需要标明图片路径。)

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#将图片转化为灰度图
ret, binary =cv2.threshold(gray,128,255,cv2.THRESH_BINARY)
#将灰度图转化为二值图

在转化为二值图之后,便可以进行轮廓检测并绘制。

contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
#检测图片形状轮廓
cv2.drawContours(img,contours,-1,(0,0,255),3)
#绘制图片轮廓 -1表示遍历输出全部轮廓,(0,0.255)表示绘制轮廓线的颜色,3表示轮廓线的像素大小
cv2.imshow("img", img)  
cv2.waitKey(0)

在这里插入图片描述
在已知图像轮廓个数时,也可以可以将绘制图像轮廓代码

cv2.drawContours(img,contours,-1,(0,0,255),3)

替换为以下语句:

cv2.drawContours(img,contours,0,(0,255,0),3)
cv2.drawContours(img,contours,1,(255,255,255),3)

可得效果如下图:
在这里插入图片描述
布置任务,利用drawContours函数检测图2的所有轮廓

在检测图2时,可能会出现以下错误:
在这里插入图片描述
图一
在这里插入图片描述
图二
这是由于该图的背景并非纯黑色,细看之下有很多灰白的像素,在图像由彩色图像转化为灰度图像再转化为二值图像时,会将相近的颜色识别为同一色,为了避免这种情况,需要调试灰度图转化为二值图代码中的参数:

ret, binary =cv2.threshold(gray,150,255,cv2.THRESH_BINARY)

如果将第一个值设置为150或者其他较大的数,则会出现类似图一检测轮廓失败的情况。

如果将第一个值设置为30或者其他较小的数,则会出现类似图二检测轮廓失败的情况。

经过多次实验,可将二值图参数设置为100,255,可以得到下图较为理想的效果:
在这里插入图片描述

三、开放延伸

自己找一张喜欢的图片,尝试这对它进行轮廓检测,并调试相关参数,看看有什么效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值