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