【问题标题】:cv2.putText() not working with variable parameterscv2.putText() 不使用可变参数
【发布时间】:2021-08-02 03:33:29
【问题描述】:

我有一个项目,其中有一个名为“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,我将其传递给 cv2.putText() 为一个 x 坐标,这样每当将某个字符添加到字符串“sen”时,屏幕上显示的文本就会向左移动 20px,因为每当用户按下 'd' 时,'k' 都会增加 20。

当我执行我的代码时,一切正常,就像按下 'd' 键后添加了新字符,但添加新字符时文本不会向左移动。

那么这可能是什么问题以及如何解决这个问题??

【问题讨论】:

    标签: python opencv


    【解决方案1】:

    你必须在 k 上加 20 才能将 sen 向左移动 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)
    

    【讨论】:

    • 我在实际代码中也做了同样的事情,我在这里错误地写了k = + 20,抱歉我会编辑掉它
    • 我已经在我的系统上进行了测试,它可以正常工作
    • 那么我的系统会出现什么问题呢?
    • 我不确定,但您可以在显示之前调试您的 k 值和 x_org 值以检查它是否按预期工作
    • 我只是在按 "d" 之前和之后打印了 k 的值,最初它是 0,然后在按 't' 之后变成 20,但之后即使在按 'd' 之后它也没有增加。
    猜你喜欢
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 2019-05-24
    • 2020-06-25
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 2018-06-09
    相关资源
    最近更新 更多