cv2模块
创建窗口后设置窗口大小,设置窗口大小要使用resizeWindow
cv2.resizeWindow(winname, width, height)
参数 | 作用 |
---|---|
WINDOW_NORMAL | 用户能够调节窗口大小 |
WINDOW_AUTOSIZE | 根据图像大小显示窗口,大小固定 |
WINDOW_FREERATIO | 调整图像。不考虑其比例 |
WINDOW_KEEPRATIO | 保持图像比例 |
使用该函数创建一个窗口,代码如下
cv2.namedWindow("window", cv2.WINDOW_NORMAL)
实时检测案例:
from ultralytics import YOLO
import cv2
import numpy as np
from mss import mss
import time
# 加载训练好的模型
model = YOLO('best.pt')
# 设置屏幕捕获区域 (默认全屏)
pcwidth=600
pcheight=1600
# 创建屏幕捕获对象
sct = mss()
cv2.namedWindow("yolov11_predict_windows", cv2.WINDOW_NORMAL)
try:
while True:
start_time = time.time()
# 预测屏幕范围*
screenshot = sct.grab({
"top": 0,
"left": 0,
"width": pcwidth,
"height": pcheight
})
img = np.array(screenshot)
img = cv2.cvtColor(img, cv2.COLOR_BGRA2BGR) # 转换颜色通道
results = model.predict(img, stream=False, verbose=False)
annotated_img = results[0].plot() # 自动绘制检测结果
fps = 1 / (time.time() - start_time)
cv2.putText(annotated_img, f"FPS: {fps:.2f}", (10, 30),
cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
# 显示结果
cv2.imshow("yolov11_predict_windows", annotated_img)
cv2.resizeWindow("yolov11_predict_windows", pcwidth, img.shape[0])
# 按'q'退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
finally:
cv2.destroyAllWindows()
print("Screen detection stopped.")