OpenCV如何在摄像头视频画面上叠加文字?
在OpenCV实时摄像头视频中叠加文字的解决方案
嘿,其实给摄像头实时视频叠加文字和给静态图片加文字的核心逻辑完全一致——视频本质上就是一帧帧连续的图片序列!你只需要在每成功读取一帧之后、显示该帧之前,对当前帧调用cv2.putText()方法就行啦。
下面是修改后的完整脚本,我已经加入了文字叠加的逻辑,还标注了关键说明:
import cv2 import numpy as np # 创建VideoCapture对象,0代表默认摄像头 cap = cv2.VideoCapture(0) # 检查摄像头是否成功打开 if (cap.isOpened() == False): print("Error opening video stream or file") # 循环读取视频帧 while(cap.isOpened()): # 逐帧捕获 ret, frame = cap.read() if ret == True: # ------------------- 新增:给当前帧叠加文字 ------------------- # 参数说明: # frame: 要叠加文字的帧对象 # "Live Camera Text": 要显示的文字内容 # (50, 50): 文字左上角的坐标(x, y) # cv2.FONT_HERSHEY_SIMPLEX: 字体类型 # 1: 字体缩放比例 # (0, 255, 0): 文字颜色,这里是绿色(OpenCV用BGR格式,注意不是RGB) # 2: 文字线条的粗细 cv2.putText(frame, "Live Camera Text", (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) # ------------------------------------------------------------- # 显示处理后的帧 cv2.imshow('Frame', frame) # 按Q键退出循环 if cv2.waitKey(1) & 0xFF == ord('q'): break # 如果读取失败,退出循环 else: break # 释放摄像头资源 cap.release() # 关闭所有OpenCV窗口 cv2.destroyAllWindows()
几个关键注意点:
- OpenCV的颜色格式是BGR而非常见的RGB,比如要设置红色文字,得用
(0, 0, 255)而不是(255, 0, 0) - 文字坐标
(x, y)是文字左上角的位置,你可以随意调整这个值来改变文字在画面中的位置 - 字体类型、缩放比例、线条粗细这些参数都能自定义,比如换成
cv2.FONT_HERSHEY_COMPLEX字体,或者把缩放比例改成2让文字更大
内容的提问来源于stack exchange,提问作者MasterJ
相关产品推荐
相关产品推荐

