网站建设做什么网站可以跳转备案吗
- 作者: 五速梦信息网
- 时间: 2026年03月21日 07:38
当前位置: 首页 > news >正文
网站建设做什么,网站可以跳转备案吗,建筑业务网站建设,路由器 wordpress目录 代码分析
- YOLO 模型加载
- 视频加载与初始化
- 视频帧处理
- 物体检测
- 处理检测结果
- 边界框和类别显示
- 帧率#xff08;FPS#xff09;计算
- 结果显示与退出
- 资源释放 整体代码 效果展示 总结 代码分析 这段代码使用 YOLO#xff08… 目录 代码分析
- YOLO 模型加载
- 视频加载与初始化
- 视频帧处理
- 物体检测
- 处理检测结果
- 边界框和类别显示
- 帧率FPS计算
- 结果显示与退出
- 资源释放 整体代码 效果展示 总结 代码分析 这段代码使用 YOLOYou Only Look Once模型进行视频中的物体检测并通过 OpenCV 显示检测结果。以下是代码的详细分析
- YOLO 模型加载 net cv2.dnn.readNet(../../needFiles/yolov3.weights, ../../needFiles/yolov3.cfg)这行代码加载了预先训练的 YOLOv3 模型的权重文件yolov3.weights和配置文件yolov3.cfg。YOLOv3 是一个实时物体检测模型能够检测多个类别的物体。 layer_names net.getLayerNames() output_layers [layer_names[i - 1] for i in net.getUnconnectedOutLayers()]getLayerNames() 获取网络的所有层名称。getUnconnectedOutLayers() 返回网络输出层的索引通常是 YOLO 的 3 个输出层通过索引列表获取这些输出层的名称用于后面的 forward 方法中。
- 视频加载与初始化 video_path D:/Dji/DJIneo.mp4 cap cv2.VideoCapture(video_path)使用 cv2.VideoCapture 来加载视频文件。如果视频路径正确cap 将用于逐帧读取视频。 resize_scale 0.3定义缩放比例为 0.3用于后续缩小显示尺寸以减少计算量。 prev_time 0初始化变量 prev_time用于计算帧率FPSFrames Per Second。
- 视频帧处理 while True:ret, frame cap.read()if not ret:break逐帧读取视频内容cap.read() 返回两个值ret 是布尔值表示是否成功读取frame 是当前帧图像。如果无法读取如视频结束则退出循环。 frame_resized cv2.resize(frame, (0, 0), fxresize_scale, fyresize_scale)当前帧 frame 被缩小到原来的 30%通过 resize_scale用于加快后续处理。
- 物体检测 blob cv2.dnn.blobFromImage(frame_resized, 0.00392, (416, 416), (0, 0, 0), True, cropFalse) net.setInput(blob) outs net.forward(output_layers)YOLO 模型需要特定格式的输入。blobFromImage 将图像转换为 YOLO 需要的 4D blob归一化比例为 0.00392图像大小调整为 (416, 416)。net.setInput(blob) 将处理后的 blob 输入到网络net.forward(output_layers) 得到检测结果。
- 处理检测结果 class_ids [] confidences [] boxes []初始化三个列表class_ids 用于存储检测到的物体类别confidences 存储每个物体的置信度boxes 存储边界框的坐标。 for out in outs:for detection in out:scores detection[5:]class_id np.argmax(scores)confidence scores[class_id]if confidence 0.5:…遍历 YOLO 输出的 outs每个 detection 包含检测到的一个物体的信息。检测结果中的前 4 个值是物体的位置信息后面的值是类别的置信度。np.argmax(scores) 找出置信度最高的类别confidence 存储该类别的置信度。如果置信度超过 0.5则认为该物体被成功检测。
- 边界框和类别显示 indexes cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4) for i in indexes.flatten():x, y, w, h boxes[i]label str(class_ids[i])cv2.rectangle(frame_resized, (x, y), (x w, y h), (0, 255, 0), 2)cv2.putText(frame_resized, label, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)使用非极大值抑制NMSNon-Maximum Suppression去除重叠的边界框减少冗余检测结果。然后遍历保留下来的边界框在图像上绘制矩形框和类别标签。
- 帧率FPS计算 current_time time.time() fps 1 / (current_time - prev_time) prev_time current_time cv2.putText(frame_resized, fFPS: {int(fps)}, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 2)通过计算两帧之间的时间差实时计算并显示 FPS以评估模型的运行效率。
- 结果显示与退出 cv2.imshow(Object Detection, frame_resized) if cv2.waitKey(1) 0xFF ord(q):break使用 imshow 显示检测结果按 q 键退出循环。
- 资源释放 cap.release() cv2.destroyAllWindows()释放视频资源并关闭所有窗口。 整体代码 import cv2 import numpy as np import time# 加载 YOLO 模型 net cv2.dnn.readNet(../../needFiles/yolov3.weights, ../../needFiles/yolov3.cfg) layer_names net.getLayerNames() output_layers [layer_names[i - 1] for i in net.getUnconnectedOutLayers()] # 修正索引问题# 加载视频 video_path D:/Dji/DJIneo.mp4 cap cv2.VideoCapture(video_path)# 缩小显示尺寸 resize_scale 0.3# 初始化时间和帧计数器 prev_time 0# 处理视频的每一帧 while True:ret, frame cap.read()if not ret:break# 缩小当前帧frame_resized cv2.resize(frame, (0, 0), fxresize_scale, fyresize_scale)# 检测对象blob cv2.dnn.blobFromImage(frame_resized, 0.00392, (416, 416), (0, 0, 0), True, cropFalse)net.setInput(blob)outs net.forward(output_layers)# 处理检测结果class_ids []confidences []boxes []for out in outs:for detection in out:scores detection[5:]class_id np.argmax(scores)confidence scores[class_id]if confidence 0.5: # 置信度阈值center_x int(detection[0] * frame_resized.shape[1])center_y int(detection[1] * frame_resized.shape[0])w int(detection[2] * frame_resized.shape[1])h int(detection[3] * frame_resized.shape[0])x int(center_x - w / 2)y int(center_y - h / 2)boxes.append([x, y, w, h])confidences.append(float(confidence))class_ids.append(class_id)# 应用非极大抑制来去除冗余框indexes cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4)for i in indexes.flatten(): # 展平索引x, y, w, h boxes[i]label str(class_ids[i])cv2.rectangle(frame_resized, (x, y), (x w, y h), (0, 255, 0), 2)cv2.putText(frame_resized, label, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)# 计算 FPScurrent_time time.time()fps 1 / (current_time - prev_time)prev_time current_time# 显示 FPScv2.putText(frame_resized, fFPS: {int(fps)}, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 2)# 显示结果cv2.imshow(Object Detection, frame_resized)# 按 q 键退出if cv2.waitKey(1) 0xFF ord(q):break# 释放资源 cap.release() cv2.destroyAllWindows()效果展示 YOLOV3实现目标识别 总结 这呃不总结了
- 上一篇: 网站建设做什么费用网站建设合同图片
- 下一篇: 网站建设做一个要多久南宁青秀万达网站建设
相关文章
-
网站建设做什么费用网站建设合同图片
网站建设做什么费用网站建设合同图片
- 技术栈
- 2026年03月21日
-
网站建设做软件开发吗自己怎么做直播网站
网站建设做软件开发吗自己怎么做直播网站
- 技术栈
- 2026年03月21日
-
网站建设做哪 个会计科目17做网站联系
网站建设做哪 个会计科目17做网站联系
- 技术栈
- 2026年03月21日
-
网站建设做一个要多久南宁青秀万达网站建设
网站建设做一个要多久南宁青秀万达网站建设
- 技术栈
- 2026年03月21日
-
网站建站代理网站 地区加关键词
网站建站代理网站 地区加关键词
- 技术栈
- 2026年03月21日
-
网站建站的标准seo课程多少钱
网站建站的标准seo课程多少钱
- 技术栈
- 2026年03月21日
