(Opencv06)绘制轮廓函数】的更多相关文章

(Opencv06)绘制轮廓函数 cv2.drawContours(image, contours, contourIdx, color, thickness) img: 指在哪副图像上绘制轮廓 会改变原图像,如果要保留原图像就img.copy() image为三通道才能显示轮廓 contours: 轮廓本身,在python中是一个list contourldx: 指定绘制轮廓list中的哪条轮廓,如果是-1,则绘制其中的所有轮廓 color: 颜色 bgr模式 如(0, 0, 255) thi…
FindContours 在二值图像中寻找轮廓  int cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_contour,  int header_size=sizeof(CvContour), int mode=CV_RETR_LIST,  int method=CV_CHAIN_APPROX_SIMPLE, CvPoint offset=cvPoint(0,0) ); image  输入的 8-比特.单通道…
好久没有更新了,原谅自己放了个假最近又在赶进度,所以...更新的内容是很靠后的第八章,因为最近工作要用就先跳了,后面会更新笔记编号...加油加油! 在二值图像中寻找轮廓 void cv::findContours ( InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset = Point() ) image: 输入图像,需为8位单…
查找并绘制轮廓 寻找轮廓(findContours)函数 绘制轮廓(drawContours()函数) 基础实例程序:轮廓查找 #include <opencv2/opencv.hpp> #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" using namespace cv; using namespace std; //--------------…
轮廓图像与 Canny 图像的区别 一个轮廓一般对应一系列的点,也就是图像中的一条曲线.轮廓图像和 Canny 图像乍看起来表现几乎是一致的,但其实组成两者的数据结构差别很大: Canny 边缘图像是一个点的集合,点与点之间没有联系. 轮廓图像是一个点集的集合,每个点集(即轮廓)内的点都是相邻的,点集与点集之间也存在前后.父内等关系. 寻找轮廓:findContours 函数 findContours 函数用于在二值图像中寻找轮廓. void findContours(InputArray im…
<!-- <!doctype html> --> <html lang="en"> <head> <meta charset="UTF-8"> <title>js绘制数学函数</title> </head> <body> <div id="main" style="border-bottom:solid red 0px;he…
#-*- coding:utf-8 -*- import cv2 import numpy as np #1.导入图像 #img = cv2.imread("home.jpg",0) #因为还有在原始图像绘制轮廓,不能读入灰度图像 img = cv2.imread("home.jpg") img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #2.二值化处理, ret,thresh = cv2.threshold(img_g…
1.绘制分段函数:y=4sin(4πt)-sgn(t-0.3)-sgn(0.72-t) import numpy as npimport matplotlib.pyplot as plt#绘制分段函数:y=4sin(4πt)-sgn(t-0.3)-sgn(0.72-t) def sgn(x): if x > 0: return 1 elif x < 0: return -1 else: return 0 t = np.arange(0, 1, 0.01)y = []for i in t: y_…
findContours(): 第二个参数为一个检测到的轮廓,函数调用后的运算结果都放在这里,每个轮廓存储为1个点向量,用point类型的vector表示. 第三个参数表示轮廓数量,包含了许多元素.每个轮廓对应4个hierarchy元素hierarchy[i][0]——hierarchy[i][3],分别表示后一个轮廓,前一个轮廓,父轮廓,内嵌轮廓的索引编号.drawContours()函数: 第二个参数:所有的输入轮廓,用point类型的vector表示. 第三个参数:轮廓绘制的指示变量 第四…
我们经常会遇到这种情况,有一个数学函数,我们希望了解他的图像,这个时候使用python 的matplotlib就可以帮助我们. 用sigmoid函数来举个例子. sigmoid函数: 代码: import numpy as np import matplotlib.pyplot as plt x=np.linspace(-5,5,1000)  #这个表示在-5到5之间生成1000个x值 y=[1/(1+np.exp(-i)) for i in x]  #对上述生成的1000个数循环用sigmoi…
numpy和matplotlib的简单应用 一.numpy库 1.什么是numpy NumPy系统是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)). numpy是科学计算包,支持N维数组运算.处理大型矩阵.成熟的广播函数库.矢量运算.线性代数.傅里叶变换.随机数生成,并可与C++/Fortran语言无缝结合. 2.numpy的安装 在Pyt…
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { Mat src = imread("test.jpg"); Mat src_gray,binary,dst=Mat::zeros(src.size(),CV_8UC3); if (src.empty()) { pri…
想要的效果: 编程时要用到分段函数曲线的绘制方法:..+.*(分段条件). 需要注意的是:函数表达式中的乘除和乘方都要加“.”.因为一般的函数都是数在乘变量运算. x=-:; a=-0.5; w=abs(x); y=(-+).*(w<=)+(-+-.*w+).*(w>&w<=); plot(x,y); box off; view([ ]); xlabel('w'); ylabel('S(w)'); 然后想将坐标轴变一下: 新建一个xyplot.m文件: function xypl…
Python绘制正余弦函数图像 # -*- coding:utf-8 -*- from matplotlib import pyplot as plt import numpy as np import mpl_toolkits.axisartist as axisartist def sigmoid(x): return 1. / (1 + np.exp(-x)) def tanh(x): return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.ex…
学习并尝试了利用matplotlib进行3D函数图像的绘制 import matplotlib.pyplot as plt # 绘图用的模块 from mpl_toolkits.mplot3d import Axes3D # 绘制3D坐标的函数 import numpy as np def fun(x, y): return np.power(x, 2) + np.power(y, 2) fig1 = plt.figure() # 创建一个绘图对象 ax = Axes3D(fig1) # 用这个…
凸缺陷,以及如何找到凸缺陷 找某一点到一个多边形的最短距离 不同形状的匹配 1.凸缺陷 前面已经设计了轮廓的凸包和凸性缺陷的概念.OpenCV中有一个函数cv2.convexityDefect()可以帮助我们找到凸缺陷: hull = cv2.convexHull(cnt,returnPoints=False)#这里必须是False defect = cv2.convexityDefects(cnt,hull) 它会返回一个数组,每一行的值为[起点,终点,最远的点,到最远点的近似距离].我们可以…
一.安装相关软件 在Windows中安装VirtualBox: 在VirtualBox中安装Ubuntu Server: 在Ubuntu Server中安装cifs-utils:sudo apt-get install cifs-utils: 在Ubuntu Server中安装Octave:sudo apt-get install octave transfig epstool. 二.在Windows和Ubuntu Server之间建立共享目录 在Windows中共享一个share文件夹,网络权…
1.安装matplotlib pip3 install matplotlib sudo apt install python3-tk 2.分段函数 from pylab import * x = linspace(0,8,200) cond = [True if (i > 2 and i < 5) else False for i in x] y = sin(x)*(x<2)+cos(x)*cond + x*(x>5) plot(x,y),show() 3.…
什么是轮廓? 轮廓是一系列相连的点组成的曲线,代表了物体的基本外形. 轮廓与边缘好像挺像的? 是的,确实挺像,那么区别是什么呢?简而言之,轮廓是连续的,而边缘并不全都连续(见下图示例).其实边缘主要是作为图像的特征使用,比如可以用边缘特征可以区分脸和手,而轮廓主要用来分析物体的形态,比如物体的周长和面积等,可以说边缘包括轮廓. 边缘和轮廓的区别(图片来源:http://pic.ex2tron.top/cv2_understand_contours.jpg) 寻找轮廓的操作一般用于二值化图,所以通…
#!/usr/bin/env python #coding=GBK from mpl_toolkits.mplot3d import Axes3D from matplotlib import cm from matplotlib.ticker import LinearLocator, FormatStrFormatter import matplotlib.pyplot as plt import numpy as np fig = plt.figure() ax = fig.gca(pro…
#include"stdio.h" #include"math.h" void main() { double y; int x,m; for(y=1;y>=-1;y-=0.1) { m=acos(y)*10; for(x=1;x<m;x++) printf(" "); printf("*"); for(;x<62-m;x++) printf(" "); printf("*&qu…
来自:Eastmount 在我们日常生活中Power Law(幂次分布,Power-law Distributions)是常见的一个数学模型,如二八原则.这个世界上是20%的人掌握80%的人的金钱去经营,20%的人口拥有80%的财富,20%的上市公司创造80%的价值,80%的收入来自20%的商品等. 下图表示人类的财富幂律分布图,极少数人拥有微弱优势的人却拥有天文级别的财富. 为什么会有这样的差别呢? 这是因为时间的乘积效应,智力上的微弱优势,乘以时间,就会得到价值(财富)几何级的增长.   …
这个系列的目的是通过对OpenCV示例,进一步了解OpenCV函数的使用,不涉及具体原理. 示例代码地址:http://docs.opencv.org/3.0.0/examples.html(安装openCV时可框选)   目录 简介 Example运行截图 Example分析 Example代码   简介 本文记录了对OpenCV示例contours2.cpp的分析. 资料地址:http://docs.opencv.org/3.0.0/d0/d2a/contours2_8cpp-example…
1.图像轮廓 1.1图像轮廓与API函数 轮廓是一系列相连的点组成的曲线,代表了物体的基本外形,相对于边缘,轮廓是连续的,边缘并不全部连续.一般地,获取图像轮廓要经过下面几个步骤: 1)     读取图片. 2)     将彩色图像转换成灰度图像. 3)     将灰度图像转换成二值图形并查找其二值图像边缘即可(如canny边缘检测). 4)     显示轮廓边缘. findContours寻找轮廓函数,原型为: CV_EXPORTS_W void findContours( InputOutp…
1.初识轮廓 为了准确,要使用二值化图像.在寻找轮廓之前,要进行阈值化处理,或者Canny边界检测. 查找轮廓的函数会修改原始图像.如果你在找到轮廓之后还想使用原始图像的话,你应该将原始图像存储到其他变量中.   在 OpenCV 中,查找轮廓就像在黑色背景中超白色物体.你应该记住, 要找的物体应该是白色而背景应该是黑色. 让我们看看如何在一个二值图像中查找轮廓:   函数 cv2.fifindContours() 有三个参数,第一个是输入图像,第二个是 轮廓检索模式,第三个是轮廓近似方法.返回…
轮廓是定义或限定形状或对象的边或线,是机器视觉中的常用的概念,多用于目标检测.识别等任务. 关于OpenCV轮廓操作,尤其是级别及如何使用轮廓级别进行筛选等问题,相关文章比较少,正好最近用到,因此将其总结成文. 本文主要介绍OpenCV的查找轮廓函数findContours()绘制函数drawContours(),及其轮廓级别参数hierarchy,涉及到预处理.轮廓筛选等内容,并提供全部源代码,希望能帮助大家理解基本概念并能借鉴示例代码编写自己的算法. 本文代码:C++ 本文包括如下内容: 基…
转摘网址为:http://www.cnblogs.com/slysky/archive/2011/10/14/2212227.html 虽然Canny之类的边缘检测算法可以根据像素间的差异检测出轮廓边界的像素,但是它并没有将轮廓作为一个整体.下一步是要将这些边缘像素组装成轮廓. 轮廓是构成任何一个形状的边界或外形线.直方图对比和模板匹配根据色彩及色彩的分布来进行匹配,以下包括:轮廓的查找.表达方式.组织方式.绘制.特性.匹配. 首先回忆下几个结构体: 首先是图像本身的结构体:typedef st…
1.输入为二值图像,黑色为背景,白色为目标 2.该函数会修改原图像,因此若想保留原图像在,则需拷贝一份,在拷贝图里修改. 一.查找轮廓 cv2.findContours() 三个输入参数:输入图像(二值图像),轮廓检索方式,轮廓近似方法 1.轮廓检索方式 cv2.RETR_EXTERNAL 只检测外轮廓 cv2.RETR_LIST 检测的轮廓不建立等级关系 cv2.RETR_CCOMP 建立两个等级的轮廓,上面一层为外边界,里面一层为内孔的边界信息 cv2.RETR_TREE 建立一个等级树结构…
http://www.cnblogs.com/xrwang/archive/2010/02/09/HowToUseContour.html 作者:王先荣 前言    轮廓是构成任何一个形状的边界或外形线.前面讲了如何根据色彩及色彩的分布(直方图对比和模板匹配)来进行匹配,现在我们来看看如何利用物体的轮廓.包括以下内容:轮廓的查找.表达方式.组织方式.绘制.特性.匹配. 查找轮廓    首先我们面对的问题是如何在图像中找到轮廓,OpenCv(EmguCv)为我们做了很多工作,我们的任务只是调用现成…
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 1,简单几何图像绘制 简单几何图像一般包括点,直线,矩阵,圆,椭圆,多边形等等. 下面学习一下 opencv对像素点的定义.图像的一个像素点有1或3个值,对灰度图像有一个灰度值,对彩色图像有3个值组成一个像素值,他们表现出不同的颜色. 其实有了点才能组成各种多边形,才能对多边形进行轮廓检测,所以下面先练…