项目简述
实现客户端调用摄像头,并以帧的形式将每一帧传输到服务端,服务端将图片进行某些处理后再返回给客户端。(客户端与服务端通信代码部分参考《Qt5 开发及实例》)
项目步骤
客户端的编写
通过Qt Designer画出如下界面
在客户端工程文件“client、pro”中加入 QT += network语句,并将环境路径配置好。
在头文件“client.h”中加入如下代码:
1 class Client : public QWidget
2 {
3 Q_OBJECT
4
5 public:
6 explicit Client(QWidget *parent = 0);
7 ~Client();
8
9 private slots:
10 void slotEnter();
11 void slotConnected();
12 void slotDisconnected();
13 void dataReceived();
14 void slotSend();
15 void nextFrame();
16 signals:
17 void connectedToServer(void);
18
19 private:
20 Ui::Client *ui;
21 bool status;
22 int port;
23 QHostAddress *serverIP;
24 QString userName;
25 QTcpSocket *tcpSocket;
26
27 qint64 receiveBlockSize;
28
29 Mat frame;
30 VideoCapture cap;
31 QTimer* timer;
32 QImage image;
33
34 void ShowImage(QByteArray ba);
35 QByteArray picToData(cv::Mat frame);
36 QImage Mat2QImage(cv::Mat cvImg);
37 };
View Code
在源文件“client.cpp”的构造函数中加入如下代码:
1 Client::Client(QWidget *parent) :
2 QWidget(parent),
3 ui(new Ui::Client)
4 {
5 ui->setupUi(this);
6
7 setWindowFlags(windowFlags()&~Qt::WindowMaximizeButtonHint);
8 setFixedSize(this->width(),this->height());
9
10 status=false;
11 port=8010;
12 ui->portLineEdit->setText(QString::number(port));
13
14 serverIP&#