顺便又复习了一下cvcopy如何进行图像拼接(最近觉得打开多幅图像分别看不如缩小掉放拼接到一幅图像上对比来的好)

首先把拼接的目标图像设置兴趣区域ROI,比如我有一个total,要把a、b、c分别从左到右拼接到total上,那就分三次对total设置敢兴趣区域ROI(注意不是对a、b、c设置),然后再用cvcopy复制过去,如果要加文字可以在复制之前预先把文字加到a、b、c上

然后就是图像的腐蚀和膨胀,可以自定义一个kernel

代码:

#include<cv.h>
#include<highgui.h>
int main(void)
{
cvNamedWindow("Compare");
IplImage *temp = cvLoadImage("zhiwen.jpg"); IplImage *src = cvCreateImage(CvSize(temp->width / 2, temp->height / 2), temp->depth, temp->nChannels);
cvResize(temp, src); IplImage *total = cvCreateImage(CvSize(src->width * 3, src->height),src->depth,src->nChannels); IplImage *erode = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
IplImage *dilate= cvCreateImage(cvGetSize(src), src->depth, src->nChannels); cvZero(erode);
cvZero(dilate);
IplConvKernel *kernel = cvCreateStructuringElementEx(3,3,2,2,CV_SHAPE_RECT);
cvErode(src, erode,kernel,1);
cvDilate(src, dilate,kernel,1); CvFont font;
cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 1, 1, 2, 2, CV_AA);
char *a = "Original", *b = "Erode",*c="Dilate";
//放置字体
cvPutText(src, a,CvPoint(0, 40),&font,CV_RGB(255,0,0));
cvPutText(erode, b, CvPoint(0, 40), &font, CV_RGB(255, 0, 0));
cvPutText(dilate, c, CvPoint(0, 40), &font, CV_RGB(250, 0, 0)); cvSetImageROI(total, cvRect(0, 0, src->width, src->height));//放入原图像
cvCopy(src, total);
cvResetImageROI(total);//记得取消ROI cvSetImageROI(total, cvRect(src->width, 0, src->width, src->height));//放入腐蚀结果
cvCopy(erode, total);
cvResetImageROI(total); cvSetImageROI(total, CvRect(src->width * 2, 0, src->width, src->height));//放入膨胀结果
cvCopy(dilate, total);
cvResetImageROI(total); cvShowImage("Compare", total);//对比图
cvWaitKey(0);
cvSaveImage("result.png", total);
cvDestroyAllWindows();
cvReleaseImage(&temp);
cvReleaseImage(&src);
cvReleaseImage(&total);
cvReleaseImage(&dilate);
cvReleaseImage(&erode);
cvReleaseStructuringElement(&kernel);
return 0;
}

  

效果图:

