系统信息:
Raspberry Pi Zero 2W
系统版本: 2024-10-22-raspios-bullseye-armhf
Python 版本:Python 3.9.2
已安装 pip3
支持拍摄 1080p 30 (1092*1080), 720p 60 (1280*720), 60/90 (640*480)
已安装 vim
已安装 git
学习目标:
- 人脸识别
- 图像读取
- 修改尺寸
- 绘制矩形
- 人脸检测
学习内容:
读取图片
import cv2
# 读取图片
image = cv2.imread("./Pictures/01_zcw_bd.png")
# 显示图片
cv2.imshow("image", image)
# 等待
cv2.waitKey()
# 释放内存
cv2.destroyAllWindows() # 主要功能是关闭所有由 OpenCV 创建的窗口
灰度转换
import cv2
# 读取图片
image = cv2.imread("./Pictures/01_zcw_bd.png")
# 灰度转换
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 显示图片
# cv2.imshow("image", image)
cv2.imshow("gray", gray) # 从 BGR 颜色空间转换为灰度 GRAY 颜色空间
cv2.imwrite("./01_zcw_bd_gray.png", gray)
# 等待
cv2.waitKey()
# 释放内存
cv2.destroyAllWindows() # 主要功能是关闭所有由 OpenCV 创建的窗口
修改尺寸
import cv2
# 读取图片
image = cv2.imread("./Pictures/01_zcw_bd.png")
# 修改尺寸
resize_image = cv2.resize(image, dsize=(200, 200))
# 打印尺寸大小
print("未修改", image.shape)
print("修改", resize_image.shape)
# 显示图片
cv2.imshow("image", image)
cv2.imshow("resize", resize_image)
# 等待
cv2.waitKey()
# 释放内存
cv2.destroyAllWindows() # 主要功能是关闭所有由 OpenCV 创建的窗口
绘制矩形
import cv2
# 读取图片
image = cv2.imread("./Pictures/01_zcw_bd.png")
# 坐标
x, y, w, h = 20, 50, 80, 100
print(image.shape)
# 绘制矩形
cv2.rectangle(image, (x, y, x+w, y+h), color=(0, 0, 255), thickness=1)
# 绘制圆形
cv2.circle(image, (x+w, y+h), radius=100, color=(255, 0, 0), thickness=5)
# 显示图片
cv2.imshow("image", image)
# 等待
cv2.waitKey()
# 释放内存
cv2.destroyAllWindows() # 主要功能是关闭所有由 OpenCV 创建的窗口
人脸检测(多人脸检测)
import cv2
# 读取图像
image = cv2.imread("./Pictures/01_zcw_bd.png")
# 检测
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
face_detect = cv2.CascadeClassifier("./haarcascade_frontalface_alt2.xml")
# 缩放倍数 检测次数 0
face = face_detect.detectMultiScale(gray, 1.01, 5, 0, (100, 100), (200, 200))
for x, y, w, h in face:
cv2.rectangle(image, (x, y), (x+w, y+h), color=(0, 0, 255), thickness=2)
cv2.imshow("result", image)
cv2.waitKey()
cv2.destroyAllWindows()