cv2.putText(frame, “FPS:“+str(fps), (5, 50), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)

今天给大家分享一个简单快速在cv2的可视化窗口生成文字的方法,只需要一行代码即可实现,简单快捷。需要你们的点赞关注支持,老样子,代码以开源。

下面就以最近在做的基于姿势估计的人员摔倒为例,给大家展示一下。

首先大家先看效果图:

 基于姿势估计的检测方法,大家可以自行阅读我另一篇博客,这里主要介绍如何在cv2调出的窗口界面添加文字。在

cv2.imshow()

后面调用cv2内置的cv2.puttext()函数,官方的文档如下所示:

def putText(img, text, org, fontFace, fontScale, color, thickness=None, lineType=None, bottomLeftOrigin=None): # real signature unknown; restored from __doc__
    """
    putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]]) -> img
    .   @brief Draws a text string.
    .   
    .   The function cv::putText renders the specified text string in the image. Symbols that cannot be rendered
    .   using the specified font are replaced by question marks. See #getTextSize for a text rendering code
    .   example.
    .   
    .   @param img Image.
    .   @param text Text string to be drawn.
    .   @param org Bottom-left corner of the text string in the image.
    .   @param fontFace Font type, see #HersheyFonts.
    .   @param fontScale Font scale factor that is multiplied by the font-specific base size.
    .   @param color Text color.
    .   @param thickness Thickness of the lines used to draw a text.
    .   @param lineType Line type. See #LineTypes
    .   @param bottomLeftOrigin When true, the image data origin is at the bottom-left corner. Otherwise,
    .   it is at the top-left corner.
    """
    pass

 使用方法参数举例如下:

cv2.putText(frame, "FPS:"+str(fps), (5, 50), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)

注意一点:这个函数的第二个位置默认传入的是字符串类型,要注意传入的数据类型匹配或者强制转换成String类型。完整实验代码示例如下:

import cv2
import time
import mediapipe as mp
from tqdm import tqdm
# 导入solution
mp_pose = mp.solutions.pose
mp_drawing = mp.solutions.drawing_utils
pose = mp_pose.Pose(static_image_mode=False,
            #    model_complexity=1,
                    smooth_landmarks=True,
           #        enable_segmentation=True,
                    min_detection_confidence=0.7,
                    min_tracking_confidence=0.7)
while cap.isOpened():
    # 获取画面
    success, frame = cap.read()

    if not success:
        print('Error')
        break

    ## !!!处理帧函数
    start=time.time()
    frame = process_frame(frame)
    end=time.time()
    fps=int(1/(end-start))

    # 图片 添加的文字 位置 字体 字体大小 字体颜色 字体粗细
    cv2.putText(frame, "FPS:"+str(fps), (5, 50), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)
    # 展示处理后的三通道图像
    cv2.imshow('Posture Recognition', frame)
    if cv2.waitKey(1) in [ord('q'), 27]:
        break
cap.release()
cv2.destroyAllWindows()

猜你喜欢

转载自blog.csdn.net/m0_58508552/article/details/125890362