opencv外接矩形cv2.boundingRect和cv2.minAreaRect区别

news2024/10/16 16:04:08

在OpenCV中,cv2.boundingRectcv2.minAreaRect是两个用于获取图像中形状边界的函数,但它们在功能和返回结果上有所不同。以下是两者的详细区别:

1. cv2.boundingRect 和 cv2.minAreaRect 功能描述

cv2.boundingRect 主要是用来计算图像轮廓的最小正矩形(即矩形的边界与图像边界平行),而cv2.minAreaRect 用来计算最小旋转矩形(斜矩形)

2. 示例代码

下面是一段直观显示这两个方法的例子: 

import cv2
import numpy as np

def main():
    image_path = 'test.png'
    img = cv2.imread(image_path)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    _, binary = cv2.threshold(gray, 128, 255, cv2.THRESH_BINARY)

    outs = cv2.findContours(binary.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    if len(outs) == 3:
        cnts = outs[1]
    elif len(outs) == 2:
        cnts = outs[0]
    c = sorted(cnts, key=cv2.contourArea, reverse=True)[0]

    # 最小旋转矩形
    rect = cv2.minAreaRect(c)
    box = np.int64(cv2.boxPoints(rect))
    draw_img = cv2.drawContours(img.copy(), [box], -1, (0, 0, 255), thickness=2)
    
    # 最小正矩形
    x0, y0, w, h = cv2.boundingRect(c)
    cv2.rectangle(draw_img, (x0, y0), (x0+w, y0+h), (0, 255, 0), thickness=2)

    cv2.imshow("draw_img", draw_img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

if __name__ == '__main__':
    main()

绿色矩形框是cv2.boundingRect效果,是一个最小正矩形。红色矩形框是cv2.minAreaRect 的效果,是一个最小斜矩形。

3. 扩展

如果我们要计算轮廓的最小闭合圆,可以使用 cv2.minEnclosingCircle 来计算,代码和效果如下:

    outs = cv2.findContours(binary.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    c = sorted(cnts, key=cv2.contourArea, reverse=True)[0]

    # 最小闭合圆
    (x, y), radius = cv2.minEnclosingCircle(c)
    center = (int(x), int(y))
    radius = int(radius)
    cv2.circle(draw_img, center, radius, (0, 255, 0), thickness=2)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2216406.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业资产安全之数据防泄密要领

在数字化时代,数据已成为企业最宝贵的资产之一。然而,随着数据价值的增加,数据泄露的风险也随之上升。从内部员工的无意泄露到外部黑客的恶意攻击,企业数据安全面临着前所未有的挑战。SDC沙盒数据防泄密解决方案,正是为…

从零入门AI篡改图片检测(金融场景)#Datawhale十月组队学习

1.大赛背景 在全球人工智能发展和治理广受关注的大趋势下,由中国图象图形学学会、蚂蚁集团、云安全联盟CSA大中华区主办,广泛联合学界、机构共同组织发起全球AI攻防挑战赛。本次比赛包含攻防两大赛道,分别聚焦大模型自身安全和大模型生成内容…

Android Compose使用LinearProgressIndicator绘制显示异常

使用依赖版本 androidx.compose.material3:material3:1.3.0-beta05 对应代码 LinearProgressIndicator(progress { 0.7f })直接使用上述代码绘制进度条时,最终显示效果如下: 问题原因 LinearProgressIndicator中gapSize属性表示进度和背景之前的空…

【文献及模型、制图分享】中国新型城镇化与绿色发展协调演进关系研究(熵值法、耦合协调模型)

文献介绍 双碳目标下,新型城镇化与绿色发展的协调演进对于推动中国经济高质量发展意义重大。运用熵值法、耦合协调模型等研究方法,分析了2005—2020年中国30个省(自治区、直辖市)新型城镇化与绿色发展协调演进的时空格局特征与类…

DOM中的元素获取方式、事件以及属性操作

一、WebApi介绍 1. Api的概念 API ( Application Programming Interface:应用程序编程接口) 是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组程序的能力,而又无需访问源码,无需了解其内部的工作…

26K star!学习AI也不难,这个项目讲的非常全

马上就要2024年了,谁不想学习一下AI相关的知识呢?怎么开始上手一直困扰着很多初学者,现在网上也充斥着各种搬运的垃圾课程,更是让人难以选择,我们就是希望帮初学者避开那些垃圾内容。 今天我们推荐的开源项目是微软推…

Windows上安装Go并配置环境变量(图文步骤)

前言 1. 本文主要讲解的是在windows上安装Go语言的环境和配置环境变量; Go语言版本:1.23.2 Windows版本:win11(win10通用) 下载Go环境 下载go环境:Go下载官网链接(https://golang.google.cn/dl/) 等待…

阿里大佬带你一周刷完 Java 面试八股文,比刷视频效果好多了

今天在脉脉刷到了这么一条消息,现在这个大环境,都后悔学 Java 了,想转行学前端, 看完很是震惊,据大数据统计,Java 的待遇是要好过前端的。小伙伴竟然被卷到想要转行......但是行情这个东西,也不…

Python实时视频流+网络摄像头+视频检测流程播放

实时视频处理 概述需求网络摄像头推流流媒体服务器查看设备视频、音频设备列表查看指定设备配置信息 不编码、指定分辨率推流编码加速python服务端处理多线程最终的处理方式 问题与分析 概述 一款桌面应用,可以配置视频处理参数,根据参数播放网络摄像头…

MySQL 8.4.0解压版安装记录

这几天,安装最新版mysql 8.4的时候,遇到了不少问题,网上的教程大多数都是旧版本的,也安装不成功。 参考了大量教程后,经过自己的摸索终于装好了,这里记录一下。 我下载的是8.4.0 LTS MySQL :: Download …

智绘城市地图:使用百度地图 API 实现智能定位

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

全网最易详解-数据仓库分区详解

最近要搭某个业务域的数仓,本来设计规划的挺好的,该搭DIM,DWD,DWS的也都设计好了,结果一跑数仓,全是大大小小的BUG,最后揪出来整个过程,最大的烦人东西就是设计ETL数据入库分区的问题。 那么这时候肯定有…

AI大模型学习路线,只看这一篇就够了!

1. 打好基础:数学与编程 数学基础 线性代数:理解矩阵、向量、特征值、特征向量等概念。 推荐课程:Khan Academy的线性代数课程、MIT的线性代数公开课。 微积分:掌握导数、积分、多变量微积分等基础知识。 推荐课程&#xff1a…

【Python爬虫实战】XPath与lxml实现高效XML/HTML数据解析

🌈个人主页:https://blog.csdn.net/2401_86688088?typeblog 🔥 系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html 目录 前言 一、为什么学习xpath和lxml (一)高效解析和提取数据 …

【软件】Ubuntu下QT的安装和使用

【软件】Ubuntu下QT的安装和使用 零、前言 QT是应用得比较广泛的程序框架,是因为其跨平台特性比较好,且用C/C作为开发语言,性能也比较好,故本文介绍如何安装和使用QT,用的版本是QT 6.2.4,由于QT在Windows…

windows安装deepspeed setup.py 207行找不到文件

一直报莫名奇妙的错误,查了半天也没查到 去看了一下源码,需要安装git,我没有安装 git命令获得信息也没啥用 直接注释掉 成功运行

HazyDet数据集:包含 383,000 雾霾场景中基于无人机的目标检测设计的大规模数据集

2024-09-30,由中国人民解放军陆军工程大学、南开大学、南京邮电大学和南京理工大学的研究人员联合创建了HazyDet数据集,目的解决无人机在恶劣天气条件下的环境感知问题。这个数据集的推出,极大地填补了相关基准测试的空白,为无人机…

Windows系统部署redis自启动服务

文章目录 引言I redis以本地服务运行(Windows service)使用MSI安装包配置文件,配置端口和密码II redis服务以终端命令启动缺点运行redis-server并指定端口和密码III 知识扩展确认redis-server可用性Installing the Service引言 服务器是Windows系统,所以使用Windows不是re…

Langchain CharacterTextSplitter无法分割文档问题

在使用Langchain的文档分割器时,使用CharacterTextSplitter拆分文档是,发现返回的文档根本没有变化,即使设置了chunk_size,返回的大小也不符合参数设置。 CharacterTextSplitter设置了150,但是根本没有处理&#xff0…

软件测试学习笔记丨Linux三剑客-sed

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/32521 一、简介 sed(Stream editor)是一个功能强大的文本流编辑器,主要用于对文本进行处理和转换。它适用于自动化处理大量的文本数据,能够支持…