ich habe ein Programm, welches Überblendungen auf ein Livestream (Livebild) einer Kamera projiziert. Die EXE wurde mit cx_freeze erstellt.
Das Programm (Livestream) stürzt nach einigen wenigen Minuten ohne Einwirkungen ab. Da es eine EXE ist kann ich die Fehlerursache/meldung nicht finden. Gibt es eine Möglichkeit von debugging oder logging einer python EXE? Kann ich das innerhalb meines Codes machen d.h. er schreibt automatisch eine Log-Datei wenn es abstürzt mit Fehlermeldung/Ursache?
Das Programm läuft fehlerfrei auf meinem Laptop mit internal Webcam. Wenn ich es als EXE mache mit externer Webcam dann stürzt es nach einigen Minuten ab. Hier ein Code Auschnitt, welches das Thema Livestream behandelt:
Code: Alles auswählen
def cap_img(self, cap):
ret, img = cap.read()
img = cv2.flip(img,1)#flip cam
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB).copy()
height, width, channel = img.shape
step = channel * width
# QImage::copy()
img = QImage(img.data, width, height, step, QImage.Format_RGB888).copy()
if height != HEIGHT and width != WIDTH:
img = img.scaled(WIDTH, HEIGHT)
return img
def snap_img(self, cap):
ret, img = cap.read()
img = cv2.flip(img,1)#flip cam
self.snap_cv = img.copy()
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
height, width, channel = img.shape
step = channel * width
self.snap = QImage(img.data, width, height, step, QImage.Format_RGB888).copy()
if height != HEIGHT and width != WIDTH:
self.snap = self.snap.scaled(WIDTH, HEIGHT)
# Zeige Livestream
def livestream_overlays(self):
super().__init__()
self.overlay_base()
# Rote linien als overlays
if self.state == 1 or self.state == 2:
self.overlay_red()
elif self.state == 3:
self.overlay_blue()
# Grüne linien als overlays (L-Taste)
if self.lvalue:
self.overlay_green()
# Zeige Livestream mit Overlays
if self.spsn == True:
img = self.img.scaled(int(w/2), int(h))
self.img2 = self.img2.scaled(int(w/2), int(h))
if self.state_cams == True:
self.show_cam(self.img2,2)
self.show_cam(img,3)
else:
self.show_cam(self.img2,3)
self.show_cam(img,2)
else:
img = self.img.scaled(w, h)
self.show_cam(img,1)
def insertShape(self, img1, lines, linewidth, color):
img = img1.copy()
painter = QPainter()
pixmap = QPixmap(img)
painter.begin(img)
painter.setRenderHint(QPainter.Antialiasing)
painter.drawPixmap(img.rect(), pixmap)
painter.setPen(QPen(colors[color], linewidth))
for line in lines:
painter.drawLine(line[0],line[1],line[2],line[3])
return img
def overlay_base(self):
if self.pop != None:
if self.pop.chns != None:
self.ns = self.pop.chns
self.pop = None
img = self.cap_img(self.cap).copy()
Vielen Dank!