python opencv实现目标外接图形

 更新时间:2022年08月01日 10:18:03   作者:DanCheng-studio  
这篇文章主要为大家详细介绍了python opencv实现目标外接图形,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了python opencv实现图像目标的外接图形,供大家参考,具体内容如下

当使用cv2.findContours函数找到图像中的目标后,我们通常希望使用一个集合区域将图像包围起来,这里介绍opencv几种几何包围图形。

  • 边界矩形
  • 最小外接矩形
  • 最小外接圆

简介

无论使用哪种几何外接方法,都需要先进行轮廓检测。

当我们得到轮廓对象后,可以使用boundingRect()得到包裹此轮廓的最小正矩形,minAreaRect()得到包裹轮廓的最小矩形(允许矩阵倾斜),minEnclosingCircle()得到包裹此轮廓的最小圆形。

最小正矩形和最小外接矩形的区别如下图所示:

实现

这里给出上述5中外接图形在python opencv上的实现:

①. 边界矩形

import cv2
import numpy as np

img = cv2.imread('/home/pzs/图片/test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thresh, binary = cv2.threshold(gray, 180, 255, cv2.THRESH_BINARY_INV)
binary, contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
cv2.imshow('binary', binary)
cv2.waitKey(0)

for cnt in contours:
    x,y,w,h = cv2.boundingRect(cnt)
    cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 1)

cv2.imshow('image', img)
cv2.waitKey(0)

②. 最小外接矩形

import cv2
import numpy as np

img = cv2.imread('/home/pzs/图片/test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thresh, binary = cv2.threshold(gray, 180, 255, cv2.THRESH_BINARY_INV)
binary, contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
cv2.imshow('binary', binary)
cv2.waitKey(0)

for cnt in contours:
    rect = cv2.minAreaRect(cnt)
    box = cv2.boxPoints(rect)
    box = np.int0(box)
    cv2.drawContours(img, [box], 0, (0, 0, 255), 2)


cv2.imshow('image', img)
cv2.waitKey(0)

③. 最小外接圆

import cv2
import numpy as np

img = cv2.imread('/home/pzs/图片/test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thresh, binary = cv2.threshold(gray, 180, 255, cv2.THRESH_BINARY_INV)
binary, contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
cv2.imshow('binary', binary)
cv2.waitKey(0)

for cnt in contours:
    (x, y), radius = cv2.minEnclosingCircle(cnt)
    center = (int(x), int(y))
    radius = int(radius)
    cv2.circle(img, center, radius, (255, 0, 0), 2)

cv2.imshow('image', img)
cv2.waitKey(0)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 利用Python实现微信找房机器人实例教程

    利用Python实现微信找房机器人实例教程

    这篇文章主要给大家介绍了关于如何利用Python实现微信找房机器人的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • Python如何实现网络自动化运维华为设备

    Python如何实现网络自动化运维华为设备

    本文介绍了如何使用Python实现华为设备的网络自动化运维,包括环境配置、设备配置、功能模块实现和SFTP文件传输测试
    2024-11-11
  • opencv实现图像缩放效果

    opencv实现图像缩放效果

    这篇文章主要为大家详细介绍了opencv实现图像缩放效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • Python文本处理之按行处理大文件的方法

    Python文本处理之按行处理大文件的方法

    下面小编就为大家分享一篇Python文本处理之按行处理大文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • 使用Python实现解析HTML的方法总结

    使用Python实现解析HTML的方法总结

    HTML(Hypertext Markup Language)是互联网世界中的通用语言,用于构建网页,本文主要为大家介绍了如何使用Python解析HTML,包括各种方法和示例代码,希望对大家有所帮助
    2023-11-11
  • 如何在Python项目中做多环境配置(环境变量使用.env文件)

    如何在Python项目中做多环境配置(环境变量使用.env文件)

    实际工程开发中常常会对开发、测试和生产等不同环境配置不同的数据库环境,传统方式可以通过添加不同环境的配置文件达到部署时的动态切换的效果,这篇文章主要给大家介绍了关于如何在Python项目中做多环境配置的相关资料,环境变量使用.env文件,需要的朋友可以参考下
    2024-06-06
  • Python基础教程之错误和异常的处理方法

    Python基础教程之错误和异常的处理方法

    程序在运行时,如果python解释器遇到一个错误,会停止程序的执行,并且提示一些错误信息,这就是异常,下面这篇文章主要给大家介绍了关于Python基础教程之错误和异常的处理方法,需要的朋友可以参考下
    2022-05-05
  • 解决pycharm下os.system执行命令返回有中文乱码的问题

    解决pycharm下os.system执行命令返回有中文乱码的问题

    今天小编就为大家分享一篇解决pycharm下os.system执行命令返回有中文乱码的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python yield使用方法示例

    Python yield使用方法示例

    这篇文章主要介绍了Python yield使用方法,大家参考使用吧
    2013-12-12
  • 详解Python with/as使用说明

    详解Python with/as使用说明

    这篇文章主要介绍了Python with/as使用说明,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12

最新评论