打开你电脑的摄像头,画面里所有物体都会实时自动画框,和监控、人脸识别逻辑完全一样!
一、代码
python
import cv2
import numpy as np
# 1. 打开摄像头(0 = 默认摄像头)
cap = cv2.VideoCapture(0)
# 无限循环,一帧一帧读取画面
while True:
# 2. 读取每一帧画面
success, img = cap.read()
if not success:
break
# 3. 图像处理(灰度 + 模糊 + Canny边缘检测)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (5, 5), 0)
canny = cv2.Canny(blur, 50, 150)
# 4. 寻找轮廓
contours, _ = cv2.findContours(canny, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 5. 遍历所有物体,实时画框
for cnt in contours:
area = cv2.contourArea(cnt)
# 过滤小噪点,只框大物体
if area > 500:
x, y, w, h = cv2.boundingRect(cnt)
# 画绿色检测框
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
# 显示实时画面
cv2.imshow("Canny Edge", canny)
cv2.imshow("Camera Object Detection", img)
# 按 Q 键退出程序
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放摄像头,关闭窗口
cap.release()
cv2.destroyAllWindows()
二、关键代码解释
- 打开摄像头
python
cap = cv2.VideoCapture(0)
0= 电脑自带摄像头- 如果是外接摄像头,改成
1
2. while True 循环
视频 = 一连串连续的图片(帧) 循环就是每秒读取几十次画面,处理后显示出来。
3. 画框逻辑
和上一课完全一样!只是从 "处理一张图片" 变成了 "处理每一帧画面"。