<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何使用OpenCV和Socket進(jìn)行視頻聊天?

          共 2294字,需瀏覽 5分鐘

           ·

          2021-07-05 07:43

          點(diǎn)擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

          重磅干貨,第一時間送達(dá)


          一、簡介


          在本文中,我們要構(gòu)建的是視頻聊天,但話音通道使用的OpenCV和Python中的Socket。流程:

          • 創(chuàng)建用于一對一通信的 TCP 套接字。

          • 從相機(jī)中獲取實(shí)時流。

          • 對雙工通道使用多線程。


          OpenCV是使用Python進(jìn)行圖像和視頻處理的庫,它做任何與圖像和視頻相關(guān)的事情:裁剪、編輯、創(chuàng)建圖像和制作視頻。Socket是一種低級網(wǎng)絡(luò)接口,用于連接網(wǎng)絡(luò)上的兩個節(jié)點(diǎn)以進(jìn)行通信,線程是用于在python中創(chuàng)建多線程程序的庫。


          二、步驟


          首先,我們將使用以下代碼使用Socket庫創(chuàng)建TCP Socket:

          • 將協(xié)議設(shè)置為 TCP,將地址族設(shè)置為 IPv4 地址族。

          # tcp and ipv4 address familytcp = socket.SOCK_STREAMafm = socket.AF_INET
          • 使用 TCP 和 AFM 變量創(chuàng)建Socket。

          # creating socketsa = socket.socket(afm,tcp)sb = socket.socket(afm,tcp)

          sa和sb是創(chuàng)建用于在兩個節(jié)點(diǎn)之間進(jìn)行通信的Socket。我們也可以使用單個Socket來實(shí)現(xiàn)相同的目的。


          • 綁定IP地址和端口號。

          sa.bind((usera_ip,usera_port))
          • 開始監(jiān)聽Socket。

          sa.listen()
          • 開始接受來自節(jié)點(diǎn)的連接。

          session, addr = sa.accept()

          sa.accept()用于接受來自其他節(jié)點(diǎn)的連接請求。session存儲會話數(shù)據(jù)并使用它來發(fā)送和接收請求,而addr用于存儲接收節(jié)點(diǎn)的地址。


          • 將此節(jié)點(diǎn)連接到另一個節(jié)點(diǎn)。

          sb.connect((usera_ip,2001))


          然后,我們需要設(shè)計(jì)復(fù)雜的接收和發(fā)送來接收和發(fā)送視頻。

          receive()函數(shù)包括使用以下代碼塊接收視頻幀的無限循環(huán)。


          session.recv(buff_size)用于從節(jié)點(diǎn)接收字節(jié)數(shù)組,np.frombuffer()用于存儲與所述字節(jié)回numpy的arraay np.uint8數(shù)據(jù)類型的存儲的0?255然后,將范圍內(nèi)值cv2.imdecode(image_arr,cv2.IMREAD_COLOR)被用于使用cv2.IMREAD_COLOR參數(shù)將圖像解碼回彩色圖像。


          如果圖像為空且數(shù)據(jù)類型為Nonetype,則程序?qū)⑼ㄟ^或使用cv2.imshow(image_name, image)連續(xù)顯示幀,并使用cv2.waitKey(10)使幀等待 10 毫秒并退出。cv2.destroyAllWindows()用于完全銷毀圖像窗口并使用os._exit(0)退出線程。


          send()函數(shù)包括使用以下代碼塊發(fā)送視頻幀的無限循環(huán)。

          cv2.VideoCapture(0)用于訪問攝像頭,并且可以使用作為參數(shù)傳遞的數(shù)字來更改攝像頭。capture存儲相機(jī)訪問方法,如read()來自相機(jī)的輸入或release()是相機(jī)。


          capture.read()返回兩個變量,第一個作為布爾值,要么是照片,要么是真假,第二個是照片。然后,如果ret為True,則使用imencode('.jpg',photo)對圖像進(jìn)行編碼,并返回兩個變量和第二個變量作為編碼數(shù)組,并使用.tobytes轉(zhuǎn)換為字節(jié),該字節(jié)可以通過Socket發(fā)送。


          sendall(byte_encoded_array)通過Socket發(fā)送所有數(shù)據(jù)并將數(shù)據(jù)發(fā)送到目標(biāo)節(jié)點(diǎn),直到所有數(shù)據(jù)成功發(fā)送到目標(biāo)節(jié)點(diǎn)。

          我們需要使用thread.Thread(target=func)創(chuàng)建用于同時接收和發(fā)送視頻的線程,目標(biāo)為send()和receive()為單獨(dú)的線程提供函數(shù)。


          項(xiàng)目鏈接:
          https://github.com/Launchpad5682/summer_training_21/tree/main/task_3


          下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
          在「小白學(xué)視覺」公眾號后臺回復(fù):擴(kuò)展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講
          小白學(xué)視覺公眾號后臺回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計(jì)數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。

          下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
          小白學(xué)視覺公眾號后臺回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講即可下載含有20個基于OpenCV實(shí)現(xiàn)20個實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動駕駛、計(jì)算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 44
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日日夜夜超碰 | 日韩AV免费看 | 免费看黄色的视频 | 人妻斩蜜桃视频网站 | 五月婷婷六月婷婷 |