我正在尝试在图像上写实时时钟。我有使用while循环和cv2.putText()命令的简单运行代码。但是这段代码的问题在于我正在覆盖时间值的数字。 任何人都可以帮助我。提前帮助升值。
import cv2
import time
I = cv2.imread('image.png')
I = cv2.resize(I,(640,480))
I1 = I.copy()
font1 = cv2.FONT_HERSHEY_SIMPLEX
while 1:
I1 = I
t = time.strftime('%H:%M:%S')
I1 = cv2.putText(I1,t,(0,480),font1,2,(255,255,255),5)
cv2.imshow('frame',I1)
k = cv2.waitKey(10)
if k == 27:
break
cv2.destroyAllWindows()
答案 0 :(得分:0)
OpenCV cv2.putText()
就地更改输入图像。为了防止出现这种情况,您可以尝试将输入图像作为copy()
传递,这样更改就不会反映在原始图像本身中。
while 1:
I1 = I
t = time.strftime('%H:%M:%S')
I1 = cv2.putText(I1.copy(),t,(50,50),font1,2,(255,0, 0),5)
cv2.imshow('frame',I1)
k = cv2.waitKey(10)
if k == 27:
break
但是,脚本中有一些冗余步骤,可以在不影响输出的情况下将其删除:
import cv2
import time
I = cv2.imread('image.png')
font1 = cv2.FONT_HERSHEY_SIMPLEX
while 1:
t = time.strftime('%H:%M:%S')
I1 = cv2.putText(I.copy(),t,(50,50),font1,2,(255,0, 0),5)
cv2.imshow('frame',I1)
k = cv2.waitKey(10)
if k == 27:
break
cv2.destroyAllWindows()