|
|

楼主 |
发表于 2026-2-6 10:36:52
|
显示全部楼层
- import cv2
- import requests
- import numpy as np
- url = 'http://192.168.3.128/stream' # UNIHIKER K10的IP地址
- cv2.namedWindow("live", cv2.WINDOW_NORMAL) # 创建一个可调整大小的窗口
- cv2.resizeWindow("live", 240, 320) # 设置窗口初始大小为240*320
- # 启动 HTTP 请求获取视频流
- try:
- response = requests.get(url, stream=True, timeout=10)
- print("连接到视频流")
-
- img_data = b'' # 用于存储接收到的图像数据
-
- # 按块读取数据
- for chunk in response.iter_content(chunk_size=1024):
- if chunk:
- img_data += chunk # 将接收到的数据累加到 img_data 中
- # 判断是否接收到完整的 JPEG 数据
- start_idx = img_data.find(b'\xff\xd8') # 查找 JPEG 开始标志
- end_idx = img_data.find(b'\xff\xd9') # 查找 JPEG 结束标志
- if start_idx != -1 and end_idx != -1:
- jpg_data = img_data[start_idx:end_idx+2] # 提取出完整的 JPEG 数据
- # 转换为 NumPy 数组
- img_np = np.frombuffer(jpg_data, dtype=np.uint8)
- img = cv2.imdecode(img_np, cv2.IMREAD_COLOR) # 解码 JPEG 图像数据
- if img is not None:
-
- cv2.imshow("live", img) # 显示实时图像
- # 按下 'q' 键退出
- if cv2.waitKey(1) & 0xFF == ord('q'):
- break
- # 清除已处理的数据
- img_data = img_data[end_idx+2:] # 移除已处理的图像数据部分
- else:
- print("没检测到数据!")
- except requests.exceptions.RequestException as e:
- print(f"错误: {e}")
- cv2.destroyAllWindows()
复制代码 |
|