import cv2
import urllib.request
import numpy as np

url = 'http://192.168.1.129:80/capture'  # ESP32-CAM的IP地址

cv2.namedWindow("live transmission", cv2.WINDOW_AUTOSIZE)  # 创建一个窗口用于显示实时图像

while True:
    img_resp = urllib.request.urlopen(url)  # 从URL获取图像数据
    imgnp = np.array(bytearray(img_resp.read()), dtype=np.uint8)  # 将图像数据转换为NumPy数组
    img = cv2.imdecode(imgnp, -1)  # 解码JPEG图像数据

    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 将图像转换为灰度图像
    canny = cv2.Canny(cv2.GaussianBlur(gray, (11, 11), 0), 30, 150, 3)  # 使用Canny算法进行边缘检测
    dilated = cv2.dilate(canny, (1, 1), iterations=2)  # 对边缘图像进行膨胀操作
    (contours, _) = cv2.findContours(dilated.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)  # 查找轮廓
    k = img
    cv2.drawContours(k, contours, -1, (0, 255, 0), 2)  # 在原始图像上绘制轮廓

    cv2.imshow("mit contour", canny)  # 显示边缘检测结果图像

    cv2.imshow("live transmission", img)  # 显示实时图像
 
    # 按下 'q' 键退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cv2.destroyAllWindows()
