15.3.6 远程摄像头--创建客户方工程(1)
下面我们以具体步骤来实现远程摄像头监控示例。服务方和客户方进行通信时,需约定通信格式,也就是每个网络数据包格式。这些消息由双方共用,从远程监控实现网络拓扑图可以看出,传输的消息内容就是服务方需监控的信息,本示例中需要传输的是摄像头视频数据帧。消息定义如下所示。
- #define MSG_VIDEO_DATA_C2S 1
- //客户方通知服务方接收一帧视频数据
(1)创建MFC对话框应用程序,命名为VideoClient,对话框模板控件设计如图15.14所示。图中的服务方IP编辑框控件ID设为IDC_EDIT_SVR_IP;服务方端口编辑框控件ID设为IDC_EDIT_SVR_PORT;视频采集按钮控件ID设为IDC_BTN_GETVIDEO;停止采集按钮控件ID设为IDC_BTN_STOP。
|
| 图15.14 客户方工程对话框控件布局 |
(2)参考图15.12为工程配置OpenCV库,并为工程添加消息定义文件。在VC++(www.cppentry.com)主界面上选择File|New命令,弹出New对话框。在其中选择Files项,单击选取列表中C/C++(www.cppentry.com) Header File项,在右边File文本框中输入文件名Msg_Public。单击OK按钮,完成添加消息定义头文件。在Msg_Public.h头文件中加入如下代码:
- #ifndef _MSG_DEFINE_H_
- #define _MSG_DEFINE_H_
- //定义服务方与客户方共用消息
- #define MSG_VIDEO_DATA_C2S 1 //客户方通知服务方接收一帧视频数据
- #endif
(3)把openCV目录下的DirectShow库及头文件包含到工程中,将CameraDS.h CameraDS.cpp复制到工程目录下,并添加到该工程中。
选择Project|Settings命令,弹出Project Settings对话框,如图15.15所示。在该对话框中,选取左上角"Setting For列表框中的All ConfigUrations选项。选择右边的C/C++(www.cppentry.com)选项卡,并选取 Category下拉列表框中的Precompiled Header选项,然后选择Not using precompiled peader单选按钮(不使用预编译头),如图15.16所示,将上述网络传输单元文件添加到工程中。
注意:为了减少网络传输数据量,这里通过GDI+将BMP图片格式转为JPG图片数据,再进行网络传输。
|
| 图15.15 Project Settings对话框 |
|
| 图15.16 去掉预编译头选项 |