Opencv step by step - 图像变换
这里举出三个案例:
#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 - 图像变换相关推荐
- 【Step By Step】将Dotnet Core部署到Docker下
一.使用.Net Core构建WebAPI并访问Docker中的Mysql数据库 这个的过程大概与我之前的文章<尝试.Net Core-使用.Net Core + Entity FrameWor ...
- python写一个通讯录step by step V3.0
python写一个通讯录step by step V3.0 更新功能: 数据库进行数据存入和读取操作 字典配合函数调用实现switch功能 其他:函数.字典.模块调用 注意问题: 1.更优美的格式化输 ...
- C#2.0实例程序STEP BY STEP--实例二:数据类型
C#2.0实例程序STEP BY STEP--实例二:数据类型 与其他.NET语言一样,C#支持Common Type Sysem(CTS),其中的数据类型集合不仅包含我们熟悉的基本类型,例如int, ...
- 文本分类step by step(二)
(注:如有转载请标明作者:finallyliuyu, 和出处:博客园) <文本分类 step by step(一)> 在<文本分类step by step(一)>中,我们从处理 ...
- 数据库设计Step by Step (9)——ER-to-SQL转化
2019独角兽企业重金招聘Python工程师标准>>> 引言:前文(数据库设计 Step by Step (8)--视图集成)讨论了如何把局部ER图集成为全局ER图.有了全局ER图后 ...
- ActionScript 3.0 Step By Step系列(五):走在面向对象开发的路上,以类为基础去思考编程问题...
面向对象的程序设计(Object-Oriented Programming,简记为OOP)是一种功能非常强大的编程方法,立意于创建软件重用代码,以类为基础去思考编程问题. ActionScript 3 ...
- NHibernate Step by Step:序篇 (转)
原文出处:http://www.cnblogs.com/abluedog/archive/2006/04/15/375676.html 原文作者:abluedog 很久以前,你可能习惯了connect ...
- Python 调试:step into/step out/step over 的区别
Python 调试:step into/step out/step over 的区别: 首先在PyCharm 程序中设置 " 断点 ",后点击右上角的Debug 按钮进入调试程序状 ...
- Caffe使用step by step:caffe框架下的基本操作和分析
Caffe使用step by step:caffe框架下的基本操作和分析 时间:2015-10-16 11:40:09 阅读:808 评论:0 收藏:0 [点我 ...
- 吴恩达深度学习课程deeplearning.ai课程作业:Class 4 Week 1 Convolutional Neural Networks: Step by Step
吴恩达deeplearning.ai课程作业,自己写的答案. 补充说明: 1. 评论中总有人问为什么直接复制这些notebook运行不了?请不要直接复制粘贴,不可能运行通过的,这个只是notebook ...
最新文章
- ERICA:提升预训练语言模型实体与关系理解的统一框架
- 5G产业发展最新进展深度解析(144页PPT)
- mysql 5.7报1055错误的解决方法
- Linux网络服务之DNS(1)
- Java 的Comparator比较器用法
- java获取oracle表空间_Oracle 表空间使用情况查询与修改
- 网络切片,切开5G万亿级市场“大面包”
- date时区 es logstash_elastic date时区问题解决办法
- RedHat下JDK1.6安装-利用alternative实现多版本并存(Ubuntu同理)
- native react 更新机制_React Native - 组件的生命周期详解(附:各阶段调用的方法)...
- 还对Angel平台一知半解?腾讯专家为你指点迷津!
- 集体智慧编程Python
- 云队友丨带不好人,就只能自己干到死
- oracle驱动包下载
- Java 下载多个文件打成zip压缩包
- 【自然语言处理-2】word2vec词嵌入算法“男人”+“女人”=“爱情的坟墓”
- 百岁老人畅谈百年交大桥梁[转]
- 面向5G的C-RAN网络架构
- JavaSwing版后台管理模板
- 三大优势加身,SDN成广域网优化重要手段
热门文章
- C# 字符转ASCII码,ASCII码转字符
- 二叉树(前中后序递归非递归遍历,层次遍历
- Oracle学习笔记:手工注册oracle的oledb驱动
- pb中建立人员信息表_根据部门名称,从Excel人员花名册表格中快速调取所有员工信息...
- C++ std:: 的坑
- matlab怎么返回操作,Matlab中function函数使用操作方法
- 在Linux下使用dnw和u-boot烧写系统
- 部署SpringBoot项目到腾讯云或其他服务器
- Hive Managed Table与 External Table区别
- Linux下安装ActiveMQ(CentOS7)