移动互联网技术课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一:题目:远程图像传输

利用无线网络图像传感器,演示过程图像的传输遥控

二:内容

网络通讯实验

机器人配置无线网卡,也可以使你的RBOT 机器人直接接入到国际互联网,还可以使用无线网络将多台RBOT 机器人连接起来组成局域网,也是可以在其他地方接上网络输入IP 地址就可以控制您实验室的机器人了,使人看到您实验室中的景象,您可以遥控机器人行走,甚至于说您可以远程控制您的机器人

在执行远程图像传输演示程序时需要两台机器人,一台做服务器另一台做客户机。或者您可以用一台机器人和一台带无线网卡的电脑。首先您需要把二者用无线网络连接好,您可以用ping 命令看是否连接好。使用机器人做服务器端,执行exe;

其中包括三个主要类:

1、控制类

2、图像类

3、无线信号类

三:功能

借助无线网络和图像传感器,演示远程图像传输和远程遥控。

四:程序

1、客户端

客户端的核心主要是涉及用户的程序传输及对话框上信息的显示

(PhotoTransmitClientDlgCpp)它主要是生成下面的一个对话框并接

收处理从服务器传送过来的信息

并且添加相应的控件,以及这些控件的实现。

以下主要简析其中的函数的功能:

CPhotoTransmitClientDlg::CPhotoTransmitClientDlg(CWnd* pParent

/*=NULL*/): CDialog(CPhotoTransmitClientDlg::IDD, pParent) ,

m_nSpeed(0)

它是继承了对话框类,以便获得对话框操属性操作。

CPhotoTransmitClientDlg::OnInitDialog()

这个函数是有关对话框的变量的初始化,主要是设置图标,得到机器人的实例,得到网络客户端设备句柄,得到图像采集设备句柄

CPhotoTransmitClientDlg::OnPaint()

绘画函数,它实现的是绘制图标

CPhotoTransmitClientDlg::RecvProc(LONG nOwner,void* lpReturn)

此函数的功能是接受图像,并且不图像的信息显示出来

CPhotoTransmitClientDlg::OnRecoEvent(WPARAM wParam, LPARAM lParam)

记录事件,显示判断它上下左右等消息命令

CPhotoTransmitClientDlg::PreTranslateMessage(MSG* pMsg)

这是无线遥控的实现,它添加了上下左右键的处理操作

2、服务器端

服务器端也是要创建一个对话框,以显示自身的当前状态和客户端的

链接信息;其创建的对话框如下:

服务器的对话框文件的实现和客服端的思想基本一样;首先都是继承c++中的基类CDialog;

接下来初始化,CPhotoTransmitServerDlg::OnInitDialog()

需要用到网络服务器端类库、图像采集类库和运动控制类库,需要把这些类库添加进来。然后得到机器人实例,获取TCP协;得到视频;采集设备句柄;得到运动设置句柄;

设置网络参数和图像参数:

主要是:得到网络端口;设置存储图像的内存长度;设置网络;绑定网络处

理;设置图像大小;设置图像参数;绑定显示窗口;设置设备号;申请动态内存拷贝当前图像帧到所申请的内存空间;网络发送图像;CPhotoTransmitServerDlg::OnBnClickedEnd()

处理控件的响应函数

CPhotoTransmitServerDlg::PreTranslateMessage(MSG* pMsg)

传输无线信号

CPhotoTransmitServerDlg::RecvProc(LONG nOwner,void* lpReturn)

运动回调函数,实现机器人遥控运动的操作

五:流程图

六:模块

A、对话框模块:添加各种按钮,并响应相应的消息,显示图像

信息,得到程序当前的运行状态;

B、网络模块:设置服务器,设置客服端,链接连个端口进行信

息的交流传递处理;

C、控制模块:控制程序的运行,发送命令及处理程序返回的信

息;

D、图像模块:获取网络传递的信息流,按照图像的格式处理整

合,并显示到屏幕;

七:图像信息的深度处理

由于硬件设备的条件限制,图片的获取及显示仍有改进之处,我们利用软件提高图片的显示效果;

下面提供三种图片的处理

1、灰度化

把24位真彩BMP图像转变成256阶灰度图的具体步骤如下:

(1) 修改信息头

信息头共有11部分,灰度化时需要修改两部分

bi2.biBitCount=8;

bi2.biSizeImage=( (bi.biWidth+3)/4 ) * 4*bi.biHeight;

(2)修改文件头

文件头共有5部分,灰度化时需要修改两部分

bf2.bfOffBits =

sizeof(bf2)+sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD);

bf2.bfSize = bf2.bfOffBits + bi2.biSizeImage;

(3)创建调色板

RGBQUAD *ipRGB2 = (RGBQUAD *)malloc(256*sizeof(RGBQUAD));

for ( i = 0; i < 256; i++ )

ipRGB2[i].rgbRed = ipRGB2[i].rgbGreen = ipRGB2[i].rgbBlue =

i;

(4)修改位图数据部分

这部分主要是由原真彩图的rgbRed、rgbGreen、rgbBlue分量值得到灰

度图像的灰度值Y,可以用下面公式得到:

Y=0.299*rgbRed+0.587* rgbGreen+0.114*rgbBlue;

相关文档
最新文档