博客
关于我
OpenCV与AI深度学习 | 如何使用YOLOv9检测图片和视频中的目标
阅读量:792 次
发布时间:2023-02-23

本文共 3049 字,大约阅读时间需要 10 分钟。

YOLOv9?????????????

?????????????YOLOv8??????????????YOLOv9??????????????????????????

YOLOv9???????????????????15%?????40%??????????????

????YOLOv9???????

??????????

???????????????

pip install opencv-python ultralytics

???????

??????YOLOv9??

import cv2
from ultralytics import YOLO

????????

??YOLOv9???

model = YOLO("yolov9c.pt")

??????????????????????????????????

https://docs.ultralytics.com/de/models/yolov9/#impact-on-lightweight-models

?????????????

???????predict() ? predict_and_detect()?

def predict(chosen_model, img, classes=[], conf=0.5):
if classes:
results = chosen_model.predict(img, classes=classes, conf=conf)
else:
results = chosen_model.predict(img, conf=conf)
return results
def predict_and_detect(chosen_model, img, classes=[], conf=0.5, rectangle_thickness=2, text_thickness=1):
results = predict(chosen_model, img, classes, conf)
for result in results:
for box in result.boxes:
cv2.rectangle(img, (int(box.xyxy[0][0]), int(box.xyxy[0][1])),
(int(box.xyxy[0][2]), int(box.xyxy[0][3])),
(255, 0, 0), rectangle_thickness)
cv2.putText(img, f"{result.names[int(box.cls[0])}",
(int(box.xyxy[0][0]), int(box.xyxy[0][1]) - 10),
cv2.FONT_HERSHEY_PLAIN, 1, (255, 0, 0), text_thickness)
return img, results

predict() ?????????

  • chosen_model??????????
  • img?????????
  • classes??????????????
  • conf??????????

????????????????????????????????????????

predict_and_detect() ??? predict() ????????????????????????

????YOLOv9????????

??????????

image = cv2.imread("YourImagePath")
result_img, _ = predict_and_detect(model, image, classes=[], conf=0.5)

?????????????????????????????????????????ID?

https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco.yaml

???YOLOv9?????

???????????

video_path = r"YourVideoPath"
cap = cv2.VideoCapture(video_path)
while True:
success, img = cap.read()
if not success:
break
result_img, _ = predict_and_detect(model, img, classes=[], conf=0.5)
cv2.imshow("Image", result_img)
cv2.waitKey(1)

????????

???????????

def create_video_writer(video_cap, output_filename):
frame_width = int(video_cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(video_cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = int(video_cap.get(cv2.CAP_PROP_FPS))
fourcc = cv2.VideoWriter_fourcc(*'MP4V')
writer = cv2.VideoWriter(output_filename, fourcc, fps,
(frame_width, frame_height))
return writer
output_filename = "YourFilename"
writer = create_video_writer(cap, output_filename)
video_path = r"YourVideoPath"
cap = cv2.VideoCapture(video_path)
while True:
success, img = cap.read()
if not success:
break
result_img, _ = predict_and_detect(model, img, classes=[], conf=0.5)
writer.write(result_img)
cv2.imshow("Image", result_img)
cv2.waitKey(1)
writer.release()

YOLOv9????????????????????????????????????????????????????????????????

转载地址:http://nesfk.baihongyu.com/

你可能感兴趣的文章
Objective-C实现求最大公约数 (GCD)的算法(附完整源码)
查看>>
Objective-C实现深度优先搜索递归算法(附完整源码)
查看>>
Objective-C实现牛顿下山法(附完整源码)
查看>>
Objective-C实现牛顿插值法(附完整源码)
查看>>
Objective-C实现牛顿法算法(附完整源码)
查看>>
Objective-C实现状态模式(附完整源码)
查看>>
Objective-C实现狄克斯特拉算法(附完整源码)
查看>>
Objective-C实现生成正态分布数据(附完整源码)
查看>>
Objective-C实现用半正弦公式计算两个坐标之间的距离算法 (附完整源码)
查看>>
Objective-C实现电子词典(附完整源码)
查看>>
Objective-C实现离散傅里叶变换(附完整源码)
查看>>
Objective-C实现移位密码加解密(附完整源码)
查看>>
Objective-C实现程序暂停(附完整源码)
查看>>
Objective-C实现程序自动更新(附完整源码)
查看>>
Objective-C实现米到英尺的转换算法(附完整源码)
查看>>
Objective-C实现粒子群算法(附完整源码)
查看>>
Objective-C实现给定一个数字数组,返回最大乘积数组中的 3 个数字算法(附完整源码)
查看>>
Objective-C实现维吉尼亚密码加解密算法(附完整源码)
查看>>
Objective-C实现维吉尼亚密码加解密算法(附完整源码)
查看>>
Objective-C实现缓冲区(附完整源码)
查看>>