OpenCv之图像轮廓

目录

一、图像轮廓定义

二、绘制轮廓

三、计算轮廓面积与周长


一、图像轮廓定义

图像轮廓是具有相同颜色或灰度的连续带你的曲线.轮廓在形状分析和物体的检测和识别中很有用

轮廓的作用:

  • 用于图形分析
  • 物体的识别与检测

注意点:

  • 为了检测的准确性,需要先对图像进行二值化或Canny操作
  • 画轮廓是会修改输入的图像,如果之后想继续使用原始图像,应该将原始图像储存到其他变量中。

案例代码如下:

python 复制代码
import cv2
import numpy as np

# 该图像显示效果是黑白的,但是实际上确实三个通道的彩色图像
img = cv2.imread('6.jpg')

# 变成单通道的黑白图片
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# 二值化,注意有两个返回值,阈值和结果
ret,binary = cv2.threshold(gray,150,255,cv2.THRESH_BINARY)

# 轮廓查找,新版本返回两个结果,轮廓和层级,老版本返回三个 参数,图像,轮廓和层级
result,contours,hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

# 打印轮廓
print(contours)

# 释放资源
cv2.waitKey(0)
cv2.destroyAllWindows()

二、绘制轮廓

参照函数:

代码案例如下:

python 复制代码
import cv2
import numpy as np

# 该图像显示效果是黑白的,但是实际上确实三个通道的彩色图像
img = cv2.imread('6.jpg')

# 变成单通道的黑白图片
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# 二值化,注意有两个返回值,阈值和结果
ret,binary = cv2.threshold(gray,150,255,cv2.THRESH_BINARY)

# 轮廓查找,新版本返回两个结果,轮廓和层级,老版本返回三个 参数,图像,轮廓和层级
result,contours,hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

# 打印轮廓
# print(contours)

# 绘制轮廓会直接修改原图
# 如果想保持原图不变,建议copy一份
img_copy = img.copy()
cv2.drawContours(img_copy,contours,-1,(0,0,255),2)

# 释放资源
cv2.waitKey(0)
cv2.destroyAllWindows()

三、计算轮廓面积与周长

轮廓面积是指每个轮廓中所有的像素点围成区域的面积,单位为像素

案例代码如下:

python 复制代码
import cv2
import numpy as np

# 该图像显示效果是黑白的,但是实际上确实三个通道的彩色图像
img = cv2.imread('6.jpg')

# 变成单通道的黑白图片
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# 二值化,注意有两个返回值,阈值和结果
ret,binary = cv2.threshold(gray,150,255,cv2.THRESH_BINARY)

# 轮廓查找,新版本返回两个结果,轮廓和层级,老版本返回三个 参数,图像,轮廓和层级
result,contours,hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

# 绘制轮廓会直接修改原图
# 如果想保持原图不变,建议copy一份
img_copy = img.copy()
cv2.drawContours(img_copy,contours,1,(0,0,255),2)

# 计算轮廓面积
area = cv2.contourArea(contours[1])

# 计算轮廓周长
perimeter = cv2.arcLength(contours[1],closed=True)

# 释放资源
cv2.waitKey(0)
cv2.destroyAllWindows()
相关推荐
guanshiyishi1 小时前
ABeam 德硕 | 中国汽车市场(2)——新能源车的崛起与中国汽车市场机遇与挑战
人工智能
极客天成ScaleFlash1 小时前
极客天成NVFile:无缓存直击存储性能天花板,重新定义AI时代并行存储新范式
人工智能·缓存
澳鹏Appen3 小时前
AI安全:构建负责任且可靠的系统
人工智能·安全
蹦蹦跳跳真可爱5893 小时前
Python----机器学习(KNN:使用数学方法实现KNN)
人工智能·python·机器学习
视界宝藏库4 小时前
多元 AI 配音软件,打造独特音频体验
人工智能
xinxiyinhe4 小时前
GitHub上英语学习工具的精选分类汇总
人工智能·deepseek·学习英语精选
ZStack开发者社区4 小时前
全球化2.0 | ZStack举办香港Partner Day,推动AIOS智塔+DeepSeek海外实践
人工智能·云计算
Spcarrydoinb5 小时前
基于yolo11的BGA图像目标检测
人工智能·目标检测·计算机视觉
非ban必选6 小时前
spring-ai-alibaba第四章阿里dashscope集成百度翻译tool
java·人工智能·spring
是店小二呀6 小时前
AI前沿:资本狂潮下的技术暗战:巨头博弈、开源革命与生态重构
人工智能·重构·开源