数字图像处理实验教程V31zsjWord文件下载.docx

上传人:b****3 文档编号:15716688 上传时间:2022-11-15 格式:DOCX 页数:62 大小:277.60KB
下载 相关 举报
数字图像处理实验教程V31zsjWord文件下载.docx_第1页
第1页 / 共62页
数字图像处理实验教程V31zsjWord文件下载.docx_第2页
第2页 / 共62页
数字图像处理实验教程V31zsjWord文件下载.docx_第3页
第3页 / 共62页
数字图像处理实验教程V31zsjWord文件下载.docx_第4页
第4页 / 共62页
数字图像处理实验教程V31zsjWord文件下载.docx_第5页
第5页 / 共62页
点击查看更多>>
下载资源
资源描述

数字图像处理实验教程V31zsjWord文件下载.docx

《数字图像处理实验教程V31zsjWord文件下载.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验教程V31zsjWord文件下载.docx(62页珍藏版)》请在冰豆网上搜索。

数字图像处理实验教程V31zsjWord文件下载.docx

实验4图像灰度变换(综合性,3.1节)21

实验5直方图均衡化(验证性,3.3节)24

实验6滤波器设计(综合性,3.4节)30

实验7颜色空间转换(综合性,第4章)35

实验8图像傅里叶变换(验证性,第5章)41

拓展实验基于MFC的图像处理程序设计(综合性)47

参考文献47

实验1图像文件读入和显示(验证性,第1章)

1.实验目的

(1)熟悉VC++6.0开发环境。

(2)了解OpenCV开发库,学会在VC++6.0环境下安装和配置OpenCV。

(3)掌握开源库的通用安装和配置方法。

(4)通过运行一个简单的程序,初步了解OpenCV程序的特点。

2.实验内容

(1)编写程序掌握OpenCV加载及显示图像的方法。

(2)查看图像的属性(包括类型、大小、分辨率等),掌握图像的采样和量化、像素间的联系。

3.实验步骤(验证性实验)

(1)检查所用的计算机系统是否已安装了VC++6.0(中英文版本均可)。

(2)安装OpenCV1.0并正确配置,配置文档见“9.OpenCV配置文档”。

(3)创建OpenCV控制台项目。

方法1:

新建文件

在VC6.0下新建一个C++源文件:

File->

New->

Files->

C++SourceFile,取名为hello.cpp,指定存储目录。

②在hello.cpp的编辑页面键入hello.cpp所给的代码,并保存。

③编译、连接,创建所需的工作区,在Debug目录下得到可执行文件hello.exe。

方法2:

新建工程

在VC6.0下创建一个空的控制台项目(Win32ConsoleApplication),取名为hello,指定存储目录。

②给该项目添加(新建)一个C源代码文件(C++SourceFile),取名为hello.cpp。

键入所给的代码。

③编译、连接该程序,在Debug目录下得到可执行文件hello.exe。

(4)在工程目录下放入图像文件lena.jpg,运行该项目,得到输出结果。

(5)按照上述

(1)-(3)步骤重新建立一个新的工程hello2.dsw,键入hello2.cpp的相关代码,编译、连接,调试参数,得到运行结果。

控制台程序有两种方法运行:

以命令行方式运行:

在cmd命令行窗口(开始->

运行->

打开,cmd->

确定,进入命令行窗口)中找到hello.exe所在的文件夹,输入hello.exelena.jpg(要求lena.jpg与编译连接好的hello.exe在同一个目录下),运行。

②指定输入参数:

在项目配置页依次找Project->

Settings->

Debug->

Programarguments,在其中直接输入程序要求的外部输入参数lena.jpg,运行该程序。

