OpenCV计算轮廓长度/周长和面积

首先,计算轮廓长度/周长和面积需要使用到OpenCV库中的cv2.contourArea()和cv2.arcLength()函数。在计算前需要先检测出轮廓。

以下是计算轮廓长度/周长和面积的详细攻略:

1. 导入库

import cv2
import numpy as np

2. 读取并预处理图像

image = cv2.imread('test.jpg')
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

3. 边缘检测

edged_image = cv2.Canny(gray_image, 30, 200)

4. 寻找轮廓

contours, _ = cv2.findContours(edged_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

5. 循环计算所有轮廓的长度/周长和面积

for contour in contours:
    perimeter = cv2.arcLength(contour, True)
    area = cv2.contourArea(contour)
    print("Perimeter: {:.2f}".format(perimeter))
    print("Area: {:.2f}".format(area))

在上述代码中,边缘检测步骤使用了Canny算子进行边缘检测,轮廓检测使用了findContours函数,其中参数RETR_EXTERNAL表示只检测外部轮廓,CHAIN_APPROX_SIMPLE表示近似检测。

接下来是两个计算轮廓长度/周长和面积的示例:

示例1:计算单个轮廓的长度/周长和面积

image = cv2.imread('test.jpg')
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
edged_image = cv2.Canny(gray_image, 30, 200)

contours, _ = cv2.findContours(edged_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

perimeter = cv2.arcLength(contours[0], True)
area = cv2.contourArea(contours[0])

print("Perimeter: {:.2f}".format(perimeter))
print("Area: {:.2f}".format(area))

在该示例中,首先读取与预处理图像,然后使用Canny算子进行边缘检测,使用findContours检测轮廓。

计算单个轮廓的长度/周长和面积时,只需使用第一个轮廓,使用cv2.arcLength()和cv2.contourArea()分别计算出轮廓的长度/周长和面积。

示例2:计算多个轮廓的长度/周长和面积并标注出来

image = cv2.imread('test.jpg')
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
edged_image = cv2.Canny(gray_image, 30, 200)

contours, _ = cv2.findContours(edged_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 计算所有轮廓的长度/周长和面积
for i in range(len(contours)):
    perimeter = cv2.arcLength(contours[i], True)
    area = cv2.contourArea(contours[i])
    print("Perimeter: {:.2f}".format(perimeter))
    print("Area: {:.2f}".format(area))

    # 将轮廓画在图像上
    cv2.drawContours(image, [contours[i]], -1, (0, 0, 255), 2)

# 显示结果
cv2.imshow("Image", image)
cv2.waitKey(0)

在该示例中,同样先读取与预处理图像,然后使用Canny算子进行边缘检测,使用findContours检测轮廓。

对于多个轮廓的计算方法与示例1类似,不同之处在于需要使用循环计算每个轮廓的长度/周长和面积,并将其画在图像上。

最后,使用cv2.imshow()方法进行图像展示与cv2.waitKey()方法等待键盘输入。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:OpenCV计算轮廓长度/周长和面积 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • C#版Tesseract库的使用技巧

    C#版Tesseract库的使用技巧 概述 Tesseract是一个OCR(Optical Character Recognition)引擎,它可以识别图片中的文字,并将其转换为文本。C#版Tesseract库是Tesseract的一个C#封装库,方便了C#开发者在自己的项目中使用OCR技术。本文将介绍如何使用C#版Tesseract库。 安装C#版Tess…

    人工智能概论 2023年5月25日
    00
  • 如何通过Django使用本地css/js文件

    使用Django开发web应用时,需要将网页的HTML、CSS和JavaScript等文件组合在一起生成静态网页。本地样式和脚本文件是网页元素的重要组成部分,下面是如何通过Django使用本地CSS/JS的完整攻略。 1. 创建Django项目 首先,创建一个新的Django项目。在命令行中进入自己选择的项目目录,然后执行下面的命令: django-admi…

    人工智能概论 2023年5月25日
    00
  • express使用Mongoose连接MongoDB操作示例【附源码下载】

    针对这个主题,我可以提供如下完整攻略: 什么是MongoDB 和 Mongoose? MongoDB MongoDB 是一个基于分布式文件存储的开源数据库系统,被广泛应用于Web应用程序中。它支持 JSON 数据的动态查询,索引,以及包含函数式查询语言和类似SQL的聚合管道。 Mongoose Mongoose 是一个作为MongoDB官方驱动程序的增强库,…

    人工智能概论 2023年5月25日
    00
  • 深度学习环境搭建anaconda+pycharm+pytorch的方法步骤

    深度学习环境搭建anaconda+pycharm+pytorch的方法步骤 深度学习环境搭建通常需要多个软件工具的配合,在这里我们将介绍使用anaconda+pycharm+pytorch的方法。该环境搭建过程包括三个步骤:安装anaconda、安装pycharm、安装pytorch。 1. 安装anaconda 1.1 下载anaconda:前往anaco…

    人工智能概论 2023年5月25日
    00
  • django 邮件发送模块smtp使用详解

    Django 邮件发送模块SMTP使用详解 概述 Django 自带了邮件发送模块,可以通过 SMTP 协议将邮件发送出去。本教程将详细讲解 Django 如何配置和使用 SMTP 协议发送邮件。 配置 在 Django 项目配置文件 settings.py 中进行 SMTP 邮件发送模块的配置。 # SMTP 邮件服务器地址 EMAIL_HOST = ‘s…

    人工智能概览 2023年5月25日
    00
  • 苹果IOS9的30项新特性可能会被你忽略

    苹果IOS9的30项新特性可能会被你忽略 苹果IOS9发布后,增加了许多新的功能和特性。除了耳熟能详的功能外,还有许多你可能会忽略的实用功能。下面详细介绍这30项新特性,其中包含两个示例说明。 一. 内置应用的改进 Notes更加实用 新版Notes拥有更多实用功能,如手写板、绘图、添加照片等。此外,Notes中的文字现在可以上下左右调整。 《示例说明1》:…

    人工智能概论 2023年5月25日
    00
  • 显卡驱动CUDA 和 pytorch CUDA 之间的区别

    让我来为您讲解“显卡驱动CUDA和pytorch CUDA之间的区别”。 首先,需要明确的是,显卡驱动CUDA和pytorch CUDA是两个不同的概念。显卡驱动CUDA是指NVIDIA公司发布的支持CUDA的显卡驱动程序,而pytorch CUDA是指pytorch框架基于NVIDIA CUDA开发的深度学习库。二者的相似之处在于,都需要使用显卡以提高训练…

    人工智能概览 2023年5月25日
    00
  • Tensorflow实现卷积神经网络用于人脸关键点识别

    Tensorflow实现卷积神经网络用于人脸关键点识别 1. 前言 随着机器学习技术的日益成熟,人脸识别技术也逐渐成为了一个非常热门的领域。在这个领域中,人脸关键点识别技术是一个非常重要的基础技术。在本文中,我们将介绍如何使用Tensorflow实现卷积神经网络用于人脸关键点识别的完整攻略。 2. 数据 我们使用的数据是由Kaggle上的Facial Key…

    人工智能概论 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部