色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ESP8266WIFI模塊用途開發(fā)實例 連網(wǎng)播放視頻

碼農(nóng)愛學習 ? 來源:碼農(nóng)愛學習 ? 作者:碼農(nóng)愛學習 ? 2022-06-06 09:34 ? 次閱讀

本篇介紹ESP8266OLED上播放視頻

電腦Python程序作為視頻數(shù)據(jù)的服務器,借助OpenCV實時讀取視頻幀,并進行二值圖像轉換,尺寸調整,再將二值圖像轉為數(shù)組,并以二進制形式的數(shù)據(jù)通過socket方式無線發(fā)送給ESP8266。

ESP8266采用Arduino IDE編程,借助U8g2庫,將圖像數(shù)據(jù)實時顯示到OLED屏幕中。

pYYBAGKczkKAMkoRAAN3juuVx6M729.png

1 ESP8266端視頻幀接收與播放程序

ESP8266作為socket客戶端,接收服務端發(fā)送的圖像幀數(shù)據(jù),進行顯示。

ESP8266使用Arduino IDE環(huán)境進行開發(fā)。

1.1 WIFI初始化與服務器連接

#define IP "192.168.5.100"
#define PORT 8080

void initWiFi()
{
  Serial.print("Connecting WiFi...");
  WiFi.mode(WIFI_STA); //配置WIFI為Station模式
  WiFi.begin(ssid, pass); //傳入WIFI熱點的ssid和密碼
  while (WiFi.status() != WL_CONNECTED) //等待連接成功
  {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP()); //打印自己的IP地址

  client.connect(IP, PORT);
}

1.2 視頻顯示主循環(huán)

uint8_t testb[1024] = {};

void loop()
{
  //Serial.println("hello esp8266");
  delay(10);
  while (client.available())
  {
    delay(12);
    client.read(testb, 1024);
    u8g2.firstPage();
    do {
      u8g2.drawXBM(0, 0, 128, 64, testb);
    } while (u8g2.nextPage());
  }
}

2電腦端視頻編碼發(fā)送程序

電腦端作為socket服務器端,將視頻幀數(shù)據(jù)發(fā)送出去。

電腦端采用Python3編程,借助OpenCV實現(xiàn)視頻的讀取與圖像數(shù)據(jù)格式轉換。

pYYBAGKczleAfJi5AAExs68QNq8808.png

2.1 主程序

程序的基本思想是:

利用OpenCV讀取視頻文件

對視頻幀的圖像,進行尺寸修改

對圖像進行二值化處理

將二值圖像轉換為數(shù)組

將數(shù)組通過socket發(fā)送出去

video_path="badapple_320240_xvid.mp4"
    
def PlayVideo(video_path, client):
    endian          = 'L'
    color_reverse   = 'false'
    
    c = 0#累計幀數(shù)
    timeF = 8#隔x幀截一次圖
    
    video = cv2.VideoCapture(video_path) #打開視頻
    player = MediaPlayer(video_path) #打開音頻
    while True:
        grabbed, frame= video.read()
        audio_frame, val = player.get_frame()
        if not grabbed:
            print("End of video")
            break
        if cv2.waitKey(28) & 0xFF == ord("q"):
            break
        cv2.imshow("Video", frame)
        if val != 'eof' and audio_frame is not None:
            img, t = audio_frame

        if (c % timeF == 0):  # 每隔timeF幀進行存儲操作
            frame = cv2.resize(frame,(128,64))#調整尺寸
            frame = binary_image(frame)#二值化
            matrix = img_to_matrix(frame, endian, color_reverse)
            data = bytes(matrix)
            client.send(data)

        c = c + 1
        #time.sleep(0.2)
        #cv2.waitKey(1)
            
    video.release()
    cv2.destroyAllWindows()

###############
client = 0
client = socket_start()
PlayVideo(video_path, client)

2.2 圖像轉為數(shù)組

利用OpenCV,將圖像轉為黑白圖像:

def binary_image(image):#將圖像處理為二值化的程序
    gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)  #把輸入圖像灰度化
    h, w =gray.shape[:2]
    m = np.reshape(gray, [1,w*h])
    mean = m.sum()/(w*h)
    ret, binary =  cv2.threshold(gray, mean, 255, cv2.THRESH_OTSU)
    return binary

