首页 > 其他分享 >图像轮廓的检测

图像轮廓的检测

时间:2022-09-27 19:13:52浏览次数:39  
标签:plt 检测 image cv2 contours 图像 轮廓

import cv2
import matplotlib.pyplot as plt

image = cv2.imread("qqhuman.jpeg")
image_BGR = image.copy()

# 将图像转换成灰度图像,并执行图像高斯模糊,以及转化成二值图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (5,5), 0)
image_binary = cv2.threshold(blurred, 60, 255, cv2.THRESH_BINARY)[1]

# 从二值图像中提取轮廓
# contours中包含检测到的所有轮廓,以及每个轮廓的坐标点
contours = cv2.findContours(image_binary.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[0]

# 遍历检测到的所有轮廓,并将检测到的坐标点画在图像上
# c的类型numpy.ndarray,维度(num, 1, 2), num表示有多少个坐标点
for c in contours:
cv2.drawContours(image, [c], -1, (255, 0, 0), 2)

image_contours = image


#将图片用matplotlib的方式展现出来
# display BGR image
plt.subplot(1, 3, 1) #确定一个一行三列的画布,将图片放在第一个位置
plt.imshow(image_BGR)
plt.axis('off')
plt.title('image_BGR')

# display binary image
plt.subplot(1, 3, 2)
plt.imshow(image_binary, cmap='gray')
plt.axis('off')
plt.title('image_binary')

# display contours
plt.subplot(1, 3, 3)
plt.imshow(image_contours)
plt.axis('off')
plt.title('{} contours'.format(len(contours)))

plt.show()

'''
图像轮廓
cv2.findContours(img,mode,method) #img输出当前的图像,mode当前的模式,method当前的方式
mode:轮廓检索模式
RETR_EXTERNEL:只检索最外面的轮廓
RETR_LIST:检索所有的轮廓,并将其保存在一条链表上
RETR_CCOMP:检索所有轮廓,并将他们组织为两层;顶层是各部分的外部界面,第二层是空洞的边界
RETR_TREE:检索所有轮廓,并重构嵌套轮廓的整个层次

method:轮廓逼近的方法
CHAIN_APPROX_NONE:以Freeman链码的方式输出轮廓,所有其他方法输出多边形(顶点序列)
CHAIN_APPROX_SIMPLE:压缩水平的,垂直和和谐的部分,也就是,函数只保留他们的终点部分
'''

标签:plt,检测,image,cv2,contours,图像,轮廓
From: https://www.cnblogs.com/kun-sir/p/16735600.html

相关文章

  • Brush Bundle一键创建精美图像PS笔刷包
    BrushBundle是一款可以在几秒钟内创建灯笼、萤火虫、剪影、瀑布、银河、头发、草、毛皮、北极光、雾、云等等的笔刷,使用简单方便。BrushBundle是中文笔刷。独特、有趣......
  • 多视图属性网络异常检测系列一
    论文《DeepAnomalyDetectiononAttributedNetworks》近期会对多视图属性网络异常检测系列进行学习记录这篇虽然不是多视图的,但可以说是属性网络上异常检测的典型,已......
  • 手把手教你使用LabVIEW人工智能视觉工具包快速实现图像读取与采集(含源码)
    目录前言一、工具包位置二、图像采集与色彩空间转换1.文件读写2.实现图片读取3.使用算子cvtColor实现颜色空间转换三、从摄像头采集图像1.Camera类2.属性节点3.实现摄像头......
  • 二、目标检测算法之R-CNN
    二、目标检测算法之R-CNN1、R—CNN发展过程和各自的优缺点1.1R-CNN(1)R-CNN原理通过滑动窗口来检测不同的目标类型(从左到右、从上到下滑动窗口,利用分类识别目标),我们使用......
  • 谷歌机器学习人脸检测
    谷歌机器学习人脸检测如今,我们必须了解机器学习对我们的应用程序功能要求高的原因。特别是,我们在银行应用程序中使用了这些功能。请让我将主要事实解释为缩写以涵盖整篇......
  • 一、目标检测概述
    一、目标检测概述1.什么是目标检测目标检测定义识别图片中有哪些物体以及物体的位置(坐标位置)2.传统目标算法到深度学习2.1目标检测算法的变迁对于传统的:将待检测作......
  • 图像特征提取
    1、角点的定义如果一个点在任意方向的微小变动都会导致灰度很大的变化,那么这个点就被称为角点。也就是一阶导数中的局部最大值就是角点。2、Harris角点检测harris角点具......
  • 如何使用Modelsim进行图像处理仿真
    #modelsim如何仿真AlteraIP##建立仿真库我们将IP核等相关库文件编译到Modelsim中后,以后凡是设计中调用到IP核时,我们就不用再重复添加了。我们看一下如何在Modelsim中......
  • vue中检测不到数组或者对象发生改变,如何解决? vue更新数组时触发视图更新的方法
    vue中检测不到数组或者对象发生改变,如何解决? this.$set(对象/数组,键,值)Vue.set(对象/数组,键,值)给对象增加新属性、给数组增加属性都可以响应!this.$delete(对......
  • 【图像处理笔记】图像分割之阈值处理
    本章的大多数分割算法都基于图像灰度值的两个基本性质之一:不连续性和相似性。第一类方法根据灰度的突变(如边缘)将图像分割为多个区域;第二类方法根据一组预定义的准则把一幅......