【Python】【OpenCV】轮廓检测
Code:
1 import cv2
2 import numpy as np
3
4 img = np.zeros((200, 200), dtype=np.uint8)
5 img[50:150, 50:150] = 255
6
7 # ret, thresh = cv2.threshold(img, 127, 255, 0)
8 contours, hierarchy = cv2.findContours(img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
9 color = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
10 img = cv2.drawContours(color, contours, -1, (0, 255, 0), 2)
11 cv2.imshow('hierarchy', img)
12 cv2.waitKey()
13 cv2.destroyAllWindows()
1、创建一个200x200的正方形,初始化为0的array数组,数据类型为uint8。
2、获取中心正方形,大小为100x100,并将中心区域的灰度级置为255。
3、对img图像进行二值化,threshold(src, threshold, maxval, type) 方法,将图像分割为目标物体和背景两部分:
src:输入的源图像,灰度图像最常见。
thresh:设定的阈值,用于对图像进行分割。
maxval:当像素值超过阈值时,赋予的新的像素值。
type:阈值化类型,包括cv2.THRESH_BINARY(大于阈值的像素设为maxval,小于阈值的像素设为0)、cv2.THRESH_BINARY_INV(大于阈值的像素设为0,小于阈值的像素设为maxval)等多种类型。
对传入的img进行阈值化处理,0表示简单阈值化方法,即当像素点上的灰度级大于127时,则该点灰度级置为255,否则置为0。(本随笔中可以省略此段代码,但是针对其他多灰度级分布的灰度图或者彩色图这一步是必要的)
4、对img图像进行查找轮廓,findContours(image, mode, method) 方法,在二值图像中查找轮廓:
image:输入的二值图像,通常为经过阈值化处理后的图像。
mode:轮廓检索模式,指定轮廓的层次结构。可以选择的模式包括:
cv2.RETR_EXTERNAL:只检测最外层的轮廓。
cv2.RETR_LIST:检测所有的轮廓,并将其存储在列表中,不建立轮廓之间的等级关系。
cv2.RETR_CCOMP:检测所有的轮廓,并将其组织为两级层次结构。顶层为连通域的外围边界,次层为连通域的内围边界。
cv2.RETR_TREE:检测所有的轮廓,并将其组织为树形结构。
method:轮廓的近似方法。可以选择的方法包括:
cv2.CHAIN_APPROX_NONE:保存所有的轮廓点。
cv2.CHAIN_APPROX_SIMPLE:仅保存轮廓的端点,例如一个矩形框的四个角点。
cv2.CHAIN_APPROX_TC89_L1和cv2.CHAIN_APPROX_TC89_KCOS:使用 Teh-Chinl chain 近似算法进行轮廓压缩。
函数的返回值包括两部分:
contours:轮廓的坐标信息,以列表形式返回。每个轮廓都是一个由点坐标构成的数组。
hierarchy:轮廓的层次结构信息,以多维数组形式返回。
5、将img转换成BGR图像。
6、绘画轮廓,drawContours() 方法:
image:输入的图像,可以是彩色图像或灰度图像。
contours:要绘制的轮廓,通常是通过 findContours 函数获取到的轮廓列表。
contourIdx:指定要绘制的轮廓在列表中的索引。如果设置为 -1,则绘制所有的轮廓。
color:轮廓线的颜色,可以是一个三元组 (B, G, R) 表示的颜色值。
thickness:轮廓线的厚度,如果设置为 -1,则填充轮廓内部。
【Python】【OpenCV】轮廓检测的更多相关文章
- OpenCV 轮廓检测
使用OpenCV可以对图像的轮廓进行检测.这是之前用过的代码,挺简单的,回顾一下.主要要进行以下2步操作: 1.cvThreshold():对图像进行二值化处理 2.cvFindContours(): ...
- OpenCV轮廓检测,计算物体旋转角度
效果还是有点问题的,希望大家共同探讨一下 // FindRotation-angle.cpp : 定义控制台应用程序的入口点. // // findContours.cpp : 定义控制台应用程序的入 ...
- python opencv3 轮廓检测
git:https://github.com/linyi0604/Computer-Vision # coding:utf8 import cv2 import numpy as np # 创建一个2 ...
- python+opencv实现检测物体聚集区域
内容涉及:二值图像转换 / 检测连通区域面积 / 在原图上画框等 import cv2 import numpy as np for n in open('list.txt'): # list.txt ...
- OpenCV—Python 轮廓检测 绘出矩形框(findContours\ boundingRect\rectangle
千万注意opencv的轮廓检测和边缘检测是两码事 本文链接:https://blog.csdn.net/wsp_1138886114/article/details/82945328 1 获取轮廓 O ...
- 【python+opencv】直线检测+圆检测
Python+OpenCV图像处理—— 直线检测 直线检测理论知识: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进 ...
- OpenCV图像轮廓检测
轮廓检测: 轮廓检测的原理通俗的说就是掏空内部点,比如原图中有3*3的矩形点.那么就可以将中间的那一点去掉. 一.关键函数1.1 cvFindContours函数功能:对图像进行轮廓检测,这个函数将 ...
- OpenCV + python 实现人脸检测(基于照片和视频进行检测)
OpenCV + python 实现人脸检测(基于照片和视频进行检测) Haar-like 通俗的来讲,就是作为人脸特征即可. Haar特征值反映了图像的灰度变化情况.例如:脸部的一些特征能由矩形特征 ...
- 第十七节,OpenCV(学习六)图像轮廓检测
1.检测轮廓 轮廓检测是图像处理中经常用到的,OpenCV-Python接口中使用cv2.findContours()函数查找检测物体的轮廓. cv2.findContours(image, mode ...
- python+opencv实现车牌定位
写在前面 HIT大三上学期视听觉信号处理课程中视觉部分的实验三,经过和学长们实验的对比发现每一级实验要求都不一样,因此这里标明了是2019年秋季学期的视觉实验三. 由于时间紧张,代码没有进行任何优化, ...
随机推荐
- k8s 入门到实战--部署应用到 k8s
背景 最近这这段时间更新了一些 k8s 相关的博客和视频,也收到了一些反馈:大概分为这几类: 公司已经经历过服务化改造了,但还未接触过云原生. 公司部分应用进行了云原生改造,但大部分工作是由基础架构和 ...
- 2017-A
2017-A 题目描述: 输入一个字符串,要求输出能把所有的小写字符放前面,大写字符放中间,数字放后面,并且中间用空格隔开,如果同种类字符间有不同种类的字符,输出后也要用字符隔开. 例: 输入 12a ...
- 「loj - 3022」「cqoi 2017」老 C 的方块
link. good题,考虑像 国家集训队 - happiness 一样在棋盘上搞染色,我毛张 @shadowice1987 的图给你看啊 你像这样奇数层以 red -> blue -> ...
- Solution -「CF 1039D」You Are Given a Tree
Description Link. 有一棵 \(n\) 个节点的树,其中一个简单路径的集合被称为 \(k\) 合法当且仅当:树的每个节点至多属于其中一条路径,且每条路径恰好包含 \(k\) 个点. 对 ...
- 拟合优度R2较低怎么办
拟合优度R2较低怎么办 (1)回归分为解释型回归和预测型回归. 预测型回归一般才会更看重2. 解释型回归更多的关注模型整体显著性以及自变量的统计显著性和经济意义显著 性即可. (2)可以对模型进行调整 ...
- 计算机三级网络技术备考复习资料zhuan
计算机三级网络技术备考复习资料 第一章 计算机基础 分析:考试形式:选择题和填空题,6个的选择题和2个填空题共10分,都是基本概念 1.计算机的四特点:有信息处理的特性,有广泛适应的特性,有 ...
- CMP临时文件清理
■■ CMP临时文件 CMP - 指 Compression Advisor ,是 Oracle 数据库的压缩建议特性,在生成建议时产生的中间过程表,一般会自行删除.这个特性自 11.2.0.4 引入 ...
- 【图像处理】如何使用matplotlib 库显示灰度图像为自定义颜色
项目场景 我这里有一张名为airplane.jpg的灰度图像灰度图像 使用 matplotlib 库读取并显示: import matplotlib.pyplot as plt root=" ...
- OpenSSL 生成 RootCA (根证书)并自签署证书(支持 IP 地址)
背景 某机房内部访问需要配置 HTTPS,网上找的一些证书教程都不是特别好,有些直接生成证书,没有根 CA 的证书导致信任不了 Ubuntu 机器,有些教程只有域名生成,没有 IP 生成,有些甚至报错 ...
- Java虚拟机(JVM):第三幕:自动内存管理 - 垃圾收集器与内存分配策略
前言:Java与C++之间有一堵高墙,主要是有内存动态分配和垃圾收集技术组成的.墙外的人想要进来,墙内的人想要出去. 一.概述 每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的.内存的分配和 ...