OpenCV 载入一副图像并进行平滑处理

作者:卿笃军

原文地址:http://blog.csdn.net/qingdujun/article/details/33758877

一、使用OpenCV载入一副图像并进行平滑处理

#include "opencv\highgui.h"
#include "opencv\cv.h"

int main()
{
	cvNamedWindow("平滑前"); //创建窗体
	cvNamedWindow("平滑后"); //创建窗体

	IplImage *image = cvLoadImage("zqbb.jpg");  //载入图片
	cvShowImage("平滑前",image);//显示图片
	                           //参数:结构大小       数据类型   3通道
	IplImage *smooth = cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,3);
	//使每个像素点周围9*9区域进行高斯平滑
	cvSmooth(image,smooth,CV_GAUSSIAN,9,9);//平滑处理

	cvShowImage("平滑后",smooth);//显示图片

	cvWaitKey();
	cvReleaseImage(&image);
	cvDestroyWindow("平滑前");
	cvReleaseImage(&smooth);
	cvDestroyWindow("平滑后");
    return 0;
}  

二、平滑效果

网上搜的,足球宝贝~~~(*^__^*) 嘻嘻……

三、平滑说明

事实上,cvCreateFileCapture()只分配一帧图像的空间,每次调用时覆盖前面一次的数据(这样每次调用返回的指针是一样的)。在这种情况下,我们想分配自己的图像结构空间来存储平滑处理后的图像。

  • 第一个参数时一个CvSize结构,这个结构可以通过cvGetSize(image)方便获得;说明当前图像结构的大小。
  • 第二个参数告诉我们个个通道每个像素点的数据类型,最后一个参数说明通道的总数。

参考文献:(美)布拉德斯基(Bradski,G.),(美)克勒(Kaehler,A.) 著,于仕琪,刘瑞祯 译.学习OpenCV(中文版)[M].北京:清华大学出版社,2009.26-27.

OpenCV 载入一副图像并进行平滑处理

时间: 2024-10-13 22:47:09

OpenCV 载入一副图像并进行平滑处理的相关文章

OpenCV 学习(计算图像的直方图)

OpenCV 计算图像的直方图 计算图像的直方图是图像处理领域一个非常常见的基本操作. OpenCV 中提供了 calcHist 函数来计算图像直方图.不过这个函数说实话挺难用的,研究了好久才掌握了些基本的用法. calcHist 函数 C++ 的函数原型如下: void calcHist(const Mat* images, int nimages, const int* channels, InputArray mask, SparseMat& hist, int dims, const i

跟我一起学opencv 第一课之图像加载,修改,保存

使用opencv前记得引入库和头文件: #include<opencv2\opencv.hpp> 1.加载图像(cv::imread)(OPENCV 支持 JPG,PNG,TIFF等常见格式图像文件加载) imread函数原型是: CV_EXPORTS_W Mat imread( const String& filename, int flags = IMREAD_COLOR ); ------imread加载一副由filename指定的图像文件并返回一个Mat对象 ------第一个

opencv分水岭算法对图像进行切割

先看效果 说明 使用分水岭算法对图像进行切割,设置一个标记图像能达到比較好的效果,还能防止过度切割. 1.这里首先对阈值化的二值图像进行腐蚀,去掉小的白色区域,得到图像的前景区域.并对前景区域用255白色标记 2.相同对阈值化后的图像进行膨胀,然后再阈值化并取反.得到背景区域. 并用128灰度表示 3.将前景和背景叠加在一起在同一幅图像中显示. 4.用标记图和原图,利用opencv的watershed对图像进行切割. 源代码 class WatershedSegment{ private: cv

opencv分水岭算法对图像进行分割

先看效果 说明 使用分水岭算法对图像进行分割,设置一个标记图像能达到比较好的效果,还能防止过度分割. 1.这里首先对阈值化的二值图像进行腐蚀,去掉小的白色区域,得到图像的前景区域.并对前景区域用255白色标记 2.同样对阈值化后的图像进行膨胀,然后再阈值化并取反.得到背景区域.并用128灰度表示 3.将前景和背景叠加在一起在同一幅图像中显示. 4.用标记图和原图,利用opencv的watershed对图像进行分割. 源码 class WatershedSegment{ private: cv::

opencv中的meanshift图像切割

Meanshift(均值漂移)是一种在一组数据的密度分布中寻找局部极值的稳定的方法.Meanshift不仅能够用于图像滤波,视频跟踪,还能够用于图像切割. 通过给出一组多维数据点,其维数是(x,y,r,g,b),均值漂移能够用一个窗体扫描空间来找到数据密度最大的区域,能够理解为数据分布最集中的区域. 在这里须要注意,因为空间位置(也就是上面的x和y)的变化范围与颜色的变化范围(上面的r,g,b)有极大的不同,所以,meanshift对这两个维数要採用不同的窗体半径.在opencv自带的means

捕获海康威视IPCamera图像,转成OpenCV可以处理的图像(一)

海康威视IPCamera图像捕获 捕获海康威视IPCamera图像,转成OpenCV可以处理的IplImage图像(一) 捕获海康威视IPCamera图像,转成OpenCV可以处理的IplImage图像(二) 所使用海康威视摄像头型号:DS-2CD4026FWD-(A)(P) 海康威视IPCamera图像捕获方法有两种: (1)利用SDK里面的NET_DVR_CaptureJPEGPicture_NEW进行视频抓图 (2)捕获实时流,将实时流解码成YV12,然后转换成RGB 在这篇博文里,我先介

捕获海康威视IPCamera图像,转成OpenCV可以处理的图像(二)

海康威视IPCamera图像捕获 捕获海康威视IPCamera图像,转成OpenCV可以处理的IplImage图像(一) 捕获海康威视IPCamera图像,转成OpenCV可以处理的IplImage图像(二) 所使用海康威视摄像头型号:DS-2CD4026FWD-(A)(P) 海康威视IPCamera图像捕获方法有两种: (1)利用SDK里面的NET_DVR_CaptureJPEGPicture_NEW进行视频抓图 (2)捕获实时流,将实时流解码成YV12,然后转换成RGB 在这篇博文里,我将介

openCV安装配置及图像腐蚀实验(VS2017)

1.在openCV官网(https://opencv.org/)上下载了4.2.0版本,存放在了D盘(记清地址,后续会用到),解压缩后显示一个文件夹如下: 2. 接下来配置环境变量:电脑(Win10)--->属性--->高级系统设置--->环境变量--->Path中添加openCV的bin路径: 我添加的路径图中红框所示,bin路径就是在刚才安装的openCV目录下,具体如下:A.opencv文件夹下打开build文件夹:B.build文件夹里有一个bin文件,不是我们所需要的,应

opencv载入,显示及保存图像

1.声明一个表示图像的变量,在OpenCV2中,这个变量是CV::Mat类型 cv::Mat  image;       //这句话将创建一个宽高都为0的图像: 通过调用cv::Mat 的size()方法可以获取该图像的尺寸,该方法的返回值是一个结构体,包含着宽度和高度: std::cout<<"size:"<<image.size().height<<","<<image.size().width<<st