这里举出三个案例:

#include <cv.h>
#include <highgui.h>void image_smooth(IplImage * image)
{cvNamedWindow("#1image input");cvShowImage("#1image input", image);    /* create 8 bit 3 channel image*/IplImage *out_image = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 3);/* smooth 3*3 around every point */cvSmooth(image, out_image, CV_GAUSSIAN, 3, 3);cvNamedWindow("#1image output");cvShowImage("#1image output", out_image);cvReleaseImage(&out_image);cvWaitKey(0);cvDestroyWindow("#1image input");cvDestroyWindow("#1image output");
}IplImage *doPyrDown(IplImage *in)
{IplImage *out = cvCreateImage(cvSize(in->width/2, in->height/2) ,in->depth, in->nChannels);cvPyrDown(in, out);return out;
}IplImage *doCanny(IplImage *in, double lowTh, double highTh, double aperture)
{//3 channel is okprintf("channels = %d\n", in->nChannels);//if(1 != in->nChannels)// return NULL;printf("start processing...\n");IplImage *out = cvCreateImage(cvGetSize(in), IPL_DEPTH_8U, 1);cvCanny(in, out, lowTh, highTh, aperture);return out;
}int main(int argc,char **argv)
{printf("this is image transforming\n");IplImage *image;  /* todo:how to judge load fail?*/image = cvLoadImage(argv[1]);  if(argc != 2)  {  std::cout << "No image data\n";  return -1;  }  /*image_smooth(image);
*/cvNamedWindow("image input");cvNamedWindow("image output");//IplImage *img1 = doPyrDown(image);//#1IplImage *img1 = doCanny(image, 10, 100, 3);//#2cvShowImage("image input", image); cvShowImage("image output", img1);    cvReleaseImage(&image);cvReleaseImage(&img1);cvWaitKey(0);cvDestroyWindow("image input");cvDestroyWindow("image output");return 0;
}

其中,

image_smooth

是将图像平滑处理。

其中关键的一行是

    cvSmooth(image, out_image, CV_GAUSSIAN, 3, 3);

效果如下:

这样处理后,图片变模糊了。

doPyrDown

是图像变成原来的0.25倍,它调用的

cvPyrDown

函数对于传入参数有较严格的要求,传入的两个图像要接近0.25倍,详情看官方文档.

doCanny

是进行边缘检测,虽然书中不支持三通道的,但是代码里面是支持的,所以我直接传了张一般的图片进去。。

效果如下(女神 奥黛丽·赫本):

转载于:https://www.cnblogs.com/tanhangbo/p/4282615.html

Opencv step by step - 图像变换相关推荐

  1. 【Step By Step】将Dotnet Core部署到Docker下

    一.使用.Net Core构建WebAPI并访问Docker中的Mysql数据库 这个的过程大概与我之前的文章<尝试.Net Core-使用.Net Core + Entity FrameWor ...

  2. python写一个通讯录step by step V3.0

    python写一个通讯录step by step V3.0 更新功能: 数据库进行数据存入和读取操作 字典配合函数调用实现switch功能 其他:函数.字典.模块调用 注意问题: 1.更优美的格式化输 ...

  3. C#2.0实例程序STEP BY STEP--实例二:数据类型

    C#2.0实例程序STEP BY STEP--实例二:数据类型 与其他.NET语言一样,C#支持Common Type Sysem(CTS),其中的数据类型集合不仅包含我们熟悉的基本类型,例如int, ...

  4. 文本分类step by step(二)

    (注:如有转载请标明作者:finallyliuyu, 和出处:博客园) <文本分类 step by step(一)> 在<文本分类step by step(一)>中,我们从处理 ...

  5. 数据库设计Step by Step (9)——ER-to-SQL转化

    2019独角兽企业重金招聘Python工程师标准>>> 引言:前文(数据库设计 Step by Step (8)--视图集成)讨论了如何把局部ER图集成为全局ER图.有了全局ER图后 ...

  6. ActionScript 3.0 Step By Step系列(五):走在面向对象开发的路上,以类为基础去思考编程问题...

    面向对象的程序设计(Object-Oriented Programming,简记为OOP)是一种功能非常强大的编程方法,立意于创建软件重用代码,以类为基础去思考编程问题. ActionScript 3 ...

  7. NHibernate Step by Step:序篇 (转)

    原文出处:http://www.cnblogs.com/abluedog/archive/2006/04/15/375676.html 原文作者:abluedog 很久以前,你可能习惯了connect ...

  8. Python 调试:step into/step out/step over 的区别

    Python 调试:step into/step out/step over 的区别: 首先在PyCharm 程序中设置 " 断点 ",后点击右上角的Debug 按钮进入调试程序状 ...

  9. Caffe使用step by step:caffe框架下的基本操作和分析

    Caffe使用step by step:caffe框架下的基本操作和分析 时间:2015-10-16 11:40:09      阅读:808      评论:0      收藏:0      [点我 ...

  10. 吴恩达深度学习课程deeplearning.ai课程作业:Class 4 Week 1 Convolutional Neural Networks: Step by Step

    吴恩达deeplearning.ai课程作业,自己写的答案. 补充说明: 1. 评论中总有人问为什么直接复制这些notebook运行不了?请不要直接复制粘贴,不可能运行通过的,这个只是notebook ...

最新文章

  1. ERICA:提升预训练语言模型实体与关系理解的统一框架
  2. 5G产业发展最新进展深度解析(144页PPT)
  3. mysql 5.7报1055错误的解决方法
  4. Linux网络服务之DNS(1)
  5. Java 的Comparator比较器用法
  6. java获取oracle表空间_Oracle 表空间使用情况查询与修改
  7. 网络切片,切开5G万亿级市场“大面包”
  8. date时区 es logstash_elastic date时区问题解决办法
  9. RedHat下JDK1.6安装-利用alternative实现多版本并存(Ubuntu同理)
  10. native react 更新机制_React Native - 组件的生命周期详解(附:各阶段调用的方法)...
  11. 还对Angel平台一知半解?腾讯专家为你指点迷津!
  12. 集体智慧编程Python
  13. 云队友丨带不好人,就只能自己干到死
  14. oracle驱动包下载
  15. Java 下载多个文件打成zip压缩包
  16. 【自然语言处理-2】word2vec词嵌入算法“男人”+“女人”=“爱情的坟墓”
  17. 百岁老人畅谈百年交大桥梁[转]
  18. 面向5G的C-RAN网络架构
  19. JavaSwing版后台管理模板
  20. 三大优势加身,SDN成广域网优化重要手段

热门文章

  1. C# 字符转ASCII码,ASCII码转字符
  2. 二叉树(前中后序递归非递归遍历,层次遍历
  3. Oracle学习笔记:手工注册oracle的oledb驱动
  4. pb中建立人员信息表_根据部门名称,从Excel人员花名册表格中快速调取所有员工信息...
  5. C++ std:: 的坑
  6. matlab怎么返回操作,Matlab中function函数使用操作方法
  7. 在Linux下使用dnw和u-boot烧写系统
  8. 部署SpringBoot项目到腾讯云或其他服务器
  9. Hive Managed Table与 External Table区别
  10. Linux下安装ActiveMQ(CentOS7)