然后再轉為數(shù)組:

def img_to_matrix(frame, endian, color_reverse):
    width = frame.shape[1] #128
    height = frame.shape[0] #64

    if endian == 'B':
        byte_reverse = True
    else:
        byte_reverse = False

    if color_reverse == 'true':
        color_reverse = True
    else:
        color_reverse = False

    unalign = 0
    matrix = list()
    
    if (width%8) != 0:
        unalign = 1
    for i in range(0, height): #64
        for j in range(0, (width//8)+unalign): #128/8=16
            v = 0x00
            rs = 8*j      
            re = 8*(j+1)  
            if re > width:
                re = width
            for k in range(rs, re):
                if frame[i, k] != 0:
                    if not byte_reverse:
                        v |= (0x01 << (k%8))
                    else:
                        v |= (0x01 << (7-(k%8)))
            if color_reverse:
                v ^= 0xff
            matrix.append(v)

    return matrix

2.3 開啟socket服務

def socket_start():
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    host = socket.gethostbyname(socket.gethostname())
    port = 8080

    host = '192.168.5.100'
    print(host)
    print(port)
    s.bind((host,port))
    s.listen(5)

    print('等待客戶端連接中…')

    client,client_address = s.accept()
    print('新連接')
    client_IP = str(client_address[0])
    print('IP:'+client_IP)
    client_port = str(client_address[1])
    print('Port:' + client_port)

    return client

3 測試效果

https://www.bilibili.com/video/BV11S4y1S7ir

pYYBAGKczkKAMkoRAAN3juuVx6M729.png

4 總結

本篇介紹ESP8266在OLED上播放視頻,包括ESP8266端的圖像接收與顯示程序,與電腦端的Python讀取視頻并進行編碼與數(shù)據(jù)發(fā)送程序。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5087

    文章

    19149

    瀏覽量

    306299
  • WIFI
    +關注

    關注

    81

    文章

    5301

    瀏覽量

    204155
  • ESP8266
    +關注

    關注

    50

    文章

    962

    瀏覽量

    45149
收藏 人收藏

    評論

    相關推薦

    ESP8266WiFi模塊

    請問,ESP8266WiFi模塊設置成AP模式,用USB轉串口燒錄進去的時候能夠搜到WiFi信號,斷電后重新上電就搜不到信號了,求各路大神指導
    發(fā)表于 07-27 11:22

    esp8266wifi模塊工作原理

    esp8266wifi模塊工作原理,買正點原子的開發(fā)板時送了一塊ESP8266wifi模塊,一直沒使用,最近幾天剛好有時間就拿出來玩了一下,
    發(fā)表于 07-14 06:39

    ESP8266WiFi模塊的學習與使用

    基于STM32的ESP8266wifi模塊控制多路繼電器ESP8266WiFi模塊的學習與使用XCOM V2.0串口調試助手下載鏈接網(wǎng)絡調試助手下載鏈接
    發(fā)表于 08-03 07:20

    esp8266WiFi模塊使用經(jīng)驗分享

    esp8266WiFi模塊的引腳是怎樣進行連接的?如何對esp8266WiFi模塊進行調試呢?
    發(fā)表于 10-22 09:16

    esp8266過程文檔

    通過串口發(fā)AT指令驅動esp8266wifi模塊,過程
    發(fā)表于 11-10 17:09 ?0次下載

    ESP8266模塊官方使用指導

    無線WiFi ESP8266模塊主導文件,內容包括命令指導,使用測試、實例和使用方法
    發(fā)表于 06-08 17:52 ?233次下載

    esp8266串口wifi實例

    ESP8266串口WiFi擴展板是深圳四博智聯(lián)科技有限公司開發(fā)的一款基于樂鑫ESP8266的超低功耗的UART-WiFi
    發(fā)表于 12-08 13:34 ?1.9w次閱讀

    esp8266固件如何升級_ESP8266WIFI模塊固件升級

    時下很流行的無線通信各式各樣,下面小編為大家接收一種最常用的無線通信模塊WIFI模塊ESP8266 的固件升級。
    的頭像 發(fā)表于 04-12 10:57 ?4.3w次閱讀
    <b class='flag-5'>esp8266</b>固件如何升級_<b class='flag-5'>ESP8266WIFI</b><b class='flag-5'>模塊</b>固件升級

    如何將ESP8266接到WiFi

    在之前的ESP8266項目中,我簡要介紹了ESP8266 WiFi模塊,如何開始使用ESP8266和Arduino,
    的頭像 發(fā)表于 07-29 11:32 ?8.7w次閱讀
    如何將<b class='flag-5'>ESP8266</b><b class='flag-5'>連</b>接到<b class='flag-5'>WiFi</b>

    如何設計和開發(fā)PCBESP8266WiFi模塊

    在本項目/教程中,我將向您展示如何設計和開發(fā)PCB ESP8266 WiFi模塊。如果你還記得“開始使用ESP8266和ARDUINO ”項
    的頭像 發(fā)表于 07-29 10:46 ?1.1w次閱讀

    普中WIFI ESP8266模塊的詳細資料合集免費下載

    工具包,串口調試助手,手機APP軟件,網(wǎng)絡調試助手)ESP8266服務器及客戶端使用,PZ-WIFI-ESP8266模塊開發(fā)手冊--普中STM32F1
    發(fā)表于 03-03 08:00 ?108次下載
    普中<b class='flag-5'>WIFI</b> <b class='flag-5'>ESP8266</b><b class='flag-5'>模塊</b>的詳細資料合集免費下載

    ESP8266 WiFi模塊獲取網(wǎng)絡天氣適配戰(zhàn)艦開發(fā)板的使用實例

    本文檔的主要內容詳細介紹的是ESP8266 WiFi模塊獲取網(wǎng)絡天氣適配戰(zhàn)艦開發(fā)板的使用實例
    發(fā)表于 06-12 16:36 ?39次下載
    <b class='flag-5'>ESP8266</b> <b class='flag-5'>WiFi</b><b class='flag-5'>模塊</b>獲取網(wǎng)絡天氣適配戰(zhàn)艦<b class='flag-5'>開發(fā)</b>板的使用<b class='flag-5'>實例</b>

    ESP8266 wifi模塊開發(fā)匯總

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ESP8266 wifi模塊開發(fā)匯總?ESP8266
    發(fā)表于 11-05 19:21 ?188次下載
    <b class='flag-5'>ESP8266</b> <b class='flag-5'>wifi</b><b class='flag-5'>模塊</b><b class='flag-5'>開發(fā)</b>匯總

    ESP8266 WIFI的stm32f103的完整工程

    ESP8266WIFI 的stm32f103 的完整工程資料分享
    發(fā)表于 11-17 15:23 ?29次下載

    esp8266wifi模塊怎么連接手機

    ESP8266 WiFi模塊連接手機主要可以通過兩種方式實現(xiàn): 通過路由器連接(STA模式)和直接作為熱點連接(AP模式) 。以下是兩種連接方式的步驟: 一、通過路由器連接(STA模式) 配置
    的頭像 發(fā)表于 08-19 17:27 ?3272次閱讀
    主站蜘蛛池模板: 成 人 动漫3d 在线看| 日本一卡精品视频免费| 国产亚洲精品免费视频| 欧美国产精品主播一区| 伊人国产精品| 久久日韩精品无码一区| 曰本女人牲交视频免费| 蓝男色gay| 午夜福利影院私人爽爽| 在线高清视频不卡无码| 国产AV高清怡春院| 三级黄色一级视频| 国产精品JIZZ视频免费| 无套内射纹身女视频| 国产精品野外AV久久久| 亚洲AV永久无码精品澳门| 国模啪啪久久久久久久| 日韩欧美一区二区中文字幕| 1级午夜影院费免区| 国产精品成人自拍| 雪恋电影完整版免费观看| 好爽好深太大了再快一点| 伊人久久综合| 欧美性xxxx18| 国产精品亚洲欧美一区麻豆| 亚洲精品在线网址| 麻豆AV蜜桃AV久久| 超碰免费碰免费视频| 午夜dj影院视频观看| 精品亚洲欧美中文字幕在线看| 熟女啪啪白浆嗷嗷叫| 国产一区二区波多野结衣| 亚洲欧美免费无码专区| 国产免费播放一区二区三区 | 91青青草原| 精品一区二区三区免费观看| 微福利92合集| 久久99国产精品二区不卡| 99er4久久视频精品首页| 久久亚洲午夜牛牛影视| QVOD理论|