你已经知道x1,x2,y1,y2标识框的位置
conf表示置信度,cls表示类别,现在把这些结果可视化
用cv2.rectangle()画框
cv2.rectangle(图像,左上角,右下角,颜色,线宽)
例:cv2.rectangle(
image, 在哪张图片上画
(50,100)
(400,300)
(0,255,0)
2
)
再把类别和置信度写在框上
cv2.putText(
image, 在哪个图片上写
label, 写什么
(x1,y1-10) 从哪里开始写
cv2.FONT_HERSHEY_SIMPLEX, 字体
0.6, 字体大小
(0, 255, 0), 颜色
2 线宽
)
你可以读这种真实的代码了:
import cv2
from ultralytics import YOLO
model = YOLO("best.pt")
image = cv2.imread("test.jpg")
results = model(image)
result = results[0]
for box in result.boxes:
x1, y1, x2, y2 = map(int, box.xyxy[0])
confidence = float(box.conf[0])
class_id = int(box.cls[0])
class_name = result.names[class_id]
label = f"{class_name} {confidence:.2f}"
cv2.rectangle(
image,
(x1, y1),
(x2, y2),
(0, 255, 0),
2
)
cv2.putText(
image,
label,
(x1, y1 - 10),
cv2.FONT_HERSHEY_SIMPLEX,
0.6,
(0, 255, 0),
2
)
cv2.imshow("result", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
接下来把它接进摄像头
while True:
ret, frame = cap.read()
if not ret:
break
results = model(frame)
result = results[0]
for box in result.boxes:
# 解析
# 画框
cv2.imshow("video", frame)