cv2.putText()不使用可变参数

2024-10-03 13:16:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个项目,其中有一个名为“sen”的字符串,当用户按下某个键时,它会随着时间而变化

代码:

sen = ""
k = 0 
cap = cv2.VideoCapture(0)
while True:
    ret, frame = cap.read()
    frame = cv2.flip(frame, 1)

    some code ...

    key = cv2.waitKey(1) & 0xFF 
    if key == ord('q'):
        break
    elif key == ord('d'):
        sen += predict(mask) # predict(mask) returns a character
        k += 20

    x_org = 300-k 
    frame = cv2.putText(frame, sen, (x_org, 450), cv2.FONT_HERSHEY_SIMPLEX,1, (0, 0, 0), 1, cv2.LINE_AA)


所以基本上我要做的是,每当用户按下“d”键时,我在字符串“sen”中添加一些字符,然后我定义了x_org=300-k,我将它作为x坐标传递给cv2.putText(),这样每当一些字符被添加到字符串“sen”每当用户按下“d”时,屏幕上显示的文本将向左移动20px,因为“k”将增加20

当我执行代码时,一切正常,就像在按下“d”键后追加新字符一样,但追加新字符时文本不会向左移动

那么这里会有什么问题?如何解决这个问题


Tags: key字符串代码用户org文本mask字符
1条回答
网友
1楼 · 发布于 2024-10-03 13:16:43

你必须加上20到k才能向左移动20个像素

k=+20将始终保持在相同的位置,它将是k+=20

更新代码

import cv2
sen = ""
k = 0 
cap = cv2.VideoCapture(0)
while True:
    ret, frame = cap.read()
    frame = cv2.flip(frame, 1)

    some code ...

    key = cv2.waitKey(1) & 0xFF 
    if key == ord('q'):
        break
    elif key == ord('d'):
        sen += predict(mask) # predict(mask) returns a character
        k += 20

    x_org = 300-k 
    frame = cv2.putText(frame, sen, (x_org, 450), cv2.FONT_HERSHEY_SIMPLEX,1, (0, 0, 0), 1, cv2.LINE_AA)
    cv2.imshow('frame', frame)

相关问题 更多 >