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

介绍三个函数: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)

在这里插入图片描述

OpenCV是一款非常强大的计算机视觉库,其中包含了很多功能强大的图像处理和计算机视觉算法。而在这个系列的第三篇文章中,我们将重点介绍如何在OpenCV绘制图形和文本OpenCV绘制图形的函数包括cv2.line(直线),cv2.rectangle矩形),cv2.circle(圆),cv2.ellipse(椭圆)和cv2.putText文本)。这些函数的使用非常简单,只需要指定图像,开始点和结束点(或中心点和半径),颜色和线宽即可。 例如,我们可以使用cv2.rectangle函数在图像上绘制一个矩形: ``` import cv2 import numpy as np img = np.zeros((512,512,3), np.uint8) # 创建一个黑色的图像 cv2.rectangle(img,(384,0),(510,128),(0,255,0),3) # 绘制矩形 cv2.imshow("image",img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这个例子中,我们首先创建了一个512x512的黑色图像,然后使用cv2.rectangle函数在图像上绘制了一个矩形,并将其显示出来。在这里,矩形的左上角坐标是(384,0),右下角坐标是(510,128),颜色是绿色(0,255,0),线宽为3。 除了绘制图形,我们也可以使用cv2.putText函数在图像上绘制文本。这个函数的使用也非常简单,只需要指定图像,文本内容,位置,字体,字体大小和颜色即可。 例如,我们可以使用cv2.putText函数在图像上写入一个“Hello World!”的文本: ``` import cv2 import numpy as np img = np.zeros((512,512,3), np.uint8) # 创建一个黑色的图像 font = cv2.FONT_HERSHEY_SIMPLEX # 设置字体 cv2.putText(img,'Hello World!',(10,500), font, 1,(255,255,255),2,cv2.LINE_AA) # 绘制文本 cv2.imshow("image",img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这个例子中,我们使用cv2.putText函数在左下角绘制了一个“Hello World!”的文本,并将其显示出来。在这里,我们首先选取了字体类型为cv2.FONT_HERSHEY_SIMPLEX,然后指定了文本的位置(10,500),字体大小为1,颜色为白色(255,255,255),线宽为2,并且使用了cv2.LINE_AA参数,以实现更好的文本渲染效果。 综上所述,OpenCV中可以很方便地对图像进行绘制文本处理,这对于图像处理和计算机视觉应用来说是非常重要的一步。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CharlesWu123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值