import cv2 import numpy as np import matplotlib.pyplot as plt def staticphoto(): # 定义CascadeClassifier face_cascade = cv2.CascadeClassifier(r'C:\Users\caesar\anaconda3\envs\opencv\Lib\site-packages\cv2\data' r'\haarcascade_frontalface_default.xml') img = cv2.imread('img1.png') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.1, 5, cv2.CASCADE_SCALE_IMAGE, (50,50), (100,100)) for (x, y, w, h) in faces: cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2) 该函数如何在画框的时候进行框的个数的计数
时间: 2023-12-06 15:02:03 浏览: 223
要在画人脸框的同时进行框的个数的计数,可以在绘制每个人脸框时,给计数器加1。可以在绘制框的循环外先初始化计数器,然后在绘制每个框时,给计数器加1,如下所示:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
def staticphoto():
# 定义CascadeClassifier
face_cascade = cv2.CascadeClassifier(r'C:\Users\caesar\anaconda3\envs\opencv\Lib\site-packages\cv2\data'
r'\haarcascade_frontalface_default.xml')
img = cv2.imread('img1.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.1, 5, cv2.CASCADE_SCALE_IMAGE, (50,50), (100,100))
# 初始化计数器
count = 0
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2)
# 给计数器加1
count += 1
# 在图像上绘制框的个数
count_text = str(count) if count < 10 else '10+'
cv2.putText(img, count_text, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), thickness=2)
# 显示结果图像
cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在循环外初始化计数器`count`为0,然后在循环中每绘制一个框,就将计数器加1。最后在图像上绘制框的个数,如果框的个数小于10,就直接显示数字,否则显示'10+'表示超过10个框。
阅读全文