Introduisez trois fonctions: rectangle (), getTextSize (), putText ()
1. Présentation des fonctions
cv2.rectangle (img, pt1, pt2, couleur, épaisseur = Aucun, lineType = Aucun, décalage = Aucun)
paramètre | Explication |
---|---|
img | L'image à dessiner |
pt1 | Les coordonnées du coin supérieur gauche du rectangle (xmin, ymin) (x_ (min), y_ (min))( xm je n,etm je n) |
pt2 | Les coordonnées du coin inférieur droit du rectangle (xmax, ymax) (x_ (max), y_ (max))( xm a x,etm a x) |
Couleur | La couleur / luminosité de la bordure rectangulaire ou du remplissage |
épaisseur | L'épaisseur de la bordure du rectangle. La valeur négative signifie remplir le rectangle de couleur |
type de ligne | Style de ligne de bordure rectangulaire |
décalage | Nombre de décimales en coordonnées |
retval, baseLine = cv2.getTextSize (texte, fontFace, fontScale, épaisseur)
Calculer la largeur et la hauteur du texte
paramètre | Explication |
---|---|
texte | Le texte à calculer |
fonFace | Police à utiliser |
fontScale | Multipliez le facteur d'échelle par la taille de base d'une police spécifique |
épaisseur | L'épaisseur de la ligne de texte |
retval | Valeur de retour, tuple, largeur et hauteur de la police (largeur, hauteur) |
baseLine | Par rapport à la coordonnée y du texte du bas, la hauteur du texte va de baseLine au haut du texte |
Écrivez du texte sur l'image, certains paramètres sont les mêmes que ci-dessus
paramètre | Explication |
---|---|
org | Les coordonnées du coin inférieur gauche du texte (xmin, ymax) (x_ (min), y_ (max))( xm je n,etm a x) |
bottomLeftOrigin | Lorsque True, l'origine de l'image est le coin inférieur gauche; sinon, le point le plus éloigné de l'image est le coin supérieur gauche (par défaut) |
2. Exemple de fonction
Utilisez ces trois fonctions pour dessiner une zone rectangulaire et une zone de texte rectangulaire sur l'image
# -*- 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)