查找轮廓(cv2.findCountours函数)
1.输入为二值图像,黑色为背景,白色为目标
2.该函数会修改原图像,因此若想保留原图像在,则需拷贝一份,在拷贝图里修改。
一.查找轮廓
cv2.findContours()
三个输入参数:输入图像(二值图像),轮廓检索方式,轮廓近似方法
1.轮廓检索方式
| cv2.RETR_EXTERNAL | 只检测外轮廓 |
| cv2.RETR_LIST | 检测的轮廓不建立等级关系 |
| cv2.RETR_CCOMP | 建立两个等级的轮廓,上面一层为外边界,里面一层为内孔的边界信息 |
| cv2.RETR_TREE | 建立一个等级树结构的轮廓 |
2.轮廓近似办法
| cv2.CHAIN_APPROX_NONE | 存储所有边界点 |
| cv2.CHAIN_APPROX_SIMPLE | 压缩垂直、水平、对角方向,只保留端点 |
| cv2.CHAIN_APPROX_TX89_L1 | 使用teh-Chini近似算法 |
| cv2.CHAIN_APPROX_TC89_KCOS | 使用teh-Chini近似算法 |
三个返回值:图像,轮廓,轮廓的层析结构
二.绘制轮廓
cv2.drawContours()
五个输入参数:原始图像,轮廓(python列表),轮廓的索引(当设置为-1时,绘制所有轮廓),画笔颜色,画笔大小
一个返回值:返回绘制了轮廓的图像
代码:
import cv2
img = cv2.imread('D:\\test\\contour.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret, binary = cv2.threshold(gray,127,255,cv2.THRESH_BINARY) binary , contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) # 输出为三个参数
cv2.drawContours(img,contours,-1,(0,0,255),3) cv2.imshow("img", img)
cv2.waitKey(0)
查找轮廓(cv2.findCountours函数)的更多相关文章
- Opencv笔记(十八)——轮廓的更多函数及其层次结构
凸缺陷 前面我们已经学习了轮廓的凸包,对象上的任何凹陷都被成为凸缺陷.OpenCV 中有一个函数 cv.convexityDefect() 可以帮助我们找到凸缺陷.函数调用如下: hull = cv2 ...
- OpenCV 查找轮廓
本文将结合实例代码,介绍 OpenCV 如何查找轮廓.获取边界框. 代码: contours.py OpenCV 提供了 findContours 函数查找轮廓,需要以二值化图像作为输入.并指定些选项 ...
- opencv查找轮廓---cvFindContours && cvDrawCountours 用法及例子
http://blog.csdn.net/timidsmile/article/details/8519751 环境: vs2008 + opencv2.1 先看,这两个函数的用法(参考 opencv ...
- Python开发:OpenCV版本差异所引发的cv2.findContours()函数传参问题
一.问题如下: cv2.findContours()这个方法是用来找出轮廓值的: # cv2.findContours找出轮廓值,cv2.RETR_EXTERNAL表示图像的外轮廓 binary, c ...
- 由查找session IP 展开---函数、触发器、包
由查找session IP 展开---函数.触发器.包 一.userenv函数.sys_context函数 --查看当前client会话的session IP信息 SQL>select sys_ ...
- opencv-python图像二值化函数cv2.threshold函数详解及参数cv2.THRESH_OTSU使用
cv2.threshold()函数的作用是将一幅灰度图二值化,基本用法如下: #ret:暂时就认为是设定的thresh阈值,mask:二值化的图像 ret,mask = cv2.threshold(i ...
- matlab中可用于进行轮廓提取的函数
本文主要总结一下在matlab中可用于进行轮廓提取的函数. 1 bwperim 根据参考资料[2]的提示,可以使用bwperim()函数进行轮廓提取,具体代码如下: %读取原图im = imread( ...
- python-opencv中的cv2.inRange函数
本次目标是将一副图像从rgb颜色空间转换到hsv颜色空间,颜色去除白色背景部分 具体就调用了cv2的两个函数,一个是rgb转hsv的函数 具体用法 hsv = cv2.cvtColor(rgb_ima ...
- opencv二值化的cv2.threshold函数
(一)简单阈值 简单阈值当然是最简单,选取一个全局阈值,然后就把整幅图像分成了非黑即白的二值图像了.函数为cv2.threshold() 这个函数有四个参数,第一个原图像,第二个进行分类的阈值,第三个 ...
随机推荐
- 【好用的Mac分屏软件】Magnet for Mac 2.3
「Magnet」是一款Mac窗口管理工具. 当您每次将内容从一个应用移动到另一应用时,当您需要并排比较数据时,或是以其他方式进行多任务处理时,你需要妥善放置所有窗口.Magnet 让这一过程清爽又 ...
- springboot启动报错Failed to configure a DataSource
2018-11-21 19:43:12.076 WARN 5392 --- [ main] ConfigServletWebServerApplicationContext : Exception e ...
- python 函数基础及装饰器
没有参数的函数及return操作 def test1(): print ("welcome") def test2(): print ("welcomt test2&qu ...
- JAVA核心技术I---JAVA基础知识(类的继承)
一:基本概念同C++一致 二:继承演示 .将共同点提取出来,即形成了父类/基类/超类 –Parent class/Base class/Super class .而其他类则自动成为子类/派生类 –Ch ...
- python (大文件下载及进度条展示) 验证客户端链接的合法性,socketserver
##########总结########### 文件校验加进度条显示 ####server import os import json import socket import struct impo ...
- 基于CentOS6.8版本配置真实域名的方法
前言:审核了15天的时间终于审核下来了,但是结果发现配置域名掉坑了,记录一下 (一)首先配置域名三步走 1.先到域名商网站解析你你的域名(我的是百度云) 2.接着修改linux的host指向 例如: ...
- Win32程序框架
// WinMsg.cpp : 定义应用程序的入口点. // #include "stdafx.h" #include <stdio.h> #include " ...
- lua 设置文件运行的环境
背景 在一个lua文件中书写的代码, 使用的变量, 需要设置其运行环境. 目的: 1. 不破坏全局环境. 2. 限定文件所使用的环境, 作为沙箱功能. 解法 限定运行空间环境的文件: local m ...
- HTML 实例学习(基础)
1.HTML <html> 标签 注意:对于中文网页需要使用 <meta charset="utf-8"> 声明编码,否则会出现乱码.有些浏览器会设置 GB ...
- 【codeforces 870F】Paths
Description You are given a positive integer n. Let's build a graph on vertices 1, 2, ..., n in such ...