【图像处理】1、使用OpenCV库图像轮廓的检测和绘制

devtools/2024/11/13 9:08:46/

OpenCV (Open Source Computer Vision Library) 是一个用于计算机视觉和图像处理的开源库。它提供了数百种用于图像和视频分析的算法,并被广泛应用于研究和商业领域。OpenCV 支持多种编程语言,包括 C++、Python、Java 等,具有跨平台的特性,可以在 Windows、Linux、macOS 和 Android 等操作系统上运行。

安装OpenCV库

你可以使用以下命令安装OpenCV库:

python">pip install opencv-python
python">import cv2
import numpy as np
from matplotlib import pyplot as plt# 读取图像并转换为灰度图像
image = cv2.imread('path_to_image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 应用阈值
_, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)# 检测轮廓
contours, _ = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)# 在原始图像上绘制轮廓
cv2.drawContours(image, contours, -1, (0, 255, 0), 3)# 显示结果
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.title('Contours')
plt.show()

代码说明:

  1. 读取图像:使用 cv2.imread() 读取图像并转换为灰度图像。请将 'path_to_image.jpg' 替换为你要处理的图像的实际路径。
  2. 应用阈值:使用 cv2.threshold() 将灰度图像转换为二值图像。
  3. 检测轮廓:使用 cv2.findContours() 从二值图像中检测轮廓。
  4. 绘制轮廓:使用 cv2.drawContours() 在原始图像上绘制检测到的轮廓。
  5. 显示结果:使用 matplotlib.pyplot 显示结果图像。

http://www.ppmy.cn/devtools/56198.html

相关文章

Cyuyanzhong的内存函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、memcpy函数的使用与模拟实现二、memmove函数的使用和模拟实现三、memset函数与memcmp函数的使用(一)、memset函数(内存块…

制造企业的仓库管理如何做好数据分析?

在竞争激烈的现代制造业环境中,仓库管理成为许多生产制造企业面临的一大挑战。随着产品种类的不断增加和客户需求的日一个型号,仓库不仅要处理物料、半成品和成品,还要应对产品更新换代、不同项目客户的特殊需求等复杂因素。面对这些挑战&…

Vue.js中的计算属性:如何让数据自动更新

引言 在Vue.js的世界里,computed属性就像是你的智能助手,它能自动追踪变化,帮你快速做出反应。想象一下,你在做一道菜,调料(数据)一变,味道(界面)立刻跟上。…

【干货】微信小程序免费开源项目合集

前言 2024年了,还有小伙伴在问微信小程序要怎么开发,有什么好的推荐学习项目可以参考的。今天分享一个收集了一系列在微信小程序开发中有用的工具、库、插件和资源:awesome-github-wechat-weapp。 开源项目介绍 它提供了丰富的资源列表&…

threejs的学习(二)

上次我们说了如何搭建环境,并成功显示了一个静止的方块, 1.通过轨道控制器查看方块,同时添加坐标轴辅助器 main.js import * as THREE from "../assets/js/three.module"; import { OrbitControls } from "../../../three.j…

【面试系列】PHP 高频面试题

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、…

第G1周:生成对抗网络(GAN)入门

本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 | 接辅导、项目定制 🚀 文章来源:K同学的学习圈子深度学习第J6周:ResNeXt-50实战解析 一.理论 生成对抗网络(Generative Adversarial Ne…

C语言单链表的算法之删除节点

一:为什么要删除节点 (1)有时候链表中节点的数据不想要了,就要删除这个节点 二:删除节点的两个步骤 (1)第一步:找到这个节点 (2)第二步:删除这个…