使用图像结构中所定义的高层处理方法(图形和视觉范畴)来完成特定任务

平滑处理   cvSmooth

处理后图像与输入图像的大小相同(不用考虑边缘)

中值滤波  CV_MEDIAN 不支持 in place 操作 , 高斯滤波 CV_GAUSSIAN 支持 in place 操作(可以设置高斯核不对称,双边滤波——高斯平滑,水彩画处理,可用于图像分割)

图像形态学

膨胀 —— 把二值图像各像素连接成分的边界扩大一层,填充边缘或像素内部的孔;使灰度图像高亮区域逐渐增长

腐蚀 —— 把二值图像各像素连接成分的边界点去掉从而缩小一层(去掉毛刺);使灰度图像高亮区减少

cvErode cvDilate

自定义核  IplConvKernel —— cvCreateStructuringElementEx()函数创建 ,由 cvReleaseStructuringElement() 函数释放

形态核与卷积核不同,不需要任何的数值填充核

更通用的形态学 —— cvMorphologyEx —— 开闭运算,形态梯度,礼帽,黑帽

开运算 —— 先腐蚀然后膨胀 (可用来统计二值图像中的区域数)

闭运算 —— 先膨胀然后腐蚀 —— 对于连通区域分析,通常先采用腐蚀或闭运算来消除纯粹由噪声引起的部分,然后用开运算来连接相邻的区域

闭运算消除了低于其临近点的孤立点,开运算消除了高于其临近点的孤立点

形态学梯度 = 膨胀 - 腐蚀 —— 对二值图像进行这一操作可将团块的边缘突出出来(描述图像亮度变化的剧烈程度)

礼帽   Top Hat = src – open(src) (开运算带来的结果是放大裂缝或是局部低亮度区域,所以礼帽操作将局部亮度极大点分割出来)

黑帽   Black Hat = close(src) – src  黑色的洞被分割出来

漫水填充算法 —— 标记或分离图像的一部分以便对其进行进一步处理

在图像上选择一个种子点,然后把临近区域所有相似点填充上同样的颜色,漫水填充的结果总是某个连续的区域

cvFloodFill  可设置掩码,cvFloodFill 不会覆盖mask的非0像素点   flags —— 算法的连通性,填充掩码图像的值,CV_FLOODFILL_FIXED_RANGE

图像尺寸调整  —— cvResize 如果源图象设置了ROI,cvResize 将会对ROI区域调整尺寸,以匹配目标图像,若目标图像设置了ROI,那么。。。。(可以选择不同的插值方式)

图像金字塔 —— 连续降采样

cvPyrDown —— 先用高斯核卷积,然后删除所有偶数行和偶数列  —— 丢失一定量信息

cvPyrUp —— 图像首先在每个维度上扩大为原来的两倍,新增的行列以0填充,然后给指定的滤波器进行卷积

图像分割 —— 快速初始分割先在金字塔高层的低分辨率图像上完成,然后逐层对分割加以优化  ——  cvPyrSegmentation

由于图像金字塔各层的长和宽都必须是整数,所以起始图像的长和宽都能够被2整除,并且能够被2整除的次数不少于金字塔的总层数

CvMemStorage * storage = cvCreateMemStorage()

