我有一个这样的字符串列表
['standUp',
'front',
'lookU',
'lookF',
'lookDF',
'HandOnHipR']
我想以以下方式在视频上打印它:
offset = 1
x,y = 5,400
for idx,list in enumerate(lbls):
cv2.putText(frame, str(lbls), (x,y+offset*idx), font, 1, (0, 0, 255), 1)
我已经尝试过了:
{{1}}
标签是顶部提到的列表的列表。我对putText()中的org参数感到困惑。我将不胜感激。谢谢
答案 0 :(得分:2)
cv2.putText(img, text, (org), font, fontScale, color, thickness, linetype)
img :您的图片
文本:要在图像上打印的文本字符串
org :图像中文本字符串的左下角(x,y)
字体:字体类型
fontScale :字体比例
颜色:文本颜色(B,G,R)
厚度:文本行粗细
lineType :线型(8)
import cv2
lbls = ['standUp', 'front', 'lookU', 'lookF', 'lookDF', 'HandOnHipR']
img = cv2.imread("road.jpg")
h,w,c = img.shape
offset = 0
font = cv2.FONT_HERSHEY_SIMPLEX
for itr, word in enumerate(lbls):
offset += int(h / len(lbls)) - 10
cv2.putText(img, word, (20, offset), font, 1, (0, 255, 0), 3)
cv2.imwrite("road_OUT.jpg", img)
答案 1 :(得分:2)
使用org
参数选择文本在图像中的位置,并将文本的左下角放在点org
上。如果要使文本更靠右,则增加x值,而要使它减小,则增加y值。因此,每行都将较低,因为您正在使用offset*idx
增加y值。
如您所愿,第二个参数str(lbls)
将打印出整个数组,应将其更改为单个元素的变量,您将其命名为list
。 (但是,最好不要使用list
作为变量,因为它将替换内置函数list()
。我将使用lbl
。)
下面是打印列表中单词的示例:
import cv2
import numpy as np
import matplotlib.pyplot as plt
frame = np.ones([400,400,3])*255
lbls = ['standUp', 'front', 'lookU', 'lookF', 'lookDF', 'HandOnHipR']
offset = 35
x,y = 50,50
for idx,lbl in enumerate(lbls):
cv2.putText(frame, str(lbl), (x,y+offset*idx), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,0), 2)
plt.imshow(frame)
plt.show()
如果您想要上面显示的方括号和标点符号,可以手动打印。第一个和最后一个元素将需要分别打印:
cv2.putText(frame, '[\''+str(lbls[0])+'\',', (x,y), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,0), 2)
for idx,lbl in enumerate(lbls[1:-1]):
cv2.putText(frame, '\''+str(lbl)+'\',', (x,y+offset*(idx+1)), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,0), 2)
cv2.putText(frame, '\''+str(lbls[0])+'\']', (x,y+offset*(idx+2)), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,0), 2)
否则,您可以更改元素以实际在其中包含标点符号。