今天我們要給植物一雙「眼睛」。
ESP32-CAM 不只是攝影機,還能成為 AI 的資料來源。
💡 原理
我們讓 ESP32-CAM 拍下植物照片,上傳到 Flask 伺服器。
伺服器用 OpenCV 分析葉片顏色。
綠色比例下降時,就代表植物缺水或生病。
📸 拍照上傳程式
HTTPClient http;
camera_fb_t *fb = esp_camera_fb_get();
http.begin("http://yourserver/upload");
http.addHeader("Content-Type", "image/jpeg");
int code = http.POST(fb->buf, fb->len);
Serial.println(code == 200 ? "✅ 上傳成功" : "❌ 上傳失敗");
esp_camera_fb_return(fb);
http.end();
🧠 Flask + OpenCV 判斷
@app.route('/upload', methods=['POST'])
def upload():
file = request.data
img = cv2.imdecode(np.frombuffer(file, np.uint8), cv2.IMREAD_COLOR)
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv, (25, 40, 40), (70, 255, 255))
green_ratio = cv2.countNonZero(mask) / (img.size / 3)
return "Dry" if green_ratio < 0.5 else "OK"
🌿 意義
這樣 ESP32-CAM 就能「看懂植物表情」:
葉子變黃 → 缺水
顏色黯淡 → 缺光
綠意滿滿 → 狀態良好!