OpenCV--Python 绘制矩形,绘制文本,获取文本大小【rectangle(),getTextSize(),putText()】

    技术2022-08-17  76

    介绍三个函数:rectangle(),getTextSize(),putText()

    1. 函数介绍

    cv2.rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)

    参数解释img要绘制的图像pt1矩形的左上角坐标 ( x m i n , y m i n ) (x_{min}, y_{min}) (xmin,ymin)pt2矩形的右下角坐标 ( x m a x , y m a x ) (x_{max},y_{max}) (xmax,ymax)color矩形边框或者填充的颜色/亮度thickness矩形边框的粗细。负值表示使用 color 填充矩形lineType矩形边框的线型shift坐标中的小数位数

    retval, baseLine = cv2.getTextSize(text, fontFace, fontScale, thickness)

    计算文本的宽和高

    参数解释text要计算的文本fonFace要使用的字体fontScale乘以特定字体基本大小的比例因子thickness文本的线的粗细retval返回值,元组,字体的宽高 (width, height)baseLine相对于最底端文本的 y 坐标,文本的高是从baseLine到文本最顶端

    putText(img, text, org, fontFace, fontScale, color, thickness=None, lineType=None, bottomLeftOrigin=None)

    在图片上写文本,部分参数同上

    参数解释org文本的左下角坐标 ( x m i n , y m a x ) (x_{min}, y_{max}) (xmin,ymax)bottomLeftOriginTrue时,图像原点为左下角;否则, 图像远点为左上角(默认)

    2. 函数示例

    使用这三个函数在图像上绘制矩形框以及矩形框的文本

    # -*- coding: utf-8 -*- import numpy as np import cv2 as cv image = cv.imread('test.jpg') pt1, pt2 = (423, 103), (531, 358) text = 'Man 0.9' fontFace = cv.FONT_HERSHEY_COMPLEX_SMALL fontScale = 1 thickness = 1 # 绘制矩形框 cv.rectangle(image, pt1, pt2, thickness=2, color=(0, 255, 0)) # 计算文本的宽高,baseLine retval, baseLine = cv.getTextSize(text,fontFace=fontFace,fontScale=fontScale, thickness=thickness) # 计算覆盖文本的矩形框坐标 topleft = (pt1[0], pt1[1] - retval[1]) bottomright = (topleft[0] + retval[0], topleft[1] + retval[1]) cv.rectangle(image, (topleft[0], topleft[1] - baseLine), bottomright,thickness=-1, color=(0, 255, 0)) # 绘制文本 cv.putText(image, text, (pt1[0], pt1[1]-baseLine), fontScale=fontScale,fontFace=fontFace, thickness=thickness, color=(0,0,0)) cv.imwrite('test_.jpg', image)

    Processed: 0.022, SQL: 9