程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-05(3)

第12课时 轮廓检测

发布于2020-02-25 00:52     阅读(557)     评论(0)     点赞(15)     收藏(5)


**学科:**人工智能 年级: 七年级上
**课题:**第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
  • 1
  • 2

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

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

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

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

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

替换为以下语句:

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

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

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

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

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

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

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

三、开放延伸

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

发布了16 篇原创文章 · 获赞 0 · 访问量 860


所属网站分类: 技术文章 > 博客

作者:进击的巨人

链接:https://www.pythonheidong.com/blog/article/233034/123677f996b9992d334d/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

15 0
收藏该文
已收藏

评论内容:(最多支持255个字符)