图像轮廓

Contours:轮廓
轮廓是将没有连着一起的边缘连着一起。
边缘检测检测出边缘,边缘有些未连接在一起。

注意问题
1.对象为二值图像,首先进行阈值分割或者边缘检测。
2.查找轮廓需要更改原始图像,通常使用原始图像的一份进行拷贝。
3.在opencv里,是从黑色背景里找白色。因此对象必须是白色,背景为黑色。

方法

cv2.findContours()
cv2.drawContours()
通过cv2.findContours() 查找轮廓在哪里,再通过 cv2.drawContours()将查找的轮廓绘制出来。

contours,hierarchy=cv2.findContours(image,mode,method)
contours:轮廓
hierarchy:图像的拓扑信息(轮廓层次)(存储上一个轮廓,父轮廓…)
image:原始图像
mode:轮廓检索方式
method:轮廓的近似方法

r=cv2.drawContours(image, contours, contourIdx, color[, thickness])
r:目标图像
image:原始图像
contours: 所有的输入轮廓边缘数组
contourIdx :需要绘制的边缘索引,如果全部绘制为-1。如果有多个目标,可以绘制第一个目标0,第二个目标1,第三个目标2.。。
color:绘制的颜色,为BGR格式的SCalar
thickness:可选,绘制的密度,即轮廓的画笔粗细

import cv2
import numpy as np
o = cv2.imread('lena256.bmp')
gray = cv2.cvtColor(o,cv2.COLOR_BGR2GRAY)#BGR-灰度
ret, binary = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)#二值图像
contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
co=o.copy()#对原始图像进行绘制
r=cv2.drawContours(co,contours,-1,(0,127,127),4)#co为复制图像,轮廓会修改原始图像
cv2.imshow("original",o)
cv2.imshow("contours",r)
cv2.waitKey()

cv2.cvtColor(input_image, flag)用于颜色空间转换。
input_image:需要转换的图像
flag:转换类型
cv2.COLOR_BGR2GRAY : BGR -灰度
cv2.COLOR_BGR2RGB:BGR-RGB
cv2.COLOR_BGR2HSV:BGR-HSV
总目录链接:
python3+opencv学习笔记汇总目录(适合基础入门学习)

进阶版图像轮廓应用:
opencv进阶学习笔记12:轮廓发现和对象测量

电气专业的计算机小白,写博文不容易。如果你对本文感兴趣。请点个赞支持下,谢谢。

opencv学习笔记20:图像轮廓相关推荐

  1. OpenCV学习笔记(九)——图像轮廓(下)

    <OpenCV轻松入门:面向Python>学习笔记(九) 1-3 查找并绘制轮廓.矩特性及Hu矩 4-5 轮廓拟合及凸包 6. 利用形状场景算法比较轮廓 6.1 计算形状场景距离 6.2 ...

  2. C++下opencv学习笔记(一)(图像的简单读取丶显示与存储)

    C++下opencv学习笔记(一)(图像的简单读取丶显示与存储) 前言 学习C++ OpenCV,第一需要具备面向对象语言的基础,第二要对图像处理机器学习有基础了解,容易入门.觉得自己基础已经有了可以 ...

  3. Opencv学习笔记(八) -- 图像色彩空间转换

    1.常见图像色彩空间 RGB RGB色彩模式是工业界的一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红.绿.蓝三个通道 ...

  4. OpenCV学习笔记(七)——图像梯度及边缘检测

    图像梯度计算的是图像变化的速度.对于图像的边缘部分,其灰度值变化较大,梯度值也较大:相反,对于图像中比较平滑的部分,其灰度值变化较小,相应的梯度值也较小.一般情况下,图像梯度计算的是图像的边缘信息. ...

  5. 《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(四)图像的矩

    8.4 图像的矩 从一幅数字图形中计算出来的矩集,通常描述了该图像形状的全局特征,并提供了大量关于该图像不同类型的几何特性信息,如大小.位置.方向.形状等 (1)一阶矩与形状有关 (2)二阶矩显示曲线 ...

  6. 《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(一)查找并绘制轮廓

    第8章 图像轮廓与图像分割修复 8.1 查找并绘制轮廓 8.1.1 寻找轮廓:findContours()函数 1.作用:在二值图像中寻找轮廓 2.函数原型: void findcontours(In ...

  7. [OpenCV学习笔记3][图像的加载+修改+显示+保存]

    正式进入OpenCV学习了,前面开始的都是一些环境搭建和准备工作,对一些数据结构的认识主要是Mat类的认识: [1.学习目标] 图像的加载:imread() 图像的修改:cvtColor() 图像的显 ...

  8. OpenCV学习笔记之图像融合

    一.线性融合操作 线性混合操作 也是一种典型的二元(两个输入)的 像素操作 : 通过在范围  内改变  ,这个操可以用来对两幅图像或两段视频产生时间上的 画面叠化 (cross-dissolve)效果 ...

  9. 《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(五)分水岭算法(watershed algorithm)

    8.5 分水岭算法(watershed algorithm) 1.基于拓扑理论的数学形态学的分割方法. 2.基本思想:把图像看作测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局 ...

最新文章

  1. href=#与href=javascript:void(0)的区别
  2. 解决某东对ip限制若兰(nolanjdc)无法获取短信验问题
  3. 【数学和算法】初识卡尔曼滤波器(二)
  4. 菜鸟学Linux命令:端口查看和操作命令
  5. 北大教授:到底什么才是有效的教育?
  6. 微服务难点剖析 | 服务拆的挺爽,问题是日志该怎么串联起来呢?
  7. Matlab画箭头arrow.m
  8. linux mysql8源码安装_linux 源码安装mysql8
  9. linux清理垃圾文件,linux如何清理系统垃圾
  10. 制作自己的印章,和自己的爱人表白纪念!
  11. iOS 定位和地图
  12. 永不服输的Java之路---重学Java (第一章)
  13. [附源码]java毕业设计创意众筹网站
  14. 获取屏幕浏览器的宽高
  15. BJTU1853 gangpener 买零食
  16. Ubuntu安装Anaconda详细步骤(Ubuntu21.10,Anaconda3)
  17. Java学习笔记(22)Developing Efficient Algorithms
  18. 今晚,为梅西和莫德里奇熬夜!这个CV模型,让你猜球必赢
  19. 11. shell当中read详解,read语法选项,read用法示例,脚本示例,while read line详解,掌握原则
  20. (PMP)第13章-----项目相关方管理

热门文章

  1. python中定义的函数不掉用不会执行_如果出现异常/错误,如何不在python中停止执行其他函数...
  2. SpringBoot事件与监听机制
  3. Tomcat启动问题,启动是Tomcat8,结果却是Tomcat9
  4. JavaFX——fxml文件加载错误:[javafx.fxml.LoadException]解决方案之一
  5. Nearest Common Ancestors
  6. 学习心得体会、备忘录整理
  7. Android 5中不同效果的Toast
  8. JavaWeb学习之路——SSM框架之SpringMVC(九)
  9. IOS开发之自定义UIActionSheet
  10. Swagger2 添加HTTP head参数