资源描述
图 像 处 理
实
验
报
告
学院名称 软件学院
专 业 软件工程
学生姓名 王振众
学 号 3007218131
年 班 级 2007级5班
2010年 5月 6日
1、 实验目的
学习并掌握OpenCV安装及基本操作,通过调试OpenCV例程加深对图像处理基本知识的理解。
2、 实验题目
中值滤波,直方图均衡化,双边滤波,双边滤波,灰度翻转,高斯模糊,腐蚀,福利叶变换,Sobel边缘检测,Laplace,Fractal,ColorModeRGB0504,ColorMode05041300,Canny边缘检测,Blur
3、 实验步骤
下载OpenCV 2.0,并安装, 运行cmake-gui,设置路径为OpenCV安装路径(本文档假定安装位置为:D:\Program Files\OpenCV2.0),并创建子目录D:\Program Files\OpenCV2.0\vc2008,用于存放编译结果。将在D:\Program Files\OpenCV2.0\vc2008目录下生成OpenCV.sln的VC Solution File,请用VC++ 2008 Express打开OpenCV.sln,然后执行如下操作:
在Debug下,选择Solution Explorer里的 Solution OpenCV,点右键,运行"Rebuild Solution";如编译无错误,再选择INSTALL项目,运行"Build"。在Release下,选择Solution Explorer里的 Solution OpenCV,点右键,运行"Rebuild Solution";如编译无错误,再选择INSTALL项目,运行"Build"。此时,OpenCV的*d.dll文件(for debug)和*.dll文件(for release)将出现在D:\Program Files\OpenCV2.0\vc2008\bin目录中;OpenCV的*d.lib文件(for debug)和*.lib文件(for release)将出现在D:\Program Files\OpenCV2.0\vc2008\lib目录;头文件*.h出现在D:\Program Files\OpenCV2.0\vc2008\include\opencv中。可以被VC++ 2008 Express调用的OpenCV动态库生成完毕。
4、 实验结果分析
中值滤波:
cvSmooth( img, afterImg, CV_MEDIAN, 3, 3 );
采用以上函数,结果如下:
Canny边缘检测:
cvCanny( img, afterImg, 50, 150, 3 );
采用以上主要函数,实验结果如下:
ColorMode05041300:
IplImage* redImage = cvCreateImage( cvGetSize( img ), IPL_DEPTH_8U, 1 );
IplImage* greenImage = cvCreateImage(cvGetSize( img ), IPL_DEPTH_8U, 1 );
IplImage* blueImage = cvCreateImage( cvGetSize( img ), IPL_DEPTH_8U, 1);
cvSplit( img, blueImage, greenImage, redImage, 0 );
采用以上主要函数,实验结果如下:
ColorModeRGB0504:
IplImage* afterImg = cvCreateImage( cvGetSize( img ), IPL_DEPTH_8U, 1 );
IplImage* redImage = cvCreateImage( cvGetSize( img ), IPL_DEPTH_8U, 1 );
IplImage* greenImage =cvCreateImage( cvGetSize( img ), IPL_DEPTH_8U, 1 );
IplImage* blueImage = cvCreateImage( cvGetSize( img ), IPL_DEPTH_8U, 1 );
IplImage* alphaImage= cvCreateImage( cvGetSize( img ), IPL_DEPTH_8U, 1 );
cvSplit( img, blueImage, greenImage, redImage, alphaImage );
采用以上主要函数,实验结果如下:
Fractal:
for( int i = 0; i < height; i++){
for( int j = 0; j < width; j++){
itobin( temp, data[i*step + j] );
for( int k = 0; k < size; k++ ){
if( temp[k] == '1' ){
imgData[k][i*step + j] = data[i*step + j];
}
}
}
}
用以上主要函数,实验结果如下:
Laplace:
cvLaplace( in, out, aperture );
用以上主要函数,实验结果如下:
Sobel边缘检测:
cvSobel( img, afterImg, 1, 0 );
cvConvertScaleAbs( afterImg, finalImg, 1, 0 );
用以上主要函数,实验结果如下:
傅利叶变换:
cvDFT( dft_A, dft_A, CV_DXT_FORWARD, complexInput->height );
用以上主要函数,实验结果如下:
腐蚀:
cvDilate( img, afterImg, NULL, 1 );
用以上主要函数,实验结果如下:
高斯模糊:
cvSmooth( image, dest );
用以上主要函数,实验结果如下:
灰度翻转:
int ImageAdjust(IplImage* src, IplImage* dst,
double low, double high,
double bottom, double top,
double gamma )
用以上主要函数,实验结果如下:
膨胀:
cvErode( img, afterImg, NULL, 1 );
用以上主要函数,实验结果如下:
双边滤波:
cvSmooth( img, afterImg, CV_BILATERAL, 4, 4, 4, 4 );
用以上主要函数,实验结果如下:
直方图均衡化:
cvMerge(BlueImage,GreenImage,RedImage,0,Image2);
用以上主要函数,实验结果如下:
中值滤波:
cvSmooth( img, afterImg, CV_MEDIAN, 3, 3 );
用以上主要函数,实验结果如下:
5、 总结
这次实验了解了opencv的基本配置环境,还有一些基本编程技巧,例如中值滤波,直方图均衡化,双边滤波,双边滤波,灰度翻转,高斯模糊,腐蚀,福利叶变换,Sobel边缘检测,Laplace,Fractal,ColorModeRGB0504,ColorMode05041300,Canny边缘检测,Blur等基本操作,并且也加深理解了书中的基本理论。
展开阅读全文