OpenCV —— 图像处理

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

平滑处理   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(0);
    CvSeq* comp=NULL;
    cvPyrSegmentation(src,dst,storage,&comp,4,200,50);
    int n_comp=comp->total;

    for (int i=0;i<n_comp;i++)
    {
        CvConnectedComp* cc=(CvConnectedComp*)cvGetSeqElem(comp,i);

        // ..... 怎么处理还没想好

    }

    cvReleaseMemStorage(&storage);
    return 0;
}

CvConnectedComponent —— 图像团块

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

 



阈值化

cvThreshold

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

#include <cv.h>
#include <highgui.h>
#include <math.h>

IplImage *Igray=0, *It=0,*Iat;

int main(int argc,char** argv)
{
    int adaptive_method=CV_ADAPTIVE_THRESH_GAUSSIAN_C;
    int threshold_type=CV_THRESH_BINARY;
    int block_size=9;
    double offset=5;

    Igray=cvLoadImage("wukong.jpg",CV_LOAD_IMAGE_GRAYSCALE);

    Iat=cvCreateImage(cvSize(Igray->width,Igray->height),IPL_DEPTH_8U,1);

    cvAdaptiveThreshold(Igray,Iat,255,adaptive_method,threshold_type,block_size,offset);

    cvNamedWindow("w1");
    cvNamedWindow("w2");
    cvShowImage("w1",Iat);
    cvShowImage("w2",Igray);
    cvWaitKey();

    cvReleaseImage(&Iat);
    cvDestroyAllWindows();

    return 0;
}

OpenCV —— 图像处理

时间: 2024-11-05 06:19:58

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

从零开始的Opencv图像处理项目实战课程设计

一.简介.1.通过课程能够获得什么?     a.对于想学习图像处理的同学能够快速入门:     b.能够快速搭建起来"具备解决实际问题能力的"软硬件平台:     c.能够积累一套可以不断复用的图像处理软件框架:     d.初步形成图像处理的思维能力,灵活应对各种需求.2.课程包括哪些内容     a.综述.课程的核心是开发一个基于Opencv的"答题卡"识别系统.不仅包括算法,而且包括软件框架,而且包括硬件选配.     b.opencv图像处理的环境配置.运

《OpenCV图像处理编程实例》 目录

当当网购买地址:http://product.dangdang.com/23956649.html京东网购买地址:http://item.jd.com/11929148.html 内容简介 本书以 OpenCV 开源库为基础实现图像处理领域的很多通用算法,并结合当今图像处理领域前沿技术,对多个典型工程实例进行讲解及实现.全书内容覆盖面广,由基础到进阶,各个技术点均提供详细的代码实现,以帮助读者快速上手和深入学习.本书内容共三个部分,其中 1-2 章为基础篇, 3-6 章为进阶篇, 7-9 章为高

《OpenCV图像处理编程实例》

<OpenCV图像处理编程实例>例程复现 随书代码下载:http://www.broadview.com.cn/28573 总结+遇到的issue解决: 第一章 1.VS2015安装OpenCV2.4.11 四步骤: 1)步骤一:下载Windows安装包OpenCV2.4.11并解压,本人为:D:\ProgramFiles\opencv2 2)步骤二:配置OpenCV2.4.11的环境变量,本人为:D:\ProgramFiles\opencv2\opencv\build\x86\vc12\bi

OpenCV图像处理篇之腐蚀与膨胀

转载请注明出处:http://xiahouzuoxin.github.io/notes 腐蚀与膨胀 腐蚀和膨胀是图像的形态学处理中最基本的操作,之后遇见的开操作和闭操作都是腐蚀和膨胀操作的结合运算.腐蚀和膨胀的应用非常广泛,而且效果还很好: 腐蚀可以分割(isolate)独立的图像元素,膨胀用于连接(join)相邻的元素,这也是腐蚀和膨胀后图像最直观的展现 去噪:通过低尺寸结构元素的腐蚀操作很容易去掉分散的椒盐噪声点 图像轮廓提取:腐蚀操作 图像分割 等等...(在文后给出一则简单实用膨胀操作提

三 OpenCV 图像处理-1

1.颜色空间转换 内容:颜色空间转换(BGR<->Gray.BGR<->HSV)/获取图形中特定颜色的物体/ 函数:cv2.cvtColor(input_img,flag):flag:转换类型:cv2.COLOR_BGR2GRAY,cv2.COLOR_BGR2HSV等有261多种 import cv2 as cv import numpy as np #打印出所有的转换类型 flags = [item for item in dir(cv) if 'COLOR_' in item]

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

2014 4.20 近期想做一个关于图像处理的软件玩玩,可惜也没有什么特别的想法,就当玩玩好了,准备用Opencv开源库实现下简单的功能吧. Opencv是一个专业的图像处理库,里面有非常多基础函数能够实现非常多非常多功能,明天開始动工吧,真是兴致来了挡也档不住,思考一晚上! 2014 4.21 本来想用Vs2010做下,发现配置有点麻烦,还是选择Vc6干吧,选用的库为 Opencv1.0. 配置Visual C++ 6.0 全局设置 菜单Tools->Options->Directories

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

配置好所有环境后,开始利用python+opencv进行图像处理第一步. 读取和显示一张图片: import cv2 as cv src=cv.imread('E:\imageload\example.png') cv.namedWindow('input_image', cv.WINDOW_AUTOSIZE) cv.imshow('input_image', src) cv.waitKey(0) cv.destroyAllWindows() 输出效果: 代码解释: src=cv.imread(

Python+OpenCV图像处理(十四)—— 直线检测

简介: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等).最基本的霍夫变换是从黑白图像中检测直线(线段). 2.Hough变换的原理是将特定图形上的点变换到一组参数空间上,根据参数空间点的累计结果找到一个极大值对应的解,那么这个解就对应着要寻找的几何形状的参数(比如说直线,那么就会得到直线的斜率k与常熟b,圆就会得到圆心与半径等等) 3.霍夫线变

python+opencv图像处理(一)

一.什么是opencv?  Open Source Computer Vision Library.OpenCV于1999年由Intel建立,如今由Willow Garage提供支持.OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.MacOS操作系统上.它轻量级而且高效--由一系列 C 函数和少量C++类构成,同时提供了Python.Ruby.MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法.最新版本是3.1 ,201