python opencv实现目标外接图形

yizhihongxing

下面是详细的"Python OpenCV实现目标外接图形"攻略。

1. 安装OpenCV库

在终端中输入以下命令安装OpenCV:

pip install opencv-python

2. 导入OpenCV模块

import cv2
import numpy as np

3. 加载图像

img = cv2.imread('image.jpg')

4. 对图像进行预处理

在进行目标检测之前,需要对图像进行预处理,例如灰度化、滤波等操作。以下代码展示了如何将图像灰度化。

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

5. 创建目标外接图形

使用OpenCV的findContours()函数查找兴趣区域的轮廓。然后,使用approxPolyDP()函数查找轮廓近似的多边形,并将其与原始图像进行比较。最后,可以使用drawContours()函数在图像上绘制目标外接图形。以下是示例代码:

# 找到轮廓
contours, hierarchy = cv2.findContours(gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 获取轮廓中的目标形状并绘制外接图形
for contour in contours:
    peri = cv2.arcLength(contour, True)
    approx = cv2.approxPolyDP(contour, 0.02 * peri, True)
    cv2.drawContours(img, [approx], -1, (0, 255, 0), 2)

在上述代码中,使用approxPolyDP()函数以2%周长的精度计算轮廓的近似多边形。将绘制出的轮廓与原始图像一起保存可能看起来像以下内容:

cv2.imwrite('output.jpg', img)

示例1:检测并绘制矩形框

以下是如何检测并绘制矩形框的示例。假设我们要检测并框选出图像中的红色矩形。

img = cv2.imread('image.jpg')
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

lower_red = np.array([0, 50, 50])
upper_red = np.array([10, 255, 255])
mask1 = cv2.inRange(hsv, lower_red, upper_red)

lower_red = np.array([170, 50, 50])
upper_red = np.array([180, 255, 255])
mask2 = cv2.inRange(hsv, lower_red, upper_red)

mask = mask1 + mask2

# 膨胀操作
kernel = np.ones((5, 5), np.uint8)
dilation = cv2.dilate(mask, kernel, iterations=1)

# 找到目标轮廓
contours, hierarchy = cv2.findContours(dilation, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
    x, y, w, h = cv2.boundingRect(contour)
    if w * h > 100:
        cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)

cv2.imwrite('output.jpg', img)

示例2:检测并绘制圆形

以下是如何检测并绘制圆形的示例。我们要检测并框选出图像中的红色圆形。

img = cv2.imread('image.jpg')
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

lower_red = np.array([0, 50, 50])
upper_red = np.array([10, 255, 255])
mask1 = cv2.inRange(hsv, lower_red, upper_red)

lower_red = np.array([170, 50, 50])
upper_red = np.array([180, 255, 255])
mask2 = cv2.inRange(hsv, lower_red, upper_red)

mask = mask1 + mask2

# 膨胀操作
kernel = np.ones((5, 5), np.uint8)
dilation = cv2.dilate(mask, kernel, iterations=1)

# 查找检测到的圆形
circles = cv2.HoughCircles(dilation, cv2.HOUGH_GRADIENT, 1, 50, param1=100, param2=30, minRadius=0, maxRadius=0)
if circles is not None:
    circles = np.round(circles[0, :]).astype("int")
    for (x, y, r) in circles:
        cv2.circle(img, (x, y), r, (0, 255, 0), 2)

cv2.imwrite('output.jpg', img)

这两个示例演示了如何使用OpenCV实现检测和绘制目标外接图形的功能。当然,这只是OpenCV提供的功能之一,您还可以自己制定算法进行目标外接图形的处理。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python opencv实现目标外接图形 - Python技术站

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

相关文章

  • 详解SpringCloud LoadBalancer 新一代负载均衡器

    详解SpringCloud LoadBalancer 新一代负载均衡器 前言 在微服务架构中,负载均衡器是非常重要的一个组件,负责将流量均衡分配到不同的服务节点上,以保证系统的高可用性和高吞吐量。Spring Cloud为我们提供了一套非常友好的负载均衡器解决方案,即SpringCloud LoadBalancer,本文将详细讲解SpringCloud Lo…

    人工智能概览 2023年5月25日
    00
  • python实现的接收邮件功能示例【基于网易POP3服务器】

    下面是“Python实现接收邮件功能示例【基于网易POP3服务器】”的完整攻略: 概述 本示例基于Python编程语言,使用网易POP3服务器实现接收邮件的功能。接收邮件是指从指定的邮件服务器获取用户的电子邮件。本示例将通过Python程序,登录网易邮箱的POP3服务器,获取并下载指定的邮件,最后在本地查看邮件内容。 准备工作 在进行此示例前,你需要先完成以…

    人工智能概论 2023年5月25日
    00
  • 新手必备Python开发环境搭建教程

    新手必备Python开发环境搭建教程 简介 Python是一门非常流行的编程语言,在多数领域都有广泛的应用。Python的优势在于语法简洁明了,易于学习,同时也有非常强大的开源社区支持。在开始Python编程之前,需要先搭建Python的开发环境。本文将介绍如何在Windows和macOS系统中搭建Python开发环境。 Windows系统 下载Python…

    人工智能概览 2023年5月25日
    00
  • Linux下将Python的Django项目部署到Apache服务器

    下面就是将Python的Django项目部署到Apache服务器的完整攻略。 准备工作 安装Apache服务器:在Linux终端上使用下面的命令安装Apache2: sudo apt-get update sudo apt-get install apache2 安装mod_wsgi:在Linux终端上使用下面的命令安装mod_wsgi: sudo apt-…

    人工智能概览 2023年5月25日
    00
  • python opencv 读取本地视频文件 修改ffmpeg的方法

    下面是详细讲解“python opencv 读取本地视频文件 修改ffmpeg的方法”的完整攻略: 一、前置条件 在进行本文讲解前,请确保你已经安装好了 Python 和 OpenCV,以及正确配置了环境变量。 二、读取本地视频文件 使用 Python 调用 OpenCV 读取本地视频文件,可以采用以下代码: import cv2 cap = cv2.Vid…

    人工智能概览 2023年5月25日
    00
  • 阿里云申请云盾免费SSL证书(https)

    下面是阿里云申请云盾免费SSL证书的完整攻略: 1. 登陆阿里云控制台 首先,在浏览器中打开阿里云官网,通过登录阿里云账号进入阿里云控制台。 2. 进入SSL证书申请页面 在控制台中,找到云盾的入口,点击进入云盾页面。在左侧导航条中找到“证书管理”,再点击“SSL证书申请”进入申请页面。 3. 创建证书 进入申请页面后,首先选择“免费证书”,然后填写域名,选…

    人工智能概览 2023年5月25日
    00
  • OpenCV外接USB摄像头的方法

    下面是关于“OpenCV外接USB摄像头的方法”的完整攻略。 1. 硬件准备 首先需要准备好一台电脑和一台带有USB接口的摄像头设备。需要确保电脑能够识别到摄像头设备。 2. OpenCV环境准备 在开始使用OpenCV的过程中,需要确保已经安装了OpenCV环境。安装方法可以参考OpenCV官方文档。 3. 外接USB摄像头 使用外接USB摄像头可以通过调…

    人工智能概览 2023年5月25日
    00
  • python图片验证码识别最新模块muggle_ocr的示例代码

    使用Python图片验证码识别最新模块muggle_ocr能够自动识别图片验证码,提高验证码的自动破解能力。以下是该模块的示例代码及详细攻略。 安装 通过pip安装muggle_ocr模块: pip install muggle_ocr 使用方法 这是一个最简单的示例: from muggle_ocr import OCR import requests #…

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