本节代码使用的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 ...

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

  1. OpenCV学习笔记(十八):凸包,最小包围区域算子:convexHull(),minAreaRect(),minEnclosingTriangle(),minEnclosingCircle()

    OpenCV学习笔记(十八):凸包,最小包围区域算子:convexHull(),minAreaRect(),minEnclosingTriangle(),minEnclosingCircle() 1. ...

  2. 《python基础教程(第二版)》学习笔记 基础部分(第1章)

    <python基础教程(第二版)>学习笔记 基础部分(第1章) python常用的IDE: Windows: IDLE(gui), Eclipse+PyDev; Python(comman ...

  3. python segy格式地震数据读写包segyio学习笔记(二)

    python segy格式地震数据读写包segyio学习笔记(二) 最近大致搞明白了segyio读取叠后和叠前segy数据的方法,以及内部存储结构,以两段代码为例: 叠后数据读取.这是一个从给定时窗内 ...

  4. Python 基础学习笔记 03

    Python基础系列 Python 基础学习笔记 01 Python 基础学习笔记 02 Python 基础学习笔记 03 Python 基础学习笔记 04 Python 基础学习笔记 05 文章目录 ...

  5. python word 操作 doc 文件格式转docx 格式 学习笔记

    python word 操作 doc 文件格式转docx 格式 学习笔记 from win32com import client as wc import time # TODO file_0 = & ...

  6. OpenCV学习笔记(六)——感兴趣区域ROI(浅拷贝与深拷贝的区别)

    目录 1 浅拷贝 2 深拷贝 示例代码 有时我们只对一张图像中的部分区域感兴趣,而原图像又比较大,如果带着非感兴趣区域一起处理会占用大量的内存,因次我们希望从原图像中截取部分图像后再进行处理.我们将这 ...

  7. Python快速编程入门#学习笔记03# |第二章 :Python基础(代码格式、标识符关键字、变量和数据类型、数字类型以及运算符)

    全文目录 ==先导知识== 学习目标: 2.1 代码格式 2.1.1 注释 2.1.2 缩进 2.1.3 语句换行 2.2 标识符和关键字 2.2.1 标识符 2.2.2 关键字 2.3 变量和数据类 ...

  8. PDF下载!《Python十大基础专题》《247个Python综合案例》《Pandas 20页学习笔记》...

    Python 技术栈 完整学习路线 如今书籍汗牛充栋,如何从零.循序渐进地掌握Python技术栈,成为很多读者朋友们关心的问题.最近,我特意按照Python技术栈的学习逻辑,把它划分为六个阶段,并且给 ...

  9. python中socket模块常用吗_python网络学习笔记——socket模块使用记录

    此文章记录了笔者学习python网络中socket模块的笔记. 建议初次学习socket的读者先读一遍socket模块主要函数的介绍. socket模块的介绍可以参考笔者的前一篇关于socket官方文 ...

最新文章

  1. 我不懂,数学家为啥老跟驴过不去?
  2. panda对于EXCEL单元赋值如何能够设置string?
  3. 初学者自学python要看什么书-从python初学者到入门算法,这几本书一定要看,附PDF...
  4. python画图的模块_python强大的绘图模块matplotlib示例讲解
  5. ECShop的数据操作类文件
  6. 类模板实现基于数组的栈
  7. linux颜色吸取工具,8 个优秀的 Linux 图形图像及色彩工具
  8. dagger2的初次使用
  9. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]45.描述一些对抗RSA侧信道攻击的防御方法
  10. 计算机领域中所谓课机是指,1.计算机基础知识题及答案
  11. 中文文本聚类(切词以及Kmeans聚类)
  12. 虚拟机搭建Hadoop集群学习笔记(1)
  13. 完整BBS系统开发流程及结果展示
  14. No toolchains found in the NDK toolchains folder for ABI with prefix:XXX
  15. 2015版本的pdf文件合并拆分软件
  16. RC滤波分析计算——信号与系统
  17. excel中添加有效性验证或数据验证时不选择第一行列标题的解决方法
  18. 什么是DDOS流量攻击,DDoS防护手段
  19. Codeforces 1089D Eels (看题解)
  20. 中学计算机教师论文,信息技术教师论文 中学计算机教学之点滴心得

热门文章

  1. Loj #2585. 「APIO2018」新家
  2. 计算机cct证书含金量排名,省考CCT和国考NCRE的区别?
  3. 常见数据结构-栈-队列-数组-链表-哈希表
  4. 方舟手游服务器信息介绍,方舟生存进化手机版PVX服务器介绍 PVX服务器玩法
  5. 静觅小白爬虫及进阶系列学习笔记
  6. centos 开启关闭网卡(禁用网卡)
  7. 汇编代码--立即数的概念与判断方法
  8. js 中文转拼音缩写
  9. 计算机等级怎么查ip地址,ip查地址方法是什么【图文教程】
  10. ORA-02019:未找到远程数据库的连接说明(数据库链接创建)