文章目录
- 背景
- 代码
背景
由于我们在做项目的时候可能会涉及到某个指定区域进行目标检测或者人脸识别等任务,所以这篇博客是为了探究如何在传统目标检测的基础上来结合特定区域进行检测,以Opencv自带的包为例。
代码
import cv2face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)
# 定义感兴趣区域的坐标和大小
roi_x = 200
roi_y = 100
roi_width = 300
roi_height = 300while True:# 读取一帧图像ret, frame = cap.read()if not ret:print("无法读取摄像头图像")break# 获取感兴趣区域roi = frame[roi_y:roi_y+roi_height, roi_x:roi_x+roi_width]# 将感兴趣区域转换为灰度图像gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY)# 使用人脸检测器检测人脸区域faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))# 在原始图像上绘制感兴趣区域矩形cv2.rectangle(frame, (roi_x, roi_y), (roi_x+roi_width, roi_y+roi_height), (255, 0, 0), 2)# 在感兴趣区域上绘制人脸区域矩形for (x, y, w, h) in faces:cv2.rectangle(roi, (x, y), (x+w, y+h), (0, 255, 0), 2)# 在窗口中显示图像cv2.imshow("Camera", frame)if cv2.waitKey(1) == 27:breakcap.release()
cv2.destroyAllWindows()