(要求lena.jpg与工程文件在同一个目录下。

为更好地理解控制台程序输入参数的问题,请将程序hello.cpp与程序hello2.cpp做仔细的对比,认真体会。

二者的区别在于,hello2.cpp中的main函数带有两个参数,argc和argv,如下面形式:

intmain(intargc,char**argv)或intmain(intargc,char*argv[])

这两个参数的作用是:

argc是指命令行输入参数的个数,argv存储了所有的命令行参数。

假如程序是hello.exe,如果在命令行运行该程序,运行命令为:

hello.exelena.jpg,则:

argc的值是2,argv[0]是"

hello.exe"

,argv[1]是"

lena.jpg"

(6)修改hello2程序,使其可以同时读取、显示多幅图像。

4.实验回答问题

(1)什么是OpenCV?

OpenCV的全称是:

OpenSourceComputerVisionLibrary 

OpenCV是一个基于BSD许可证授权(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上。

它轻量级而且高效——由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

(2)通过实验,查看IplImage结构体的数据结构。

请给出IplImage结构体的数据结构。

nt 

nSize;

 

/* 

IplImage大小 

*/ 

int 

ID;

版本 

(=0)*/ 

nChannels;

大多数OPENCV函数支持1,2,3 

或 

个通道 

*/

alphaChannel;

被OpenCV忽略 

depth;

像素的位深度

char 

colorModel[4];

channelSeq[4];

同上 

dataOrder;

交叉存取颜色通道, 

分开的颜色通道. 

*/

origin;

顶—左结构, 

底—左结构 

align;

图像行排列 

(4 

or 

8). 

OpenCV 

忽略它,使用 

widthStep 

代替 

width;

图像宽像素数 

height;

图像高像素数*/ 

struct 

_IplROI 

*roi;

图像感兴趣区域. 

当该值非空只对该区域进行处理 

_IplImage 

*maskROI;

在 

OpenCV中必须置NULL 

void 

*imageId;

同上*/ 

_IplTileInfo 

*tileInfo;

/*同上*/ 

imageSize;

图像数据大小(在交叉存取格式下imageSize=image->

height*image->

widthStep),单位字节*/ 

*imageData;

指向排列的图像数据 

widthStep;

排列的图像行大小,以字节为单位 

BorderMode[4];

边际结束模式, 

BorderConst[4];

*imageDataOrigin;

指针指向一个不同的图像数据结构(不是必须排列的),是为了纠正图像内存分配准备的 

(3)请说明OpenCV配置过程中,各个步骤的意义。

配置VC++6.0环境

下面需要设置VC6.0环境,使得VC6.0在编译OpenCV程序时,能够知道从何处找到头文件和库文件。

(1)配置头文件目录

依次打开Tools->

Options->

Directories:

在Include 

files中,添加如下目录(6个,通常用前面的4个即可):

(2)配置库文件目录

在Library 

files中,添加如下目录:

(三)配置项目

要使得VC6.0项目能够支持OpenCV,需要在项目中添加OpenCV的库文件链接,使程序能够知道所用的函数是来自哪个库。

依次打开Project->

Link,在Object/library 

modules中,添加所需要的lib文件,以空格分开。

通常包括(6个):

cxcore.lib 

cv.lib 

cvaux.lib 

highgui.lib 

cvcam.lib 

ml.lib 

(4)如何修改程序,使得程序可以显示多幅图像?

5.练习

【基础练习】试着不用参考给定例程,自己写出本次实验的代码,掌握OpenCV图像处理程序的基本流程和框架。

【扩展练习】编程实现加载并显示三幅图像,其中一幅通过指定文件名的方式读取,另外两幅通过外部输入参数读取。

1.#include 

<

cv.h>

2.#include 

highgui.h>

3.#include 

vector>

4. 

5.using 

namespace 

std;

6. 

7.#pragma 

comment(lib, 

"

cv.lib"

) 

8.#pragma 

cxcore.lib"

9.#pragma 

highgui.lib"

10. 

11.void 

imshowMany(const 

std:

:

string&

_winName, 

const 

vector<

IplImage*>

&

_imgs);

12. 

13.int 

main(void) 

14.{ 

15. 

imgs(6);

16. 

imgs[0] 

cvLoadImage("

test.png"

);

17. 

imgs[1] 

18. 

imgs[2] 

19. 

imgs[3] 

20. 

imgs[4] 

21. 

imgs[5] 

22. 

23. 

imshowMany("

DOTA2_Hero"

 

imgs);

24. 

cvWaitKey();

25. 

26. 

return 

0;

27.} 

28. 

29.void 

_imgs) 

30.{ 

31. 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 简洁抽象

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1