物体检测实战:使用 OpenCV 进行 YOLO 对象检测(2)

本文详细说明了如何用Python中的YOLO模型进行图像和视频中的对象检测,涉及模型加载、参数设置和对象识别流程。

yolo.py:评估图像

yolo_video.py :评估视频

检测图像

===============================================================

新建文件yolo_objectdetection.py

import the necessary packages

import numpy as np

import argparse

import time

import cv2

import os

image_path=‘11.jpg’

yolo=‘yolo_coco’

confidence_t=0.5

threshold=0.3

加载训练 YOLO 模型的 COCO 类标签

labelsPath = os.path.sep.join([yolo, “coco.names”])

LABELS = open(labelsPath).read().strip().split(“\n”)

初始化一个颜色列表来表示每个类标签

np.random.seed(42)

COLORS = np.random.randint(0, 255, size=(len(LABELS), 3),

dtype=“uint8”)

YOLO 对象检测

print(“[INFO] loading YOLO from disk…”)

config_path = ‘./yolo_coco/yolov3.cfg’

weights_path = ‘./yolo_coco/yolov3.weights’

net = cv2.dnn.readNetFromDarknet(config_path, weights_path)

导入包。

定义全局参数:

  • image_path:定义图片的路径。

  • yolo:定义模型存放的路径

  • confidence_t:过滤弱检测的最小概率。

  • threshold:非最大值抑制阈值。

接下来,加载了所有的类 LABELS。然后,为每个标签分配随机颜色。

加载权重文件。

加载我们的输入图像并获取其空间维度

image = cv2.imread(image_path)

(H, W) = image.shape[:2]

从输入图像构建一个blob,然后执行一个前向传播

通过 YOLO 对象检测器,输出边界框和相关概率

blob = cv2.dnn.blobFromImage(image, 1 / 255.0, (416, 416),

swapRB=True, crop=False)

net.setInput(blob)

start = time.time()

获取网络输出层信息(所有输出层的名字),设定并前向传播

outInfo = net.getUnconnectedOutLayersNames()

得到各个输出层的、各个检测框等信息,是二维结构。

layerOutputs = net.forward(outInfo)

加载输入图像并提取其尺寸。

从 YOLO 模型取出输出层名称。

构建一个 blob(第 48 和 49 行)。

cv2.dnn.blobFromImage(image[, scalefactor[, size[, mean[, swapRB[, crop[, ddepth]]]]]])

作用:

对图像进行预处理,包括减均值,比例缩放,裁剪,交换通道等,返回一个4通道的blob(bl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值