2017-06-18 3 views
0

Ich versuche Echtzeituhr auf Bild zu schreiben. Ich habe einfachen laufenden Code für die Verwendung der while-Schleife und cv2.putText() -Befehl. Aber das Problem mit diesem Code ist, dass ich Nummern des Zeitwerts überschreiben. Kann mir jemand mit dem gleichen helfen. Hilfe im Voraus geschätzt.Echtzeituhr geschrieben am Bild mit 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() 

Antwort

0

OpenCV cv2.putText() Änderung das Eingangsbild an Ort und Stelle, um dieses Verhalten zu verhindern, können Sie versuchen Eingangsbild als copy() passieren, so dass die Änderungen nicht im Originalbild selbst reflektiert werden.

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 

Allerdings gibt es einige redundante Schritte in Ihrem Skript, das die Ausgabe als ohne Beeinträchtigung abgestreift werden kann:

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