import numpy as np
import cv2
import os
import sys
import argparse
# LOADING THE IMAGE
parser = argparse.ArgumentParser(description='face detection')
parser.add_argument('-name', '-n', type=str, default='Dartboard/dart2.jpg')
args = parser.parse_args()
cascade_name = "Dartboardcascade/cascade.xml"
def detectAndDisplay(frame):
frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
frame_gray = cv2.equalizeHist(frame_gray)
model = cv2.CascadeClassifier(cascade_name)
if not model.load(cascade_name):
print('--(!)Error loading cascade model')
exit(0)
faces = model.detectMultiScale(frame_gray, scaleFactor=1.1, minNeighbors=1, flags=0, minSize=(10,10), maxSize=(300,300))
print(len(faces))
for i in range(0, len(faces)):
start_point = (faces[i][0], faces[i][1])
end_point = (faces[i][0] + faces[i][2], faces[i][1] + faces[i][3])
colour = (0, 255, 0)
thickness = 2
frame = cv2.rectangle(frame, start_point, end_point, colour, thickness)
return faces
def save_detections_to_file(faces):
with open('detections.txt', 'a') as f: # 使用追加模式打开文件
for face in faces:
line = f"{args.name}, {face[0]}, {face[1]}, {face[2]}, {face[3]}\n"
f.write(line)
imageName = args.name
if (not os.path.isfile(imageName)) or (not os.path.isfile(cascade_name)):
print('No such file')
sys.exit(1)
frame = cv2.imread(imageName, 1)
if not (type(frame) is np.ndarray):
print('Not image data')
sys.exit(1)
detected_faces = detectAndDisplay(frame)
cv2.imwrite("detected.jpg", frame)
save_detections_to_file(detected_faces)
opencv目标检测教程代码
猜你喜欢
转载自blog.csdn.net/qq_38735017/article/details/134687117
今日推荐
周排行