Wed 28 Aug 21:38:52 CEST 2024
This commit is contained in:
parent
e891f1b9fe
commit
8d1540f099
107
src/SimNDT/gui/generateVideoController.py
Normal file
107
src/SimNDT/gui/generateVideoController.py
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
__author__ = 'Miguel Molero'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import copy, os
|
||||||
|
|
||||||
|
from PySide.QtCore import *
|
||||||
|
from PySide.QtGui import *
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
import cv2
|
||||||
|
except:
|
||||||
|
print ("problem at importing cv2")
|
||||||
|
|
||||||
|
|
||||||
|
from SimNDT.gui.HelperMethods import sort_nicely
|
||||||
|
from SimNDT.gui.ui_generatevideo import Ui_generateVideoDialog
|
||||||
|
|
||||||
|
from SimNDT.gui.Warnings import WarningParms, DoneParms
|
||||||
|
|
||||||
|
|
||||||
|
class GenerateVideo(QDialog, Ui_generateVideoDialog):
|
||||||
|
|
||||||
|
def __init__(self, parent = None):
|
||||||
|
super(GenerateVideo, self).__init__(parent)
|
||||||
|
self.setupUi(self)
|
||||||
|
|
||||||
|
self.addImagesPushButton.pressed.connect(self.addImages)
|
||||||
|
self.videoBasenamePushButton.pressed.connect(self.videoBasename)
|
||||||
|
|
||||||
|
self.dirpath = None
|
||||||
|
self.FilenameVideo = None
|
||||||
|
self.Images = None
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def addImages(self):
|
||||||
|
|
||||||
|
fnames = "."
|
||||||
|
fnames, filters = QFileDialog.getOpenFileNames(None, "Choose the image files", fnames, self.tr("Image Files (*.png *.jpg *.bmp *.jpeg)"))
|
||||||
|
|
||||||
|
if fnames is not None:
|
||||||
|
sort_nicely(fnames)
|
||||||
|
self.listWidget.addItems(fnames)
|
||||||
|
self.Images = fnames
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def videoBasename(self):
|
||||||
|
|
||||||
|
dir = os.path.dirname(self.dirpath) if self.dirpath is not None else "."
|
||||||
|
formats = ["*.%s" % unicode("avi")]
|
||||||
|
fname = None
|
||||||
|
fname, filters = QFileDialog.getSaveFileName(None, "New Simulation File (.avi)", dir,"avi Files (%s)"%" ".join(formats))
|
||||||
|
|
||||||
|
if fname is not None:
|
||||||
|
self.FilenameVideo = fname
|
||||||
|
self.videoBasenameLineEdit.setText(self.FilenameVideo)
|
||||||
|
|
||||||
|
|
||||||
|
def accept(self):
|
||||||
|
|
||||||
|
|
||||||
|
if self.Images is None:
|
||||||
|
msgBox = WarningParms("Please add Images to generate the video")
|
||||||
|
if msgBox.exec_():
|
||||||
|
return
|
||||||
|
|
||||||
|
if self.FilenameVideo is None:
|
||||||
|
msgBox = WarningParms("Please define the video name")
|
||||||
|
if msgBox.exec_():
|
||||||
|
return
|
||||||
|
|
||||||
|
if len(self.Images) < 10:
|
||||||
|
msgBox = WarningParms("Please add more Images")
|
||||||
|
if msgBox.exec_():
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
FPS = self.fPSSpinBox.value()
|
||||||
|
|
||||||
|
img = cv2.imread(self.Images[0])
|
||||||
|
height , width , layers = img.shape
|
||||||
|
print("start",self.FilenameVideo,height , width , layers)
|
||||||
|
fourcc = cv2.VideoWriter_fourcc(*'XVID') # cv2.cv.CV_FOURCC(*'XVID')
|
||||||
|
video = cv2.VideoWriter(self.FilenameVideo, fourcc=fourcc,
|
||||||
|
fps=FPS, frameSize=(width,height))
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
for item in self.Images:
|
||||||
|
print(item)
|
||||||
|
img = cv2.imread(item)
|
||||||
|
video.write(img)
|
||||||
|
|
||||||
|
cv2.destroyAllWindows()
|
||||||
|
video.release()
|
||||||
|
print("end")
|
||||||
|
|
||||||
|
except:
|
||||||
|
msgBox = WarningParms("Impossible to generate the video using the given images!!!!")
|
||||||
|
if msgBox.exec_():
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
QDialog.accept(self)
|
Loading…
Reference in New Issue
Block a user