场景与准备
有时候我们需要将手机摄像头作为电脑的备用视频源,或者在特定场景下利用手机进行监控。通过局域网连接,我们可以用 Python 轻松实现这一需求。
本文以安卓手机为例,iOS 操作逻辑类似。核心思路是在手机上运行一个 IP 摄像头服务器应用,电脑端通过 OpenCV 读取网络流。
手机端设置
- 安装应用:在手机上安装任意支持 HTTP 流的 IP 摄像头服务器应用(如 IP Webcam)。
- 网络连接:确保手机与电脑处于同一局域网内。如果没有 WiFi,可以使用手机热点。
- 获取地址:打开应用后,点击分享或查看 IP 按钮,记录下显示的局域网 IP 地址和端口号(通常是
http://<IP>:8081)。
电脑端环境
我们需要安装 OpenCV 库来处理视频流。如果下载速度较慢,建议使用国内镜像源。
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple/
核心代码实现
下面的脚本会创建一个窗口显示手机画面,支持旋转适配横竖屏,并通过按键控制保存截图。
import cv2
import os
from datetime import datetime
# 创建窗口,允许调整大小
cv2.namedWindow('camera', cv2.WINDOW_NORMAL)
# 摄像头设置,请替换为实际的手机 IP 地址
video = 'http://admin:admin@<PHONE_IP>:8081'
capture = cv2.VideoCapture(video)
print("正在启动...")
while True:
success, img = capture.read()
if not success:
print("无法抓取帧")
break
# 图像旋转:手机通常横放,但 PC 窗口习惯竖屏,这里根据实际需求调整
# 90 度顺时针旋转
img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)
# 显示图像
cv2.imshow("camera", img)
# 按键处理
key = cv2.waitKey(10)
if key == 27: # ESC 键退出
break
elif key == ord():
img_folder =
os.path.exists(img_folder):
os.makedirs(img_folder)
timestamp = datetime.now().strftime()
img_filename =
cv2.imwrite(img_filename, img)
()
capture.release()
cv2.destroyAllWindows()