OpenCV学习笔记——图像的腐蚀与膨胀的更多相关文章

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

    先对一副灰度图像进行腐蚀操作,然后在腐蚀后的图像上再进行膨胀操作,我们定义这个操作为开操作. 先对一副图像进行膨胀操作,然后在膨胀后的图像上再进行腐蚀操作,我们定义这个操作为闭操作.       开操 ...

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

    建议大家看看网络视频教程:http://www.opencvchina.com/thread-886-1-1.html    腐蚀与膨胀都是针对灰度图的形态学操作,比如下面的一副16*16的灰度图. ...

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

    通过使用不同的结构元素来进行膨胀腐蚀操作,可以检测图像中的角点,下面就一步一步看这个算法如果实现角点检测. 原图像: 首先我们创建四个结构元素 先用十字结构元素对原图像进行膨胀操作,得到下面的图像 再 ...

  4. opencv学习笔记-图像对比度、亮度调节

    在数学中我们学过线性理论,在图像亮度和对比度调节中同样适用,看下面这个公式: 在图像像素中其中: 参数f(x)表示源图像像素. 参数g(x) 表示输出图像像素. 参数a(需要满足a>0)被称为增 ...

  5. opencv学习笔记-图像叠加、混合

    在图像处理中,目标区域定义为感兴趣区域ROI(region of Interest),这是后期图像处理的基础,在获取ROI后,进行一些列的处理.ROI区域在Opencv中就是Rect,先构建Rect, ...

  6. opencv学习笔记——图像缩放函数resize

    opencv提供了一种图像缩放函数 功能:实现对输入图像缩放到指定大小 函数原型: void cv::resize ( InputArray src, OutputArray dst, Size ds ...

  7. (转) OpenCV学习笔记大集锦 与 图像视觉博客资源2之MIT斯坦福CMU

          首页 视界智尚 算法技术 每日技术 来打我呀 注册     OpenCV学习笔记大集锦 整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的 ...

  8. OpenCV 学习笔记 02 使用opencv处理图像

    1 不同色彩空间的转换 opencv 中有数百种关于不同色彩空间的转换方法,但常用的有三种色彩空间:灰度.BRG.HSV(Hue-Saturation-Value) 灰度 - 灰度色彩空间是通过去除彩 ...

  9. 【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整

    今天我们来看一下如何访问图像的像素,以及如何改变图像的亮度与对比度. 在之前我们先来看一下图像矩阵数据的排列方式.我们以一个简单的矩阵来说明: 对单通道图像排列如下: 对于双通道图像排列如下: 那么对 ...

随机推荐

  1. 利用runTime,实现以模型为主的字典转模型(注意与KVC的区别)

    将字典转化为模型,面向模型开发,是在开发中最为常用的功能.利用KVC可以将字典转换为模型,但是前提有三个约束,一个是必须保证模型的属性个数大于等于字典个数,二是属性名称与字典的key必须相同,三是对于 ...

  2. PO/VO/BO等对象模型

    PO :persistent object持久对象 1 .有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录. 2 .在hibernate持久化框架中与i ...

  3. CUDA学习笔记(三)——CUDA内存

    转自:http://blog.sina.com.cn/s/blog_48b9e1f90100fm5f.html 结合lec07_intro_cuda.pptx学习 内存类型 CGMA: Compute ...

  4. C++类的成员函数使用的一些小总结

    From: http://blog.csdn.net/xiayefanxing/article/details/7607506 这一阵做项目代码开发的时候,用到了在一个C++文件中使用另一个类的成员函 ...

  5. Telnet命令检测远程主机上的端口是否开启

    ping命令不能检测端口,只能检测你和相应IP是否能连通. 本地虚拟机里安装了一个Ubuntu,使用Putty连接22端口操作时提示失败,于是查看对应端口是否开启. Windows下要检测远程主机上的 ...

  6. 使用HtmlAgilityPack抓取网页数据

    XPath 使用路径表达式来选取 XML 文档中的节点或节点集.节点是通过沿着路径 (path) 或者步 (steps) 来选取的. 下面列出了最有用的路径表达式: nodename:选取此节点的所有 ...

  7. UML中的关联关系

    UML中的关联关系其内在意思就是has a 如图:  相对于依赖关系,关联关系在代码中有所体现.上图中的关联关系在代码中体现为       其中water 中将Climate作为其中的属性. 当然,关 ...

  8. Java Hour 25 Packages

    有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. 25 Hours. Packages Programs are organiz ...

  9. Hierachy Viewer 使用 monitor命令

    使用 Hierachy Viewer 可视化调试工具 Hierachy Viewer 能很方便地在开发者设计,调试和调整界面时,快速定位问题,解决问题,提高开发效率. Hierarchy Viewer ...

  10. Android适配器之ArrayAdapter、SimpleAdapter和BaseAdapter的简单用法与有用代码片段(转)

    摘自:http://blog.csdn.net/shakespeare001/article/details/7926783 Adapter是连接后端数据和前端显示的适配器接口,是数据Data和UI( ...