上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 33 下一页

2013年9月15日

OpenCV学习(14) 细化算法(2)

摘要: 前面一篇教程中,我们实现了Zhang的快速并行细化算法,从算法原理上,我们可以知道,算法是基于像素8邻域的形状来决定是否删除当前像素。还有很多与此算法相似的细化算法,只是判断的条件不一样。在综述文章, Thinning Methodologies-A Comprehensive Survey中描述了各种细化算法的实现原理,有兴趣可以阅读一下。 下面看看图像细化的定义以... 阅读全文

posted @ 2013-09-15 08:53 迈克老狼2012 阅读(7563) 评论(0) 推荐(0) 编辑

2013年9月14日

OpenCV学习(13) 细化算法(1)

摘要: 程序编码参考经典的细化或者骨架算法文章: T. Y. Zhang and C. Y. Suen, “A fast parallel algorithm for thinning digital patterns,” Comm. ACM, vol. 27, no. 3, pp. 236-239, 1984. 它的原理也很简单: 我们对一副二值图像进行骨架提取,就是删除不需要的轮廓点... 阅读全文

posted @ 2013-09-14 20:25 迈克老狼2012 阅读(22030) 评论(3) 推荐(5) 编辑

OpenCV学习(12) 图像的腐蚀与膨胀(3)

摘要: 通过使用不同的结构元素来进行膨胀腐蚀操作,可以检测图像中的角点,下面就一步一步看这个算法如果实现角点检测。 原图像: 首先我们创建四个结构元素 先用十字结构元素对原图像进行膨胀操作,得到下面的图像 再对这个图像用钻石型结构元素进行腐蚀操作,得到图像1,如下图所示: 接着,我们对原图像用X型结构元素进行膨胀操作,得到: 我们再用方形结构元素对上面图像进行腐蚀操作,... 阅读全文

posted @ 2013-09-14 15:43 迈克老狼2012 阅读(1202) 评论(1) 推荐(0) 编辑

OpenCV学习(11) 图像的腐蚀与膨胀(2)

摘要: 先对一副灰度图像进行腐蚀操作,然后在腐蚀后的图像上再进行膨胀操作,我们定义这个操作为开操作。 先对一副图像进行膨胀操作,然后在膨胀后的图像上再进行腐蚀操作,我们定义这个操作为闭操作。 开操作可以去掉场景中一些孤立的点,而闭操作通常可以填充前景中一些小洞,通常通过这两种操作,使得图像看起来更圆润光滑一点。 在opencv中,我们通过函数 cv::morphologyEx(Imag... 阅读全文

posted @ 2013-09-14 15:38 迈克老狼2012 阅读(987) 评论(0) 推荐(0) 编辑

OpenCV学习(10) 图像的腐蚀与膨胀(1)

摘要: 建议大家看看网络视频教程:http://www.opencvchina.com/thread-886-1-1.html 腐蚀与膨胀都是针对灰度图的形态学操作,比如下面的一副16*16的灰度图。 它每个像素对应的值为(每个像素值范围都在0-255之间)为: 我们定义一个5*5的结构元素,该结构元素用5*5的矩阵表示,其中为1的单元,表示该单元在结构元素中有效,另外还... 阅读全文

posted @ 2013-09-14 15:16 迈克老狼2012 阅读(4621) 评论(0) 推荐(0) 编辑

OpenCV学习(6) 文件和Mat之间的数据交换

摘要: 有时候为了便于调试算法,我们需要从文本文件或二进制文件中读取数据,并把数据放到相应的矩阵中去。我们通常可以通过下面的函数实现。 1、从二进制文件中读取数据。 新建一个txt文件 input.txt,在vs2010中,右键点击该文件,选择open with,然后选择Binary Editor,就可以用二进制的方式打开文件了。 编辑文件并保存之后,我们可以... 阅读全文

posted @ 2013-09-14 09:26 迈克老狼2012 阅读(4267) 评论(0) 推荐(0) 编辑

OpenCV学习(5) Mat的基本操作(2)

摘要: 本章我们学习一下Mat中的常用操作,因为在后面其它的教程中,我们经常要对图像进行各种处理,也要使用这些操作。 一、 Mat的复制,就是从一个矩阵A,生成相关的另一个矩阵B。 (1)使用赋值的方法,比如通过构造函数生成矩阵N,通过复制生成矩阵P cv::Mat N(M); cv::Mat P; P=M; 这样生成的矩阵,只是新生成... 阅读全文

posted @ 2013-09-14 09:00 迈克老狼2012 阅读(16053) 评论(0) 推荐(0) 编辑

2013年9月13日

OpenCV学习(4) Mat的基本操作(1)

摘要: 图像在OpenCV中都是通过Mat类来存储的,Mat可以用来表示N维矩阵,当然用的最多的还是二维矩阵。 Mat类有两部分组成:第一部分是头信息,这些信息主要用来描述矩阵,比如矩阵维数ndims,rows,cols(这两个成员变量主要用于二维矩阵,用来表示行数和列数),size,sizes, type,step等等;第二部分是data信息,这是一个指针,指向Mat中存储的数... 阅读全文

posted @ 2013-09-13 21:11 迈克老狼2012 阅读(5858) 评论(0) 推荐(0) 编辑

OpenCV学习(3) OpenCV框架

摘要: OpenCV是一个开源的视觉库,其中包括很多计算机视觉的算法实现。在版本2.2以后,OpenCV采用C++特征的API,在1.x版本中,OpenCV函数都是传统的C语言形式。 OpenCV采用模块化的结构,每个模块都是由一些动态和静态库组成,该模块会实现一些特定的计算机视觉算法。要使用某个特定的库,我们必须在程序中先包含该库的头文件,并把该库的lib作为链接库。 例如要... 阅读全文

posted @ 2013-09-13 19:17 迈克老狼2012 阅读(2057) 评论(0) 推荐(0) 编辑

OpenCV学习(2) OpenCV的配置

摘要: 下面我们在VS2010中编写一个简单的OpenCV程序,来看看如何在程序中使用OpenCV。 创建一个新的Win32 控制台程序,附加选项为空工程(empty project),并添加一个cpp源文件main.cpp,内容如下: #include #include int main() { cv::Mat img = cv::imread("lenna.jpg"); ... 阅读全文

posted @ 2013-09-13 19:07 迈克老狼2012 阅读(1024) 评论(0) 推荐(0) 编辑

上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 33 下一页

导航