Làm mờ đối tượng bằng cách sử dụng Ultralytics YOLOv8 🚀
Object Blurring là gì?
Làm mờ đối tượng với Ultralytics YOLOv8 Liên quan đến việc áp dụng hiệu ứng làm mờ cho các đối tượng được phát hiện cụ thể trong hình ảnh hoặc video. Điều này có thể đạt được bằng cách sử dụng YOLOv8 Mô hình hóa khả năng để xác định và thao tác các đối tượng trong một cảnh nhất định.
Ưu điểm của Object Blurring?
- Bảo vệ quyền riêng tư: Làm mờ đối tượng là một công cụ hiệu quả để bảo vệ quyền riêng tư bằng cách che giấu thông tin nhạy cảm hoặc nhận dạng cá nhân trong hình ảnh hoặc video.
- Tập trung chọn lọc: YOLOv8 cho phép làm mờ có chọn lọc, cho phép người dùng nhắm mục tiêu các đối tượng cụ thể, đảm bảo cân bằng giữa quyền riêng tư và lưu giữ thông tin hình ảnh có liên quan.
- Xử lý thời gian thực: YOLOv8Hiệu quả của nó cho phép làm mờ đối tượng trong thời gian thực, làm cho nó phù hợp với các ứng dụng yêu cầu cải tiến quyền riêng tư nhanh chóng trong môi trường động.
Làm mờ đối tượng bằng cách sử dụng YOLOv8 Ví dụ
from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors
import cv2
model = YOLO("yolov8n.pt")
names = model.names
cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
# Blur ratio
blur_ratio = 50
# Video writer
video_writer = cv2.VideoWriter("object_blurring_output.avi",
cv2.VideoWriter_fourcc(*'mp4v'),
fps, (w, h))
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
results = model.predict(im0, show=False)
boxes = results[0].boxes.xyxy.cpu().tolist()
clss = results[0].boxes.cls.cpu().tolist()
annotator = Annotator(im0, line_width=2, example=names)
if boxes is not None:
for box, cls in zip(boxes, clss):
annotator.box_label(box, color=colors(int(cls), True), label=names[int(cls)])
obj = im0[int(box[1]):int(box[3]), int(box[0]):int(box[2])]
blur_obj = cv2.blur(obj, (blur_ratio, blur_ratio))
im0[int(box[1]):int(box[3]), int(box[0]):int(box[2])] = blur_obj
cv2.imshow("ultralytics", im0)
video_writer.write(im0)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
video_writer.release()
cv2.destroyAllWindows()
Lập luận model.predict
Tên | Kiểu | Mặc định | Sự miêu tả |
---|---|---|---|
source |
str |
'ultralytics/assets' |
Thư mục nguồn cho hình ảnh hoặc video |
conf |
float |
0.25 |
Ngưỡng tin cậy đối tượng để phát hiện |
iou |
float |
0.7 |
giao điểm trên ngưỡng hợp nhất (IoU) cho NMS |
imgsz |
int or tuple |
640 |
Kích thước hình ảnh dưới dạng vô hướng hoặc danh sách (h, w), tức là (640, 480) |
half |
bool |
False |
sử dụng độ chính xác một nửa (FP16) |
device |
None or str |
None |
thiết bị để chạy, tức là thiết bị cuda = 0/1/2/3 hoặc thiết bị = CPU |
max_det |
int |
300 |
Số lần phát hiện tối đa trên mỗi hình ảnh |
vid_stride |
bool |
False |
Sải bước tốc độ khung hình video |
stream_buffer |
bool |
False |
đệm tất cả các khung hình phát trực tuyến (True) hoặc trả về khung hình gần đây nhất (False) |
visualize |
bool |
False |
Trực quan hóa các tính năng của mô hình |
augment |
bool |
False |
Áp dụng tăng cường hình ảnh cho các nguồn dự đoán |
agnostic_nms |
bool |
False |
NMS bất khả tri lớp |
classes |
list[int] |
None |
Lọc kết quả theo lớp, tức là lớp = 0 hoặc lớp = [0,2,3] |
retina_masks |
bool |
False |
Sử dụng mặt nạ phân đoạn có độ phân giải cao |
embed |
list[int] |
None |
Trả về các vectơ / nhúng tính năng từ các lớp đã cho |