diff --git a/.gitignore b/.gitignore index b97eea3..76e928f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,4 @@ .idea yolo runs -models/yolov8x.pt \ No newline at end of file +models/ \ No newline at end of file diff --git a/01.加载模型.py b/01.加载模型.py index 784c6fe..1df7d6d 100644 --- a/01.加载模型.py +++ b/01.加载模型.py @@ -1,5 +1,5 @@ from ultralytics import YOLO - +# 文档https://docs.ultralytics.com/zh/ # model = YOLO('models/yolov8n.pt') model = YOLO('models/yolov8x.pt') # model('./resources/01.png',show=True,save=True) diff --git a/03.图像分类.py b/03.图像分类.py index de312bb..3123f30 100644 --- a/03.图像分类.py +++ b/03.图像分类.py @@ -1,5 +1,8 @@ from ultralytics import YOLO # 加载预训练模型 -model = YOLO('models/yolov8x.pt') -model.train(data='train.yaml', epochs=200, imgsz=640, batch=32, device='cpu') +model = YOLO('models/yolov8n-cls.pt') +results = model('./resources/图像分类.png',save=True) +for result in results: + probs = result.probs + print(probs) diff --git a/04.实例分割.py b/04.实例分割.py new file mode 100644 index 0000000..862b62a --- /dev/null +++ b/04.实例分割.py @@ -0,0 +1,8 @@ +from ultralytics import YOLO + +# 加载预训练模型 +model = YOLO('models/yolov8n-seg.pt') +results = model('./resources/图像分类.png',save= True) +for result in results: + masks = result.masks + print(masks) diff --git a/05.姿态估计.py b/05.姿态估计.py new file mode 100644 index 0000000..97089a0 --- /dev/null +++ b/05.姿态估计.py @@ -0,0 +1,8 @@ +from ultralytics import YOLO + +# 加载预训练模型 +model = YOLO('models/yolo11n-pose.pt') +results = model('./resources/姿态估计',save= True) +for result in results: + keypoints = result.keypoints + print(keypoints) diff --git a/06.旋转目标检测.py b/06.旋转目标检测.py new file mode 100644 index 0000000..197373a --- /dev/null +++ b/06.旋转目标检测.py @@ -0,0 +1,8 @@ +from ultralytics import YOLO + +# 加载预训练模型 +model = YOLO('models/yolo11n-obb.pt') +results = model('./resources/图像分类.png',save= True) +for result in results: + obb = result.obb + print(obb) diff --git a/07.目标模糊处理.py b/07.目标模糊处理.py new file mode 100644 index 0000000..0c7143e --- /dev/null +++ b/07.目标模糊处理.py @@ -0,0 +1,38 @@ +import cv2 +from ultralytics import YOLO + +# 加载预训练的YOLOv8模型 +model = YOLO('models/yolo11n.pt') +# 打印模型能够识别的所有物体类别名称 +print(model.names) +# 初始化摄像头,参数1表示使用默认的第二个摄像头(如果只有一个摄像头,通常使用0) +cap = cv2.VideoCapture(1) +# 循环读取摄像头帧,直到摄像头关闭 +while cap.isOpened(): + # 读取一帧图像 + ret, frame = cap.read() + # 如果没有成功读取帧,则跳出循环 + if not ret: + break + # 使用YOLO模型对当前帧进行目标检测 + results = model.predict(frame) + # 从检测结果中提取边界框坐标(xyxy格式),并转换为列表 + # 注意:这里原代码有重复赋值的错误,已修正 + boxes = results[0].boxes.xyxy.cpu().tolist() + # 遍历所有检测到的边界框 + for box in boxes: + # 从frame中截取边界框区域的图像 + # 格式为[y1:y2, x1:x2],其中box[0]是x1, box[1]是y1, box[2]是x2, box[3]是y2 + obj = frame[int(box[1]):int(box[3]), int(box[0]):int(box[2])] + # 对截取的图像区域进行高斯模糊处理,模糊核大小为70x70 + # 然后将模糊后的图像重新赋值给原位置,实现目标模糊效果 + frame[int(box[1]):int(box[3]), int(box[0]):int(box[2])] = cv2.blur(obj, (70, 70)) + # 显示处理后的图像窗口 + cv2.imshow("YOLOv8 Inference", frame) + # 等待键盘输入1毫秒,如果按下'q'键则退出循环 + if cv2.waitKey(1) == ord('q'): + break +# 释放摄像头资源 +cap.release() +# 关闭所有OpenCV创建的窗口 +cv2.destroyAllWindows() diff --git a/94.训练模型.py b/08.训练模型.py similarity index 100% rename from 94.训练模型.py rename to 08.训练模型.py diff --git a/95.检测训练模型.py b/09.检测训练模型.py similarity index 100% rename from 95.检测训练模型.py rename to 09.检测训练模型.py diff --git a/96.检测屏幕内容.py b/10.检测屏幕内容.py similarity index 90% rename from 96.检测屏幕内容.py rename to 10.检测屏幕内容.py index 9c26452..0dec891 100644 --- a/96.检测屏幕内容.py +++ b/10.检测屏幕内容.py @@ -8,7 +8,7 @@ import numpy as np # 加载训练好的模型 # best.pt: 最佳模型,适用于生产 # last.pt: 最后一轮训练的模型,适用于继续训练 -yolo = YOLO('runs/detect/train6/weights/best.pt') +yolo = YOLO('runs/detect/train7/weights/best.pt') # 指定屏幕范围 # x,y,width,height 全屏None diff --git a/97.应用-视频马赛克.py b/11.应用-视频马赛克.py similarity index 99% rename from 97.应用-视频马赛克.py rename to 11.应用-视频马赛克.py index 1084225..af3ccff 100644 --- a/97.应用-视频马赛克.py +++ b/11.应用-视频马赛克.py @@ -1,5 +1,4 @@ import cv2 -import numpy as np from ultralytics import YOLO from moviepy import VideoFileClip # 用于处理音频(仅视频文件需要) diff --git a/98.人脸训练.py b/12.人脸训练.py similarity index 100% rename from 98.人脸训练.py rename to 12.人脸训练.py diff --git a/99.摄像头实时检测.py b/13.摄像头实时检测.py similarity index 100% rename from 99.摄像头实时检测.py rename to 13.摄像头实时检测.py diff --git a/dataset1/classes.txt b/dataset1/classes.txt deleted file mode 100644 index 5e49b80..0000000 --- a/dataset1/classes.txt +++ /dev/null @@ -1 +0,0 @@ -logo \ No newline at end of file diff --git a/dataset1/images/1.png b/dataset1/images/1.png deleted file mode 100644 index a22cfff..0000000 Binary files a/dataset1/images/1.png and /dev/null differ diff --git a/dataset1/images/2.png b/dataset1/images/2.png deleted file mode 100644 index 31077f1..0000000 Binary files a/dataset1/images/2.png and /dev/null differ diff --git a/dataset1/labels.cache b/dataset1/labels.cache deleted file mode 100644 index 493724f..0000000 Binary files a/dataset1/labels.cache and /dev/null differ diff --git a/dataset1/labels/1.txt b/dataset1/labels/1.txt deleted file mode 100644 index cd624fe..0000000 --- a/dataset1/labels/1.txt +++ /dev/null @@ -1 +0,0 @@ -0 0.267786 0.495737 0.158273 0.103739 \ No newline at end of file diff --git a/dataset1/labels/2.txt b/dataset1/labels/2.txt deleted file mode 100644 index 7ad50a6..0000000 --- a/dataset1/labels/2.txt +++ /dev/null @@ -1,2 +0,0 @@ -0 0.268585 0.198019 0.163070 0.034106 -0 0.499600 0.501421 0.001599 0.001421 \ No newline at end of file diff --git a/dataset1/val.cache b/dataset1/val.cache deleted file mode 100644 index 3aa6cee..0000000 Binary files a/dataset1/val.cache and /dev/null differ diff --git a/dataset1/val/1.png b/dataset1/val/1.png deleted file mode 100644 index a22cfff..0000000 Binary files a/dataset1/val/1.png and /dev/null differ diff --git a/dataset1/val/2.png b/dataset1/val/2.png deleted file mode 100644 index 31077f1..0000000 Binary files a/dataset1/val/2.png and /dev/null differ diff --git a/models/yolov8n.pt b/models/yolov8n.pt deleted file mode 100644 index 0db4ca4..0000000 Binary files a/models/yolov8n.pt and /dev/null differ diff --git a/output_blurred.mp4 b/output_blurred.mp4 deleted file mode 100644 index 487a334..0000000 Binary files a/output_blurred.mp4 and /dev/null differ diff --git a/requirements.txt b/requirements.txt index 70e3f51..630497f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ ultralytics~=8.3.198 opencv-python~=4.12.0.88 numpy~=2.0.2 -pyautogui \ No newline at end of file +pyautogui +moviepy \ No newline at end of file diff --git a/resources/input1.mp4 b/resources/input1.mp4 deleted file mode 100644 index f789962..0000000 Binary files a/resources/input1.mp4 and /dev/null differ diff --git a/resources/姿态估计/01.jpeg b/resources/姿态估计/01.jpeg new file mode 100644 index 0000000..d176e54 Binary files /dev/null and b/resources/姿态估计/01.jpeg differ diff --git a/resources/姿态估计/02.jpeg b/resources/姿态估计/02.jpeg new file mode 100644 index 0000000..7cbc0df Binary files /dev/null and b/resources/姿态估计/02.jpeg differ diff --git a/resources/姿态估计/03.jpeg b/resources/姿态估计/03.jpeg new file mode 100644 index 0000000..c4e735e Binary files /dev/null and b/resources/姿态估计/03.jpeg differ diff --git a/temp_blurred_no_audio.mp4 b/temp_blurred_no_audio.mp4 deleted file mode 100644 index 3a0b23f..0000000 Binary files a/temp_blurred_no_audio.mp4 and /dev/null differ