我有一个像这样的字符串列表
['standUp', 'front', 'lookU', 'lookF', 'lookDF', 'HandOnHipR']
Run Code Online (Sandbox Code Playgroud)
我想以以下方式在我的视频上打印它:
['standUp',
'front',
'lookU',
'lookF',
'lookDF',
'HandOnHipR']
Run Code Online (Sandbox Code Playgroud)
我试过这个:
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)
Run Code Online (Sandbox Code Playgroud)
标签是顶部提到的列表列表。我org对putText().
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)
Run Code Online (Sandbox Code Playgroud)
该org参数用于选择图像中的文本的位置和文本的左下角的点放org。如果您希望文本更靠右,则增加 x 值,如果希望它更低,则增加 y 值。所以每一行都会更低,因为你用offset*idx.
正如您所拥有的那样,第二个参数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()
Run Code Online (Sandbox Code Playgroud)
如果您想像上面显示的那样使用括号和标点符号,您可以手动打印它们。第一个和最后一个元素需要单独打印:
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)
Run Code Online (Sandbox Code Playgroud)
否则,您可以更改元素以在其中实际包含标点符号。