The value of knowledge lies not in possession, but in share.

0%

Python--借助OpenCV在图片上显示文字及保存

为方便以后开发查阅,特记录此相关代码。
所要实现的功能:

在图片上显示文字及保存

所调用的函数

1
2
3
4
5
6
7
8
9
10
11
12
13
cv2.putText(img, text, (40, 50), cv2.FONT_HERSHEY_PLAIN, 2.0, (0, 0, 255), 2)
# putText 定义如下:
void cv::putText(
cv::Mat& img, // 待绘制的图像
const string& text, // 待绘制的文字
cv::Point origin, // 文本框的左下角
int fontFace, // 字体 (如cv::FONT_HERSHEY_PLAIN)
double fontScale, // 尺寸因子,值越大文字越大
cv::Scalar color, // 线条的颜色(RGB)
int thickness = 1, // 线条宽度
int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)
bool bottomLeftOrigin = false // true=’origin at lower left’
);
fontFace 字体类型 描述
CV_FONT_HERSHEY_SIMPLEX 正常尺寸sanserif字体
CV_FONT_HERSHEY_PLAIN 小尺寸sanserif字体
CV_FONT_HERSHEY_DUPLEX 正常尺寸sanserif, 比 CV_FONT_HERSHEY_SIMPLEX更复杂
CV_FONT_HERSHEY_COMPLEX 正常尺寸serif, 比 CV_FONT_HERSHEY_DUPLEX更复杂
CV_FONT_HERSHEY_TRIPLEX 正常尺寸serif, 比CV_FONT_HERSHEY_COMPLEX更复杂
CV_FONT_HERSHEY_COMPLEX_SMALL 小尺寸的 CV_FONT_HERSHEY_COMPLEX
CV_FONT_HERSHEY_SCRIPT_SIMPLEX 手写风格
CV_FONT_HERSHEY_SCRIPT_COMPLEX 比CV_FONT_HERSHEY_SCRIPT_SIMPLEX更复杂的风格

程序示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import cv2

img = cv2.imread('1.png')
while True:
W = 3.752
H = 4.382
L = 8.342
W = round(W, 2) # round函数将W保留两位小数
H = round(H, 2)
L = round(L, 2)
text = "W:"+str(W)+" " + "H:"+str(H) + " " + "L:"+str(L)
cv2.putText(img, text, (40, 50), cv2.FONT_HERSHEY_PLAIN, 2.0, (0, 0, 255), 2)
cv2.imshow("ori_image", img)
key = cv2.waitKey(delay=1)
if key == 27:
cv2.destroyAllWindows()
cv2.imwrite("new_img.png", img)
break

🍭支持一根棒棒糖吧!