这里举出三个案例:

#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. c++虚函数,纯虚函数,抽象类,覆盖,重载,隐藏

    C++虚函数表解析(转) ——写的真不错,忍不住转了  http://blog.csdn.net/hairetz/article/details/4137000 浅谈C++多态性  http://bl ...

  2. "ORA-12154: TNS:could not resolve the connect identifier specified"的解决办法

    添加环境变量解决: 变量名:TNS_ADMIN 变量值:D:\Ocl\product\11.2.0\dbhome_1\NETWORK\ADMIN tnsnames.ora所在的路径

  3. nginx添加模块 (非覆盖安装)

    nginx添加模块(非覆盖安装) 原已经安装好的nginx,现在需要添加一个未被编译安装的模块: 查看原来编译时都带了哪些参数# /usr/local/nginx/sbin/nginx -V ngin ...

  4. HBase 高性能加入数据 - 按批多“粮仓”式解决办法

    摘要:如何从HBase中的海量数据中,以很快的速度的获取大批量数据,这一议题已经在<HBase 高性能获取数据>(http://www.cnblogs.com/wgp13x/p/42451 ...

  5. cocos2d-x之json文件读取初试

    rapidjson::Document d; d.Parse<0>(FileUtils::getInstance()->getStringFromFile("data_2. ...

  6. html的input输入框边框

    1.输入框边框完全隐藏<input type="text" style="outline:none;border:0" /> 2.input去边框立 ...

  7. 两台SQL Server数据同步解决方案

    复制的概念 复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式.使用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可 ...

  8. Web性能优化之图片延迟加载

    来源:微信公众号CodeL 对于一些图片多,页面长的网页来说,如果每次打开页面加载全部的网页内容,页面加载速度势必会受到影响,如果每次打开网页只将网页可视区域的内容加载给用户 ,将大大提高网页浏览速度 ...

  9. uva 1471 defence lines——yhx

    After the last war devastated your country, you - as the king of the land of Ardenia - decided it wa ...

  10. 深度优先搜索 codevs 1031 质数环

    codevs 1031 质数环  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold   题目描述 Description 一个大小为N(N<=17)的质数环是 ...