2017-06-18 66 views
0

我想在图像上写实时时钟。我有使用while循环和cv2.putText()命令的简单运行代码。但是这个代码的问题是我正在覆盖时间值的数字。 任何人都可以帮助我。帮助提前感谢。实时时钟写在图像上使用python opencv

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

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()