python半径为3圆形区域边界曲线_OpenCV 学习笔记03 边界框、最小矩形区域和最小闭圆的轮廓...

本节代码使用的opencv-python 4.0.1,numpy 1.15.4 + mkl

使用图片为 Mjolnir_Round_Car_Magnet_300x300.jpg

代码如下:

import cv2

import numpy as np

# img = cv2.imread('lightning.jpg',0)

img = cv2.imread('Mjolnir.jpg',cv2.IMREAD_UNCHANGED)

# img = cv2.pyrUp(img)

img_gray = cv2.cvtColor(img.copy(), cv2.COLOR_BGR2GRAY)

ret, re_img = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY)

contours, hierarchy = cv2.findContours(re_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

for c in contours:

# # find bounding box coordinates

# # 现计算出一个简单的边界框,c为图像轮廓findContours返回值

x, y, w, h = cv2.boundingRect(c) # 将轮廓信息转换成(x, y)坐标,并加上矩形的高度和宽度

# # print(cv2.boundingRect(c))

cv2.rectangle(img, (x,y), (x+w, y+h), (0, 255, 0), 2) # 画出矩形

# print(help(cv2.rectangle))

# # find minimum area

# # 计算包围目标的最小矩形区域

# rect = cv2.minAreaRect(c)

# # print(help(cv2.minAreaRect))

# # calculate coordinate of the minimum area rectangle

# box = cv2.boxPoints(rect)

# # print(help(cv2.boxPoints))

# # normalize coordinates to integers

# box =np.int64(box)

# # 注:OpenCV没有函数能直接从轮廓信息中计算出最小矩形顶点的坐标。所以需要计算出最小矩形区域,

# # 然后计算这个矩形的顶点。由于计算出来的顶点坐标是浮点型,但是所得像素的坐标值是整数(不能获取像素的一部分),

# # 所以需要做一个转换

# # draw contours

# cv2.drawContours(img, [box], 0, (0, 0, 255), 3) # 画出该矩形

# calculate center and radius of minimum enclosing circle

# 会返回一个二元组,

# 第一个元素为圆心的坐标组成的元组,第二个元素为圆的半径值。

# (x, y), radius = cv2.minEnclosingCircle(c)

# # 转为整数 cast to integers

# center = (int(x), int(y))

# radius = int(radius)

# # 绘圆 draw the circle

# img = cv2.circle(img, center, radius, (0, 255, 0), thickness=2,lineType=8,shift=6)

# print(help(cv2.circle))

cv2.drawContours(img, contours, -1, (255, 0, 0), 1)

cv2.imshow("contours", img)

cv2.waitKey()

cv2.destroyAllWindows()

运行如下

该部分代码与

中最后一部分全代码分析内容相同。

OpenCV 学习笔记03 findContours函数

opencv-python   4.0.1 1 函数释义 词义:发现轮廓! 从二进制图像中查找轮廓(Finds contours in a binary image):轮廓是形状分析和物体检测和识别的 ...

【opencv学习笔记六】图像的ROI区域选择与复制

图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...

OpenCV 学习笔记03 boundingRect、minAreaRect、minEnclosingCircle、boxPoints、int0、circle、rectangle函数的用法

函数中的代码是部分代码,详细代码在最后 1 cv2.boundingRect 作用:矩形边框(boundingRect),用于计算图像一系列点的外部矩形边界. cv2.boundingRect(arr ...

OpenCV 学习笔记03 凸包convexHull、道格拉斯-普克算法Douglas-Peucker algorithm、approxPloyDP 函数

凸形状内部的任意两点的连线都应该在形状里面. 1 道格拉斯-普克算法 Douglas-Peucker algorithm 这个算法在其他文章中讲述的非常详细,此处就详细撰述. 下图是引用维基百科的.ε ...

OpenCV学习笔记(一) - 边界填充、Rect函数

边界填充: c++实现,测试在mac pro里,输入720p时间0.4ms: cv::copyMakeBorder(image, dst, , , , , cv::BORDER_REPLICATE); ...

OpenCV 学习笔记03 直线和圆检测

检测边缘和轮廓不仅重要,还经常用到,它们也是构成其他复杂操作的基础. 直线和形状检测与边缘和轮廓检测有密切的关系. 霍夫hough 变换是直线和形状检测背后的理论基础.霍夫变化是基于极坐标和向量开展的 ...

OpenCV 学习笔记03 drawContours函数

opencv-python   4.0.1 轮廓的绘制或填充. cv2.drawContours(image, contours, contourIdx, color[, thickness[, li ...

OpenCV 学习笔记03 threshold函数

opencv-python   4.0.1 简介:该函数是对数组中的每一个元素(each array element)应用固定级别阈值(Applies a fixed-level threshold) ...

【opencv学习笔记】SetImageROI函数设置ROI区域的作用及用法

虽然先前知道ROI区域是感兴趣区域,但是真正看到调用了OpenCV的cvSetImageROI函数时,并不知道它的作用,所以还是单独写了一段代码对这个函数进行探究.   OpenCVchm文档中对cv ...

随机推荐

《深入浅出WPF》笔记二

1.消息驱动与事件驱动 事件 即封装过的消息 2.数据驱动 3.Binding Source.Target.Path.INotifyPropertyChanged结构 this.textBoxName ...

my sql

如果改了上面的4个配置文件,要让其立即生效,可以使用如下方法 source .bash_profile . .bash_profile 基于Apache+php+mysql的许愿墙网站的搭建 方案一: ...

JVM的类装载子系统

在JAVA虚拟机中,负责查找并装载类型的那部分被称为类装载子系统. JAVA虚拟机有两种类装载器:启动类装载器和用户自定义类装载器.前者是JAVA虚拟机实现的一部分,后者则是Java程序的一部分.由不 ...

Hibernate中的一对一映射

1.需求 用户和身份证是一一对应的关系. 有两种对应方式: 用户id作为身份证表的外键,身份证号作为主键: 用户id作为身份证表的主键: 2.实体Bean设计 User: public class U ...

[BZOJ2002] [Hnoi2010] Bounce 弹飞绵羊 (LCT)

Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置 ...

HBase之HRegionServer启动(含与HMaster交互)

在我的博文.中已经详细介绍过HMaster在启动过程中调用的各种方法.下面,单就HRegionS ...

Linux下修改用户的UID、GID

01.用户的UID和GID不能被占用 [root@26 ~]# id mvpuid=503(mvp) gid=503(mvp) groups=503(mvp) ###假定我需要设置mvp的uid/gi ...

DAY 04 while和for循环

1.结束while循环的两种方式: 1.修改条件:等到下一次循环开始判断条件为假时才会结束循环,剩余代码块依旧会执行 2.break:直接结束本层循环,跳过剩余代码 2.while+continue ...

一次关于()=>({})的使用

今天遇到了一个问题,值得一记 首先在我看项目代码时发现了一个问题 有一个JS的export如下 大家可以注意一下config 这里为什么要如此写法呢? 首先这里用的时ES6的箭头函数 ()=>{ ...

[原][粒子特效][spark]粒子系统system、主节点group、渲染器render

深入浅出spark粒子特效连接:https://www.cnblogs.com/lyggqm/p/9956344.html system: A class defining a complete sy ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值