顺便又复习了一下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. javascript的onbeforeunload函数在IOS上运行

    今天在做项目的时候,组长让我用iPad测试一下前面写的离线缓存,后退不刷新页面,发现在iPad上onbeforeunload函数在iPad上一带而过,不运行??? 无奈之下,发现原来在IOS上,有自己 ...

  2. HDU1695 GCD (欧拉函数+容斥原理)

    F - GCD Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Stat ...

  3. 强制JSP页面刷新,防止被服务器缓存(可用于静态include强制刷新)

    对于jsp页面,为了防止页面被服务器缓存.始终返回同样的结果. 通常的做法是在客户端的url后面加上一个变化的参数,比如加一个当前时间. 我现在使用的方法是在jsp头部添加以下代码: <%    ...

  4. Perl中的正则表达式

    转自:http://c20031776.blog.163.com/blog/static/684716252013624383887/ Perl 程序中,正则表达式有三种存在形式 分别是 (1 模式匹 ...

  5. Git Server & Git Hook

    http://ju.outofmemory.cn/entry/16893 我喜欢 github,我现在的个人代码全部是托管在上面了,但是一些公司或者某些项目不适合放入github中,你希望能有一个完全 ...

  6. ***Linux文件夹文件创建、删除、改名

    Linux删除文件夹命令 linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可.直接rm就可以了,不过要加两个参数-rf 即:rm ...

  7. sdut 2411:Pixel density(第三届山东省省赛原题,字符串处理)

    Pixel density Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Pixels per inch (PPI) or pi ...

  8. linux tricks 之 typeof用法.

    typeof是gcc的扩展功能,比较简单,是用来取得参数类型,具体可参考gcc官网的解释. https://gcc.gnu.org/onlinedocs/gcc/Typeof.html ------- ...

  9. C++ 学习的网站

    C++入门教程:  http://see.xidian.edu.cn/cpp/biancheng/cpp/rumen/

  10. matlab练习程序(图像球面化)

    十一没什么事干,接着看图像算法. 这个球面化算法最初是在ps上的球面化滤镜中看到的,感觉挺有意思,就研究了一下. 算法的详细推导可以在这篇博客中找到,我比较懒,只在纸上推了一遍,就不在博客上编辑了. ...