python-opencv(11)图像轮廓

简介: 文章目录1. 什么是轮廓2. 使用的函数3. 代码实现

1. 什么是轮廓

边缘检测能够检测出边缘,但是边缘不是连续的,如果我们将边缘 连接为一个整体,我们便构造出了轮廓。

注意

  1. 对于opencv来说构建轮廓的对象是二值图像。所以我们首先要进行阈值分割或者边缘检测的处理。
  2. 查找轮廓,会更改原始的图像,所以,我们们通常使用原始的图像,拷贝一份在进行操作。
  3. 在opencv中,是从黑色的背景中查找白色对象,因此对象必须是白色,而背景必须是黑色

2. 使用的函数

  1. cv2.findContours( ) 查找轮廓图像的函数。
  2. cv2.drawContours( ) 将查找到的轮廓绘制到图像上。

首先看第一个函数cv2.findContours( )

1.contours, hierarchy = cv2.findContours( image, mode, method)

相关参数的释义

contours 为轮廓

hierarchy 为图像的拓扑信息(轮廓的层次)

image 为原始图像

mode 为轮廓的检索模式


cv2.RETR_EXTERNAL :表示只检测外轮廓

cv2.RETR_LIST :检测的轮廓不建立等级关系

cv2.RETR_CCOMP :建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。如果内孔内还有一个连通物体,这个物体的边界也在顶层。

cv2.RETR_TREE :建立一个等级树结构的轮廓(常用这一个)

-method 为轮廓的近似方法


cv2.CHAIN_APPROX_NONE :存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即max(abs(x1-x2), abs(y2-y1)) ==1

cv2.CHAIN_APPROX_SIMPLE:压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息

cv2.CHAIN_APPROX_TC89_L1:使用teh-Chinl chain 近似算法

cv2.CHAIN_APPROX_TC89_KCOS:使用teh-Chinl chain 近似算法

2.r=cv2.drawContours(o, contours, contourIdx, color[, thickness])

r 为目标图像

o 原始图像

contours 需要绘制的边缘数组

contourldx 需要绘制的边缘索引,如果全部绘制,则为-1

color 绘制的颜色,位BGR格式的Scalar

thickness 可选,绘制是时所用的画笔的粗细

3. 代码实现

#%%图像轮廓的绘制
import cv2
import numpy as np
import os
img = cv2.imread(r"C:\\Users\\lihuanyu\\Desktop\\opencv\\image\\boyun.png")
#拷贝一份
img1 = img.copy()
#转换为黑色
gray = cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY)
#阈值分割-二值化
ret,binary = cv2.threshold(gray,127,225,cv2.THRESH_BINARY)
#轮廓的提取
#image,contours,hierarchy = cv2.findContours(img2,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
contours, hierarchy =cv2.findContours(binary,cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
o=cv2.drawContours(img1,contours,-1,(0,255,0),5)
cv2.imshow("origial",img)
cv2.imshow("result",o)
cv2.waitKey()
cv2.destroyAllWindows()

结果

相关文章
|
11天前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
|
1天前
|
算法 计算机视觉
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
12 4
WK
|
9天前
|
编解码 计算机视觉 Python
如何在OpenCV中进行图像转换
在OpenCV中,图像转换涉及颜色空间变换、大小调整及类型转换等操作。常用函数如`cvtColor`可实现BGR到RGB、灰度图或HSV的转换;`resize`则用于调整图像分辨率。此外,通过`astype`或`convertScaleAbs`可改变图像数据类型。对于复杂的几何变换,如仿射或透视变换,则可利用`warpAffine`和`warpPerspective`函数实现。这些技术为图像处理提供了强大的工具。
WK
35 1
|
22天前
|
机器学习/深度学习 人工智能 算法
【深度学习】python之人工智能应用篇——图像生成技术(二)
图像生成是计算机视觉和计算机图形学领域的一个重要研究方向,它指的是通过计算机算法和技术生成或合成图像的过程。随着深度学习、生成模型等技术的发展,图像生成领域取得了显著的进步,并在多个应用场景中发挥着重要作用。
32 9
|
27天前
|
机器人 计算机视觉
巧用 OpenCV solvePnP() 函数完成由图像坐标系到机器人坐标系的转换(二维坐标系之间的转换)
巧用 OpenCV solvePnP() 函数完成由图像坐标系到机器人坐标系的转换(二维坐标系之间的转换)
35 2
|
1月前
|
数据采集 存储 算法
【2024泰迪杯】B 题:基于多模态特征融合的图像文本检索20页论文及Python代码
本文介绍了2024年泰迪杯B题的解决方案,该题目要求构建基于多模态特征融合的图像文本检索模型和算法,通过深入分析和预处理数据集,构建了OFA、BertCLIP和ChineseCLIP三种多模态特征融合模型,并通过投票融合机制优化检索效果,实验结果表明所提模型在图像与文本检索任务中显著提高了检索准确性和效率。
24 2
|
1月前
|
机器学习/深度学习 XML 搜索推荐
图像自动化保存工具:Python脚本开发指南
图像自动化保存工具:Python脚本开发指南
WK
|
9天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
如何使用Python识别图像?
在Python中识别图像涉及计算机视觉和图像处理技术。常用库包括OpenCV,用于基础图像处理和计算机视觉任务;Pillow则适用于基本图像操作。对于复杂图像识别,如对象检测和分类,可采用TensorFlow等深度学习框架。首先,通过`pip install opencv-python`安装OpenCV,然后使用其读取、显示图像及转换颜色空间等功能。
WK
12 0
|
30天前
|
定位技术 Python
【python】python基于pygame坦克大战游戏设计(源码+图像+操作说明)【独一无二】
【python】python基于pygame坦克大战游戏设计(源码+图像+操作说明)【独一无二】
|
2月前
|
机器学习/深度学习 XML 计算机视觉
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。