我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


ESP32CAM可以透過MQTT達到直播的功能,將影像推播到手機上,Android手機可以利用Mqtt dash來接收影像,就可以在世界上任何地方看到ESP32CAM的影像了

本部份請參閱:ESP32CAM MQTT直播

不過有些iOS使用者就沒有合適的APP可以用,就連PC上也沒有合適的MQTT Client可以用,那就自己寫一個吧~

本程式採用Python語法,請先自行pip安裝Opencv及paho-mqtt程式庫,程式執行前,請修改MQTT Broker及SubTopic1等參數


#請先安裝1.paho-mqtt、2.opencv
import paho.mqtt.client as mqtt
import cv2
MqttBroker="mqtt.eclipseprojects.io"
MqttPort=1883
SubTopic1="youjunjer1030/storage308/pic"
 
#設定連線成功時的Callback
def on_connect(client, userdata, flags, rc):
    print("連線結果:" + str(rc))
    #訂閱主題
    client.subscribe(SubTopic1)
    
#設定訂閱更新時的Callback
def on_message(client, userdata, msg):
    f = open('receive.jpg','wb+') #開啟檔案
    f.write(msg.payload)#寫入檔案
    f.close()#關閉檔案
    #顯示影像檔
    img=cv2.imread('receive.jpg')
    #img=cv2.resize(img,(640,480))
    cv2.imshow('image', img)
    key=cv2.waitKey(1)
    # 按q離開
    if key & 0xFF == ord('q'):
        exit()
    print('image received')
 
#設定Mqtt連線    
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(MqttBroker, MqttPort, 60)
#等候訂閱
client.loop_forever()

不過目前有一個小缺點,就是使用Opencv的imshow會有點卡卡的,以後再來找其他顯示圖片的方法。

image

arrow
arrow
    文章標籤
    esp32cam python mqtt
    全站熱搜

    夜市 小霸王 發表在 痞客邦 留言(2) 人氣()