这里举出三个案例:

#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 ok
printf("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);//#1
IplImage *img1 = doCanny(image, 10, 100, 3);//#2 cvShowImage("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

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

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

Opencv step by step - 图像变换的更多相关文章

  1. Step by step Dynamics CRM 2011升级到Dynamics CRM 2013

    原创地址:http://www.cnblogs.com/jfzhu/p/4018153.html 转载请注明出处 (一)检查Customizations 从2011升级到2013有一些legacy f ...

  2. Step by Step 创建一个新的Dynamics CRM Organization

    原创地址:http://www.cnblogs.com/jfzhu/p/4012833.html 转载请注明出处 前面演示过如何安装Dynamics CRM 2013,参见<Step by st ...

  3. Step by step Install a Local Report Server and Remote Report Server Database

    原创地址:http://www.cnblogs.com/jfzhu/p/4012097.html 转载请注明出处 前面的文章<Step by step SQL Server 2012的安装 &g ...

  4. Step by step Dynamics CRM 2013安装

    原创地址:http://www.cnblogs.com/jfzhu/p/4008391.html 转载请注明出处   SQL Server可以与CRM装在同一台计算机上,也可安装在不同的计算机上.演示 ...

  5. Step by step 活动目录中添加一个子域

    原创地址:http://www.cnblogs.com/jfzhu/p/4006545.html 转载请注明出处 前面介绍过如何创建一个域,下面再介绍一下如何在该父域中添加一个子域. 活动目录中的森林 ...

  6. SQL Server 维护计划实现数据库备份(Step by Step)(转)

    SQL Server 维护计划实现数据库备份(Step by Step) 一.前言 SQL Server 备份和还原全攻略,里面包括了通过SSMS操作还原各种备份文件的图形指导,SQL Server  ...

  7. 转:eclipse以及step into step over step return的区别

    首先来讲一下step into step over step return的区别: step into就是单步执行,遇到子函数就进入并且继续单步执行:(F5) step over是在单步执行时,在函数 ...

  8. [转]Bootstrap 3.0.0 with ASP.NET Web Forms – Step by Step – Without NuGet Package

    本文转自:http://www.mytecbits.com/microsoft/dot-net/bootstrap-3-0-0-with-asp-net-web-forms In my earlier ...

  9. EF框架step by step(7)—Code First DataAnnotations(2)

    上一篇EF框架step by step(7)—Code First DataAnnotations(1)描述了实体内部的采用数据特性描述与表的关系.这一篇将用DataAnnotations描述一下实体 ...

  10. EF框架step by step(6)—处理实体complex属性

    上一篇的中介绍过了对于EF4.1框架中,实体的简单属性的处理 这一篇介绍一下Code First方法中,实体Complex属性的处理.Complex属性是将一个对象做为另一个对象的属性.映射到数据库中 ...

随机推荐

  1. tomcat下部署润乾报表

    因为项目需要,需要在项目中配置润乾报表,之前一直是用的jboss服务器,此处调整为tomcat时出错,然后各种找错,找答案,最后终于好了,然后总结一下. 首先在apache-tomcat-6.0.43 ...

  2. Effective Java 73 Avoid thread groups

    Thread groups were originally envisioned as a mechanism for isolating applets for security purposes. ...

  3. mongo学习笔记(六):linux上搭建

    linux分以下几台 monogos mongocfg mongod1 mongod2 1.用ssh把 mongodb-linux-x86_64-3.0.6.tgz 移到linux /root上 2. ...

  4. python代码学习day03-序列化学习pickle及json

    #!/usr/bin/env python #coding:utf8 import pickle,json import datetime dic1 = {'name':'alex', 'age':4 ...

  5. ASP.NET调用Web Service

    1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求, ...

  6. linux 下安装nodejs,CentOS 6.5 系统

    本文采用nodejs 通过源码编译安装方式 编译需要gcc-c++编译器和openssl-devel库的支持,如果没有需要先安装. 在centos下可以先执行:yum install gcc-c++ ...

  7. IE11的API变化

    IE11已经登录Win8.1,它的API有了很大变更 一.User-agent字符串的更改 IE10的是 Mozilla/5.0 (compatible; MSIE 10.0; Windows NT ...

  8. Excel中利用IF和TIME函数计算出上下班状态!

    大家都知道现在上下班实行打卡制,制作考勤的人员需要对你上下班的时间,计算出上下班的状态,比如:迟到.早退.加班.正常等.下面为您介绍一个“帮手”.     1.打开Excel文档.如下图       ...

  9. EXCEL IF 函数 模糊查询

    A列都是产品名,比如衬衫,长袖衬衫,短袖衬衫,短裙,长裙 搜索A列的产品名,凡是含有“衬衫”的一律在B列对应行输出“衬衫”,凡是含有“裙”字的一律输出“裙子”在B列对应行,请教一下怎么写函数,本来用I ...

  10. NOIP2008 普及组T1 ISBN号码 解题报告-S.B.S.

    题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”就是分隔符(键盘上的减号),最后一 ...