OpenCV cv2.putText实现字符串换行'\n'
生活随笔
收集整理的這篇文章主要介紹了
OpenCV cv2.putText实现字符串换行'\n'
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
OpenCV cv2.putText實現字符串換行'\n'
OpenCV顯示字符串時,可以調用cv2.putText直接進行顯示方法,但該函數是不支持換行符"\n"的
要想實現自動換行,需要自己編程計算字符寬度,下移動寬度等操作
這里提供自己實現draw_text_line()函數,可以直接支持換行符的顯示
代碼實現:
# -*-coding: utf-8 -*- """@Project: Demo@Author : panjq@E-mail : pan_jinquan@163.com@Date : 2019-12-11 19:43:34 """ import cv2def draw_text(img, point, text, drawType="custom"):''':param img::param point::param text::param drawType: custom or custom:return:'''fontScale = 0.4thickness = 5text_thickness = 1bg_color = (255, 0, 0)fontFace = cv2.FONT_HERSHEY_SIMPLEX# fontFace=cv2.FONT_HERSHEY_SIMPLEXif drawType == "custom":text_size, baseline = cv2.getTextSize(str(text), fontFace, fontScale, thickness)text_loc = (point[0], point[1] + text_size[1])cv2.rectangle(img, (text_loc[0] - 2 // 2, text_loc[1] - 2 - baseline),(text_loc[0] + text_size[0], text_loc[1] + text_size[1]), bg_color, -1)# draw score valuecv2.putText(img, str(text), (text_loc[0], text_loc[1] + baseline), fontFace, fontScale,(255, 255, 255), text_thickness, 8)elif drawType == "simple":cv2.putText(img, '%d' % (text), point, fontFace, 0.5, (255, 0, 0))return imgdef draw_text_line(img, point, text_line: str, drawType="custom"):''':param img::param point::param text::param drawType: custom or custom:return:'''fontScale = 0.4thickness = 5fontFace = cv2.FONT_HERSHEY_SIMPLEX# fontFace=cv2.FONT_HERSHEY_SIMPLEXtext_line = text_line.split("\n")# text_size, baseline = cv2.getTextSize(str(text_line), fontFace, fontScale, thickness)text_size, baseline = cv2.getTextSize(str(text_line), fontFace, fontScale, thickness)for i, text in enumerate(text_line):if text:draw_point = [point[0], point[1] + (text_size[1] + 2 + baseline) * i]img = draw_text(img, draw_point, text, drawType)return imgif __name__ == "__main__":import copyimage_path = "./data/test/test01.jpg"image = cv2.imread(image_path)point = (10, 10)text_line = "AAAA\nBBBB\nCCCC\n"image1 = draw_text(copy.copy(image), point, text_line, drawType="custom")cv2.imshow("draw_text", image1)image2 = draw_text_line(copy.copy(image), point, text_line)cv2.imshow("draw_text_line", image2)cv2.waitKey(0)cv2.waitKey(0)?
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的OpenCV cv2.putText实现字符串换行'\n'的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决TypeError: Tensor
- 下一篇: matplotlib figure转为n