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

yizhihongxing

首先,计算轮廓长度/周长和面积需要使用到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日

相关文章

  • Django模板之基本的 for 循环 和 List内容的显示方式

    下面详细讲解Django模板中for循环和List内容的显示方式的完整攻略。 基本的for循环 在Django模板中,我们可以使用for循环来遍历一个列表或者其他可迭代对象。下面以遍历一个普通列表为例: {% for item in my_list %} {{ item }} {% endfor %} 其中,my_list 是一个普通的列表,item 则是列…

    人工智能概论 2023年5月25日
    00
  • Django如何将URL映射到视图

    Django将URL映射到视图的过程主要有以下几个步骤: 配置URL路由规则 定义视图函数 将URL路由规则与视图函数进行绑定 下面分别讲解这几个步骤: 配置URL路由规则 Django使用urls.py文件来定义URL路由规则。在urls.py文件中,需要先导入Django中的path函数。path函数用来定义URL路由规则,支持正则表达式,类似于Flas…

    人工智能概览 2023年5月25日
    00
  • Python实现字符串逆序输出功能示例

    实现字符串逆序输出是Python中非常基础的操作。下面我会提供两种示例,来详细讲解如何使用Python实现这个功能。 示例一 第一种方法是使用Python内置的slice(切片)方法。代码如下: string = "hello world" reversed_string = string[::-1] print(reversed_str…

    人工智能概览 2023年5月25日
    00
  • Mac OS下PHP环境搭建及PHP操作MySQL常用方法小结

    Mac OS下PHP环境搭建及PHP操作MySQL常用方法小结 环境搭建 由于Mac OS自带了Apache和PHP,我们只需要安装MySQL即可。 安装MySQL步骤: 下载MySQL安装包https://dev.mysql.com/downloads/mysql/; 运行安装包,按照提示进行安装; 安装完成后,启动MySQL服务:打开终端,输入mysql…

    人工智能概览 2023年5月25日
    00
  • anaconda如何创建和删除环境

    下面是anaconda如何创建和删除环境的完整攻略: 创建环境 1. 打开Anaconda Prompt 在Windows系统中,可以在开始菜单中找到Anaconda Prompt。如果安装了Anaconda,但是无法在开始菜单中找到Anaconda Prompt,可以在搜索栏中输入“Anaconda Prompt”并回车以打开命令行环境。 2. 创建环境 …

    人工智能概览 2023年5月25日
    00
  • 给Java菜鸟的一些建议_关于Java知识点归纳(J2EE and Web 部分)

    给Java菜鸟的一些建议_关于Java知识点归纳(J2EE and Web 部分) 作为Java入门者,学习编程语言的过程一定是充满了艰辛和挑战的。以下建议可以帮助Java菜鸟在学习Java的过程中更有效地掌握知识点。 1. 学习基础知识 Java菜鸟最重要的是需要先掌握Java基础知识,这包括Java语言的基本语法、面向对象编程基本概念和原则、常用的数据结…

    人工智能概览 2023年5月25日
    00
  • 聊聊Spring Cloud Cli 初体验

    聊聊Spring Cloud Cli 初体验 简介 Spring Cloud CLI 是一个命令行工具,通过它我们可以在本地快速搭建Spring Cloud应用。CLI中包含了Spring Cloud应用开发所需的各种脚手架和依赖,并提供了代码生成、应用打包、测试运行等CLI命令,让我们能够更加轻松高效地进行Spring Cloud应用开发。 安装 安装Sp…

    人工智能概览 2023年5月25日
    00
  • Python中celery的使用

    下面是关于Python中Celery的使用的完整攻略。 1. 什么是Celery Celery是一个基于分布式消息传递的任务队列,允许您异步地调用执行代码,作为生产者将任务委派给工作者(即消费者),以便长时间的运行任务可以在后台完成,同时允许使用者对前端进行操作。 2. 安装Celery 可以使用pip进行安装,命令如下: pip install celer…

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