#include <cv.h>
#include <highgui.h> int main(int argc,char** argv)
{
IplImage *src=cvLoadImage("wukong.jpg",CV_LOAD_IMAGE_UNCHANGED);
IplImage *dst=cvCreateImage(cvSize(src->width,src->height),src->depth,src->nChannels);
CvMemStorage* storage=cvCreateMemStorage();
CvSeq* comp=NULL;
cvPyrSegmentation(src,dst,storage,&comp,,,);
int n_comp=comp->total; for (int i=;i<n_comp;i++)
{
CvConnectedComp* cc=(CvConnectedComp*)cvGetSeqElem(comp,i); // ..... 怎么处理还没想好 } cvReleaseMemStorage(&storage);
return ;
}

CvConnectedComponent —— 图像团块

area 区域面积,value 区域颜色的平均值,rect 是一个区域的外接矩形,contour 是一个指向另一个序列的指针


阈值化

cvThreshold

cvAdaptiveThreshold  大津法,OTSU —— 按图像的灰度特性,将图像分成背景和目标2部分,背景和目标之间的类间方差越大,说明构成图像的的2部分的差别越大,当部分目标错为背景或反之都会使2部分差别变小

#include <cv.h>
#include <highgui.h>
#include <math.h> IplImage *Igray=, *It=,*Iat; int main(int argc,char** argv)
{
int adaptive_method=CV_ADAPTIVE_THRESH_GAUSSIAN_C;
int threshold_type=CV_THRESH_BINARY;
int block_size=;
double offset=; Igray=cvLoadImage("wukong.jpg",CV_LOAD_IMAGE_GRAYSCALE); Iat=cvCreateImage(cvSize(Igray->width,Igray->height),IPL_DEPTH_8U,); cvAdaptiveThreshold(Igray,Iat,,adaptive_method,threshold_type,block_size,offset); cvNamedWindow("w1");
cvNamedWindow("w2");
cvShowImage("w1",Iat);
cvShowImage("w2",Igray);
cvWaitKey(); cvReleaseImage(&Iat);
cvDestroyAllWindows(); return ;
}

OpenCV —— 图像处理的更多相关文章

  1. OpenCV图像处理篇之边缘检测算子

    OpenCV图像处理篇之边缘检测算子 转载: http://xiahouzuoxin.github.io/notes/ 3种边缘检测算子 一阶导数的梯度算子 高斯拉普拉斯算子 Canny算子 Open ...

  2. Python+OpenCV图像处理(一)

    Python+OpenCV图像处理(一): 读取,写入和展示图片 调用摄像头拍照 调用摄像头录制视频 1. 读取.写入和展示图片 图像读入:cv2.imread() 使用函数cv2.imread() ...

  3. Python+OpenCV图像处理(一)——读取显示一张图片

    先在此处先声明,后面学习python+opencv图像处理时均参考这位博主的博文https://blog.csdn.net/u011321546/article/category/7495016/2? ...

  4. 1.5快速上手OpenCV图像处理

    在上一节中,已经完成了OPENCV的配置,在本节接触几个Opencv图像处理相关的程序,看看opencv用简洁的代码能够实现哪些有趣的图像效果. 1.第一个程序:图像显示 #include<op ...

  5. 《OpenCV图像处理编程实例》

    <OpenCV图像处理编程实例>例程复现 随书代码下载:http://www.broadview.com.cn/28573 总结+遇到的issue解决: 第一章 初识OpenCV 1.VS ...

  6. OpenCV图像处理学习笔记-Day1

    OpenCV图像处理学习笔记-Day1 目录 OpenCV图像处理学习笔记-Day1 第1课:图像读入.显示和保存 1. 读入图像 2. 显示图像 3. 保存图像 第2课:图像处理入门基础 1. 基本 ...

  7. OpenCV图像处理学习笔记-Day03

    OpenCV图像处理学习笔记-Day03 目录 OpenCV图像处理学习笔记-Day03 第31课:Canny边缘检测原理 第32课:Canny函数及使用 第33课:图像金字塔-理论基础 第34课:p ...

  8. OpenCV图像处理学习笔记-Day4(完结)

    OpenCV图像处理学习笔记-Day4(完结) 第41课:使用OpenCV统计直方图 第42课:绘制OpenCV统计直方图 pass 第43课:使用掩膜的直方图 第44课:掩膜原理及演示 第45课:直 ...

  9. Zedboard甲诊opencv图像处理(三)

    整个工程进展到这一步也算是不容易吧,但技术含量也不怎么高,中间乱起八糟的错误太烦人了,不管怎么样,现在面临了最大的困难吧,图像处理算法.算法确实不好弄啊,虽然以前整过,但都不是针对图像的. 现在的图像 ...

  10. 基于Opencv图像处理的时时头像採集试验

    2014 4.20 近期想做一个关于图像处理的软件玩玩,可惜也没有什么特别的想法,就当玩玩好了,准备用Opencv开源库实现下简单的功能吧. Opencv是一个专业的图像处理库,里面有非常多基础函数能 ...

随机推荐

  1. 《剑指offer》包含min函数的栈

    一.题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 二.输入描述 输入栈 三.输出描述 最小值 四.牛客网提供的框架 class Solution { public: ...

  2. codeforces 544 D Destroying Roads 【最短路】

    题意:给出n个点,m条边权为1的无向边,破坏最多的道路,使得从s1到t1,s2到t2的距离不超过d1,d2 因为最后s1,t1是连通的,且要破坏掉最多的道路,那么就是求s1到t1之间的最短路 用bfs ...

  3. OGG切换步骤

    步骤描述 提前准备好切换方案:以及其他相关人员的配合 切换至容灾数据库: (1)停止前端业务,确认目标端数据已经追平 (2)数据校验,确认数据一致 (3)停止生产库OGG进程(停止后可以直接删除) ( ...

  4. JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jstat(复制)

    jstack -- 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程 ...

  5. NodeJS学习笔记 进阶 (8)express+morgan实现日志记录(ok)

    个人总结:这篇文章讲解了Express框架中日志记录插件morgan的示例.读完这篇文章需要10分钟 摘选自网络 章节概览 morgan是express默认的日志中间件,也可以脱离express,作为 ...

  6. 免费录屏软件之OBS Studio

    好久没有再博客活动啦,今天给大家推荐一下录屏软件吧!首先我个人最喜欢的OBS Studio就说说它吧 1.免费.开源.功能强大.易上手 ​ ​ ​ 下面是下载地址: 官网下载 : https://ob ...

  7. Win 7系统倒计时!

    3月25日消息,近日微软已经开始通知当前正在使用Windows 7的用户,该操作系统“接近尾声”.微软表示计划在2020年1月14日终止对Windows 7的所有支持.但结束Windows 7似乎并不 ...

  8. tload---显示系统负载

    tload命令以图形化的方式输出当前系统的平均负载到指定的终端.假设不给予终端机编号,则会在执行tload指令的终端机显示负载情形. 语法 tload(选项)(参数) 选项 -s:指定闲时的刻度: - ...

  9. Spring拦截器 /* 和 /** 的区别

    SpringMVC 拦截器拦截 /* 和 /** 的区别: /* : 匹配一级,即 /add , /query 等 /** : 匹配多级,即 /add , /add/user, /add/user/u ...

  10. 【Henu ACM Round#19 A】 Vasya the Hipster

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 模拟题. 两个一起用->min(a,b); 剩下的除2加上去就好 [代码] #include <bits/stdc++. ...