实验一 多媒体基础知识
1. 实验目的:
1)掌握Windows提供的多媒体工具的简单使用方法。
2)基于美学基础在文档word中插入图片,并设置图片的格式。
3)认识静态图像文件、动态图像文件、视频和音频文件,以及文件保存时文件参数对文件大小的影响。
4)认识和了解数据压缩的基本原理,了解不同文件格式的数据量差异。
2. 实验内容
1)图像的编辑:
a) 用画图软件打开图片,在图像中加入文字。
b) 用画图软件进行图片的拉伸和旋转。
c) 图像区域的选择和复制。
d) 画图软件中刷子、橡皮、颜色选取和颜色填充工具的使用。
2)声音的编辑:
a) 用录影机软件打开.wav文件,进行播放,
b) 学习截取其中一段音频进行保存。
3)word文件中插入图片,并设置图片的格式:
a) 在word文件中插入图片。
b) 设置图片的格式,使得图片浮于文字上方。
4)多媒体压缩实践:
a) 不同参数设置下的图片转换。
b) 不同文件格式(压缩格式)下的图片转换。
3. 实验步骤
(1)图像编辑
a)插入本教材配套光盘。
b)打开画图工具。选择“文件/打开”菜单,在关盘的“练习素材/图片素材”文件夹中选择“011.JPG”文件,如下图3-1所示。
图3-1
c)改变图像的尺寸。选择“图像/拉伸/扭曲”菜单,显示拉伸和扭曲画面。在该画面的水平和垂直两个输入框中输入数值,如40,单击“确定”按钮。
d)添加文字。单击底部的颜色框,选择一种颜色。单击(文字)按钮,在图像上画出文字书写区域,然后输入文字。
e)在“字体”设置框中设置字体和字号。
f)鼠标对准文字框边缘移动文字的位置。添加文字后的效果如下图3-2所示。
图3-2
g)保存。选择“文件/另存为”菜单,显示“另存为”图画。
“保存类型”选择“24位位图”,文件名为:“实验1_画图工具练习_24位.bmp”,单击“保存”按钮。
再次选择“保存类型”为“256色位图”,提示可能会丢失颜色,单击“是”按钮,文件名为“实验1_画图工具练习_256色.bmp”,单击“保存”按钮。如3-3图所示。
图3-3
h)选择“文件/退出”菜单,退出画图工具。
(2)声音的编辑
a)选择“开始/程序/附件/娱乐/录音机”菜单,启动录音机。
b)选择“文件/打开”菜单,选择配音光盘中的“练习素材/声音素材/WAV音乐/瑞典狂想曲.WAV”,单击“打开”按钮。
c)截取声音片段。单击“播放”按钮,播放到截取点单击“停止”按钮。选择“编辑/删除当前位置之后的内容”菜单,显示询问信息,单击“确定”按钮。
单击“播放”按钮继续聆听声音,到另一个截取点时,单击“停止”按钮。选择“编辑/删除当前位置之后的内容”菜单,显示询问信息,单击“确定”按钮。此后的录音文件中只留下需要的声音片段。
d)选择“文件/另存为”菜单,将文件命名为“实验1_录音机练习.wav”,单击“保存”的按钮。
e)选择“文件/退出”菜单,退出“录音机”工具。
(3)word文件中插入图片
a)打开一个word文字文档。
b)选择“插入/图片/来自文件”菜单,插入图片。如图3-4所示。
图3-4
c)单击图片,在“图片”工具栏中单击“文字环绕”按钮,选择“浮于文字上方”。如图3-5所示。
图3-5
d)单击“保存”按钮。选择“文件/退出”菜单,退出“WORD”工具。
(4)多媒体压缩实践
a) 在硬盘的某个开放的逻辑区中,建立一个新建文件夹“实验5_图像”,然后把配套光盘“练习素材\图片素材”文件夹中的 “纪念碑.tif”图片复制到“实验5_图像”文件夹中。
b) 启动ACDSee 图像处理浏览软件,选择“实验5_图像”文件夹。如图 3-6所示:
图3-6
c) 鼠标右键单击“纪念碑.tif”图片,选择“工具/转换文件格式”菜单,显示“转换文件格式”对话框。如图3-7所示:
图3-7
d) 在转换文件格式画面中选择一种文件格式,如JPG 格式,单价“格式设置”按钮,显示“JPEG选项”对话框。如图3-8所示:
图3-8
e) 在“JPEG选项”的“图像品质”栏目中,调整滑块,改变压缩比率,越靠近右侧的“最佳品质”端,图像的品质越好,但数据量越大。调整完毕,按“确定”按钮。
f) 单击“下一步”按钮,显示目标选择画面。重中选择“在来源文件夹中放置已修改的图像”选项。单击下一步按钮。显示设置几多页选项画面,单击“开始转换”按钮。如图3-9所示:
图3-9
g) 进行以上步骤,将图片继续转换成BMP和GIF格式。如图3-10所示:
图3-10
h) 单击“查看方式”按钮,选择“详细资料”选项。观察4个文件的数据量差异,并记录。如图3-11所示:
图3-11
表3-1
i) 将四个图片文件更名为:
实验5_纪念碑.tif
实验5_纪念碑.jpg
实验5_纪念碑.bmp
实验5_纪念碑.gif
图3-12
4. 心得体会
这次多媒体实验,虽然只有很短的时间,操作也比较简单,但是通过这次的多媒体实验,让我对多媒体技术这门课程产生了很大的兴趣,在实际操作中也学会了很多以前不知道的知识,受益匪浅,也让我们明白了,想学好这门课程需要实践和理论相结合,以后要多多实践。
第二篇:多媒体技术实验报告一
多媒体技术实验报告一
一、 实验题目和目的
摄像头捕捉视频和静止图像
实验目的:熟悉和掌握使用Windows API 进行编程的基本原理和方法。熟悉各种不同的视频文件格式。
二、 实验要求
基本要求:利用windows api实现简单的视频捕捉功能
Bonus:连续捕捉静止图像
提示:使用winxp版本可以考虑采用vfw(video for windows)来实现,使用win7版本可以考虑采用directshow来实现,使用win8版本可以考虑采用Media Foundation或directshow来实现。
三、 实验内容
设计一个程序,有界面,可以调用摄像头进行视频捕捉并保存成文件。可以进行开始暂停。可以进行捕捉每一帧的画面并通过画图文件保存。
1、创建一个基于对话框的工程,如VideoPlay。
2、在对话框上添加相应的按钮,实现如动态捕捉、播放、连续捕捉等项功能。可考虑添加滑动条(slider 控件)用来反映目前的播放位置,等等。
3、为各个按钮添加相应的函数。
4、调试,运行。
四、 实验平台
实验硬件:个人PC机,摄像头
实验软件:VS2013,摄像头驱动程序,VFW开发包
实验平台:windows
五、 实验原理
Video for Windows 是WIN32 SDK 中多媒体编程SDK 的视频开发工具。在微软的Visual C++中提供了Video for Windows 的头文件vfw.h 和库文件vfw32.lib。
六、 实验过程
1、用Visual C ++的AppWizard 生成一个基于对话框的应用程序,并在StdAfx.h 中加入以下内容:
#include < vfw.h >
#pragma comment(lib,"vfw32.lib")
2、修改对话框资源,添加静态控制IDC_VIDEO 和按钮“捕捉”、“停止”、“设置格式”、“设置图像源”、“设置压缩”、“单帧捕获”、“定帧”、“退出”。(其实最重要的是“设置格式”、“设置图像源”、“设置压缩”、“单帧捕获”、“退出”,其它可以将其设置成
不可见,同时也可将其保留,以便将来扩展其功能时可用。)
3、在对话框的头文件中加入以下说明。
HWND m_hCapWnd;// 预示窗口
BOOL m_bInit;// 捕捉器初始化
CAPDRIVERCAPS m_CapDrvCap;// CAPDRIVERCAPS 结构,定义驱动器性能
CAPSTATUS m_CapStatus;// CAPSTATUS 结构,定义捕捉窗口当前状态
CAPTUREPARMS m_Parms;// CAPTURE PARMS 结构,定义捕捉参数
CString m_CapFileName;// 捕捉文件名称
4、在对话框类的OnInitDialog() 函数中加入捕捉器初始化以及连接驱动器。
m_bInit=FALSE;
CWnd *pWnd=AfxGetMainWnd() ->GetDlgItem(IDC_VIDEO); // 得到预示窗口指针
CRect rect;
pWnd ->GetWindowRect( &rect); // 得到窗口大小
m_hCapWnd=capCreateCaptureWindow((LPTSTR)TEXT(" 视频捕捉测试程序
"),WS_CHILD|WS_VISIBLE|WS_EX_CLIENTEDGE|WS_EX_DLGMODALFRAME,0,0,rect.Width(),rect.Wid
th(),pWnd ->GetSafeHwnd(),0); // 设置预示窗口
ASSERT(m_hCapWnd);
if(capDriverConnect(m_hCapWnd,0)){// 连接第0 号驱动器
m_bInit=TRUE;
// 得到驱动器的性能
capDriverGetCaps(m_hCapWnd,sizeof(CAPDRIVERCAPS), &m_CapDrvCap);
if(m_CapDrvCap.fCaptureInitialized){
// 如果初始化成功
capGetStatus(m_hCapWnd, &m_CapStatus,sizeof(m_CapStatus)); // 得到驱动器状态
capPreviewRate(m_hCapWnd,30); // 设置预示帧频
capPreview(m_hCapWnd,TRUE); // 设置预示方式
}
else{// 初始化未成功
AfxMessageBox("视频捕捉卡初始化失败!");
AfxGetMainWnd() ->PostMessage (WM_CLOSE);
}
}
else{// 未能连接到驱动器
AfxMessageBox("与视频捕捉卡连接失败!");
AfxGetMainWnd() ->PostMessage(WM_CLOSE);
}
m_CapFileName="c:\\Capture.avi";// 设置捕获文件
capFileSetCaptureFile(m_hCapWnd,m_CapFileName.GetBuffer(255));
5、在对话框类中加入响应“设置格式”消息的函数OnFormat()。
capDlgVideoFormat(m_hCapWnd);// 设置格式对话框
6、在对话框类中加入响应“设置图像源”消息的函数OnSource()。
capDlgVideoSource(m_hCapWnd);// 设置图像源对话框
7、在对话框类中加入响应“设置压缩”消息的函数OnCompress()。
capDlgVideoCompression(m_hCapWnd);// 设置压缩对话框
8、在对话框类中加入响应“捕捉”消息的函数OnCapture()。
capCaptureGetSetup(m_hCapWnd, &m_Parms,sizeof(m_Parms));// 得到设置参数
if(capCaptureSetSetup(m_hCapWnd, &m_Parms,sizeof(m_Parms))==TRUE){
BOOL suc=TRUE;
suc=capCaptureSequence(m_hCapWnd); // 捕捉到文件
return suc};
else
return FALSE;
注意点:在VideoCaptureDlg.h 中把afx_msg void OnCapture();改为afx_msg BOOL OnCapture();
在VideoCaptureDlg.cpp 修改为BOOL CVideoCaptureDlg::OnCapture() //捕捉
9、在对话框类中加入响应“定帧”消息的函数OnFreezed()。
capPreview(m_hCapWnd,FALSE);// 定帧
10、在对话框类中加入响应“单帧捕获”消息的函数OnImage()。
capGrabFrameNoStop(m_hCapWnd);// 截获当前图像
capEditCopy(m_hCapWnd);// 将图像拷贝到剪贴板
11、在对话框类中加入响应“停止”消息的函数OnStop()。
capCaptureStop(m_hCapWnd);// 停止捕捉
12、在对话框类中加入响应“退出”消息的函数OnExit()退出前断开捕捉器与驱动器的连接,并关闭窗
口。
capDriverDisconnect(m_hCapWnd);
CDialog::OnCancel();
附加说明:以上添加的按钮用于捕捉图像(button);
另外添加(Static Text)用于创建并设置捕获窗口;
保存图像的方法:点击“单帧捕获”——>打开附近里的“画图”——>“编辑”中的“粘贴”——>即可保存
捕捉的位图。
以上方法主要是采用了VFW 的函数和宏,也可以尝试用消息的方法,同样也可以实现。
如:SendMessage (hWndC, WM_CAP_DRIVER_CONNECT, 0, 0L);//用于连接设备
要做的就是根据相关的功能改变相应的参数就可以了
七、 实验结果
八、 实验总结