opencv目标检测教程代码

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)

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一枚爱吃大蒜的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值