用报废手机给机器人装上"眼睛"!
📌 材料:闲置安卓机×1 + 电脑×1
💡 原理:手机变网络摄像头 + OpenCV颜色追踪
🌱 环保价值:让电子垃圾重获新生,减少0.5kg碳排放
附录:robot_eye.py 完整代码(直接复制使用)
python
#!/usr/bin/env python3
"""
🤖 机器人之眼 | 开源再造计划
✨ 用旧手机+OpenCV实现视觉追踪
🌍 环保提示:本项目让电子垃圾重获新生,减少碳排放
🔗 代码开源协议:MIT License
"""
import cv2
import numpy as np
import sys
def main(stream_url):
cap = cv2.VideoCapture(stream_url)
if not cap.isOpened():
print("❌ 无法连接手机摄像头!请检查:")
print("1. 手机与电脑是否在同一Wi-Fi")
print("2. IP Webcam是否已启动")
return
cv2.namedWindow('🤖 机器人之眼 | 开源再造计划', cv2.WINDOW_NORMAL)
print("✅ 启动成功!将红色物体移至镜头前...")
while True:
ret, frame = cap.read()
if not ret:
break
# 转HSV空间检测红色(含两种红色范围)
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
lower_red1 = np.array([0, 100, 100])
upper_red1 = np.array([10, 255, 255])
lower_red2 = np.array([160, 100, 100])
upper_red2 = np.array([180, 255, 255])
mask = cv2.inRange(hsv, lower_red1, upper_red1) + cv2.inRange(hsv, lower_red2, upper_red2)
# 轮廓追踪
contours, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
if contours:
largest = max(contours, key=cv2.contourArea)
if cv2.contourArea(largest) > 500:
x, y, w, h = cv2.boundingRect(largest)
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 3)
cv2.putText(frame, "TARGET LOCKED!", (x, y-10),
cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2)
cv2.imshow('🤖 机器人之眼 | 开源再造计划', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
if __name__ == "__main__":
if len(sys.argv) != 2:
print("用法: python3 robot_eye.py <手机视频流URL>")
print("示例: python3 robot_eye.py http://192.168.1.100:8080/video")
sys.exit(1)
main(sys.argv[1])

#开源新春集福 #地瓜机器人 #OpenLoong开源社区 #AtomGit