最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

嵌入式Qt-簡易網絡監(jiān)控攝像頭

2022-09-07 22:05 作者:碼農愛學習-B站  | 我要投稿

本編利用Qt實現(xiàn)一個網絡攝像頭功能,包含一個服務端和一個客戶端,服務端用于將USB攝像頭轉換為一個IP攝像頭,當有客戶端連接時,將其捕獲到的圖像通過TCP發(fā)送出去;客戶端運行在Linux板子上,用于查看攝像頭的實時畫面。

1 必備基礎知識

本篇需要編寫一個服務器和客戶端

注意,Qt中對Socket的操作進行了進一步的封裝,其基本思想還是一樣的。

下面就來看一下Qt中如何實現(xiàn)TCP Socket通信。

1.1 QTcpSocket與QTcpServer

  • QTcpSocket,在Qt中,Socket被封裝成了QTcpSocket,可以用它實現(xiàn)TCP客戶端的功能,以及服務端接收到客戶端后,對客戶端的處理。

  • QTcpServer,對于TCP服務端的功能,可以使用QTcpServer來完成。

這里整理Qt中TCP Socket的使用方法,配合Qt的信號與槽機制,即可實現(xiàn)服務端/客戶端數(shù)據(jù)的收發(fā)處理。


1.2 QCamera相關

  • QCamer,獲取當前系統(tǒng)可用的攝像頭 類似獲取串口

  • QCamerInfo,獲取當前系統(tǒng)可用的攝像頭 類似獲取串口

  • QCameraViewfinder,取景框類,攝像頭的實時畫面顯示到這個里面

  • QCameraImageCapture,圖像錄制類,與QCamer 配合使用可進行拍照

2 Win平臺上測試

首先在Windows平臺上用Qt Creator編寫服務端和客戶端程序,并運行測試。

2.1 服務器端

先來看下服務器端的最終效果:

  • 左側是攝像頭的顯示界面

  • 可以切換不同的攝像頭作為視頻源(筆記本自帶的攝像頭與USB外接的攝像頭)

  • 可以切換攝像頭的顯示分辨率

  • 可以選擇開啟或關閉攝像頭的IP服務

2.1.1 攝像頭畫面顯示

2.1.2 創(chuàng)建Socket服務


2.1.3 讀取圖像并發(fā)送給客戶端

先定義一下圖像傳送結構體和傳送狀態(tài):

具體的實現(xiàn)過程:

需要注意的是,圖像是需要分包傳送的,最后一包一般都不是設定的最大長度,需要計算一下最后一包的數(shù)據(jù)長度。

2.2 客戶端

先來看下客戶端的最終效果:

  • 右側是攝像頭畫面的顯示框

  • 可以修改要連接的服務端的IP地址

  • 可以選擇開啟或關閉網絡攝像頭

2.2.1 創(chuàng)建Socket連接

2.3.2 接收服務端的圖像

2.3.3 將圖像顯示出來


3 嵌入式Linux平臺上測試

3.1 交叉編譯

將客戶端程序的源代碼拷貝到Ubunu中進行交叉編譯,具體編譯過程可參考之前的文章:

嵌入式Qt-動手編寫并運行自己的第1個ARM-Qt程序

本篇的實驗環(huán)境,繼續(xù)使用的是燒錄了野火i.MX6ULL自帶的系統(tǒng)固件Linux板子,需要通過SSH的方式將編譯的程序再發(fā)送到板子中,SSH傳輸文件的操作可參考上篇文章:

嵌入式Qt-控制硬件:滑動條控制RGB燈

3.2 實驗演示


4 總結

本篇介紹了如何用Qt實現(xiàn)一個網絡攝像頭功能,通過服務端將USB攝像頭轉換為一個IP攝像頭,Linux板子中的客戶端來連接服務器,將攝像頭的實時畫面顯示出來。



嵌入式Qt-簡易網絡監(jiān)控攝像頭的評論 (共 條)

分享到微博請遵守國家法律
凤凰县| 龙井市| 泌阳县| 扎鲁特旗| 化德县| 佛学| 怀化市| 满城县| 景泰县| 贵德县| 无极县| 临城县| 民乐县| 云和县| 万全县| 定边县| 三亚市| 卫辉市| 牡丹江市| 莲花县| 庆云县| 红原县| 临沂市| 福安市| 沙坪坝区| 霍邱县| 永清县| 沙河市| 泰兴市| 连州市| 漯河市| 定远县| 班戈县| 七台河市| 平乡县| 大化| 静海县| 利津县| 永城市| 赣榆县| 子洲县|