代码:

#include<cv.h>
#include<highgui.h>
int main(void)
{
cvNamedWindow("cmp");
IplImage *temp = cvLoadImage("sample.jpg");//载入
IplImage *src = cvCreateImage(CvSize(temp->width*0.5,temp->height*0.5), temp->depth,temp->nChannels);//缩放
cvResize(temp, src);
IplImage *srctemp = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
IplImage *total = cvCreateImage(CvSize(src->width *5, src->height ), src->depth, src->nChannels); IplImage *open = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
IplImage *close = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
IplImage *gradient = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
IplImage *tophat = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
IplImage *blackhat = cvCreateImage(cvGetSize(src), src->depth, src->nChannels); cvZero(srctemp);
cvZero(total); cvZero(open);
cvZero(close);
cvZero(gradient);
cvZero(tophat);
cvZero(blackhat); IplConvKernel *kernel = cvCreateStructuringElementEx(3,3,2,2,CV_SHAPE_ELLIPSE); cvMorphologyEx(src, open, srctemp, kernel, CV_MOP_OPEN);
cvMorphologyEx(src, close, srctemp, kernel, CV_MOP_CLOSE);
cvMorphologyEx(src, gradient, srctemp, kernel, CV_MOP_GRADIENT);
cvZero(srctemp);
cvMorphologyEx(src, tophat, srctemp, kernel, CV_MOP_TOPHAT);
cvMorphologyEx(src, open, srctemp, kernel, CV_MOP_BLACKHAT);
CvFont font;
cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 1, 1, 2, 2, CV_AA);
cvPutText(open, "open", CvPoint(20, 40), &font, CV_RGB(169, 55, 55));
cvPutText(close, "close", CvPoint(20, 40), &font, CV_RGB(169, 55, 55));
cvPutText(gradient, "gradient", CvPoint(20, 40), &font, CV_RGB(169, 55, 55));
cvPutText(tophat, "tophat", CvPoint(20, 40), &font, CV_RGB(169, 55, 55));
cvPutText(blackhat, "blackhat", CvPoint(20, 40), &font, CV_RGB(169, 55, 55));
int width = src->width;
int height = src->height; cvSetImageROI(total, CvRect(0, 0, width, height));
cvCopy(open, total);
cvResetImageROI(total); cvSetImageROI(total, CvRect(width, 0, width, height));
cvCopy(close, total);
cvResetImageROI(total); cvSetImageROI(total, CvRect(width*2, 0, width, height));
cvCopy(gradient, total);
cvResetImageROI(total); cvSetImageROI(total, CvRect(width * 3, 0, width, height));
cvCopy(tophat, total);
cvResetImageROI(total); cvSetImageROI(total, CvRect(width * 4, 0, width, height));
cvCopy(blackhat, total);
cvResetImageROI(total); cvShowImage("cmp", total);
cvWaitKey(0);
cvSaveImage("out.png", total);
cvDestroyAllWindows();
cvReleaseImage(&temp);
cvReleaseImage(&src);
cvReleaseImage(&srctemp);
cvReleaseImage(&total);
cvReleaseImage(&open);
cvReleaseImage(&close);
cvReleaseImage(&gradient);
cvReleaseImage(&tophat);
cvReleaseImage(&blackhat); return 0;
}

  

效果:

最新文章

  1. int与CString互相转化
  2. rake deploy ! [rejected] master -&gt; master (non-fast-forward) error: failed to push some refs to解决方法
  3. php和js中json的编码和解码
  4. exce生成随机数
  5. qml 一些知识点
  6. Entity Framework6 访问MySQL
  7. Codeforces D546:Soldier and Number Game
  8. oracle导入到Excel
  9. VOIP概述
  10. xcode6和ios 8 百度无法定位解决
  11. Adobe Flash Player已经终止一项可能不安全的操作,解决方案
  12. hid.dll
  13. CF979E
  14. 自定义标签TLD文件中,rtexprvalue子标签的意思
  15. 删除node_modules文件
  16. 了解HTTP协议栈(实践篇)
  17. day111 爬虫第一天
  18. logback错误日志发送邮件
  19. java-servlet 新增特性 注释
  20. python 面向对象&#183; self 讲解

热门文章

  1. 【python】时间性能分析
  2. [MAC ] Mac-OSX下安装Git
  3. 第一套增删改查(htm+ashx完成)
  4. stm32学习笔记——外部中断的使用
  5. Android Session
  6. oracle 10g 学习之触发器(13)
  7. 在windows下用toolbox玩会docker
  8. Java Hour 18 来个CURD吧 (三)
  9. laravel框架中注册信息验证
  10. iOS经典面试题