def makingData(self, realTimeObj): settings = Settings.getInstance() if self.variable4.get() == 'Count of Photos': realTimeObj.countOfPhoto = int( self.makeDataTimeCountOfPhotosSpinboxVar.get()) realTimeObj.countOfPhotoDone = 0 realTimeObj.camera = self.camera #realTimeObj.camera = cv2.VideoCapture(settings.cameraNumber) realTimeObj.frames = int(self.makeDataFramesSpinboxVar.get()) realTimeObj.before() while realTimeObj.countOfPhotoDone < realTimeObj.countOfPhoto: if realTimeObj.do: realTimeObj.run() realTimeObj.countOfPhotoDone += 1 else: break realTimeObj.logFile.close() realTimeObj.analysisFile.close() if self.variable4.get() == 'Count of Time': realTimeObj.frames = int(self.makeDataFramesSpinboxVar.get()) realTimeObj.before() while realTimeObj.timePast() < realTimeObj.convertTimeToSeconds([ int(self.makeDataTimeCountOfTimeHoursSpinboxVar.get()), int(self.makeDataTimeCountOfTimeMinutesSpinboxVar.get()), int(self.makeDataTimeCountOfTimeSecondsSpinboxVar.get()) ]): if realTimeObj.do: realTimeObj.run() else: break realTimeObj.logFile.close() realTimeObj.analysisFile.close()
def update(self): settings = Settings.getInstance() if self.checkVar.get(): ret, frame = self.camera.getFrame() if ret: for i in range(len(settings.areasList)): try: cv2.rectangle(frame, (settings.areasList[i][0], settings.areasList[i][1]), (settings.areasList[i][2], settings.areasList[i][3]), (0, 255, 0), 1) except: pass self.img = ImageTk.PhotoImage( master=self.cameraWindow, image=Image.fromarray(frame).resize((640, 480))) self.cameraWindow.create_image(0, 0, image=self.img, anchor='nw') if self.checkVar.get() == 0: self.cameraWindow.delete("all") self.after(self.delay, self.update)
async def makeData(self): #self.progressBar.start() settings = Settings.getInstance() self.do_temp = True self.temperatureGetter() self.countOfProcess = len(settings.areasList) - 1 threads = [] for i in range(self.countOfProcess): self.makeDataList.append(MakeData(settings.areasList[i+1])) t = threading.Thread(target=self.makingData, args=(self.makeDataList[i],)) threads.append(t) time.sleep(1) for i in threads: i.start() for i in threads: i.join() self.do_temp = False #self.progressBar.stop() for i in self.makeDataList: i.camera.release()
def updateAreasFromOptions(self): settings = Settings.getInstance() for i in range(1, len(settings.areasList)): self.listbox.insert( 'end', '{}, {}, {}, {}'.format(settings.areasList[i][0], settings.areasList[i][1], settings.areasList[i][2], settings.areasList[i][3]))
def updateCameraParameters(self): self.updateSettings() settings = Settings.getInstance() self.camera.setProperty(3, settings.cameraWidth) self.camera.setProperty(4, settings.cameraHeight) self.camera.setProperty(10, settings.cameraBrightness) self.camera.setProperty(11, settings.cameraContrast) self.camera.setProperty(12, settings.cameraSaturation) self.camera.setProperty(14, settings.cameraGain)
def updateSettings(self): settings = Settings.getInstance() settings.left = self.left settings.upper = self.upper settings.right = self.right settings.lower = self.lower if (self.left, self.upper, self.right, self.lower) not in settings.areasList: settings.areasList.append((self.left, self.upper, self.right, self.lower)) settings.countOfAreas = len(settings.areasList)
def makeDataTimeSetFromOptions(self): settings = Settings.getInstance() if self.variable4.get() == 'Count of Photos': if settings.countOfPhoto != None: self.makeDataTimeCountOfPhotosSpinboxVar.set(str(settings.countOfPhoto)) if self.variable4.get() == 'Count of Time': if settings.countOfTimeH != None: self.makeDataTimeCountOfTimeHoursSpinboxVar.set(str(settings.countOfTimeH)) if settings.countOfTimeM != None: self.makeDataTimeCountOfTimeMinutesSpinboxVar.set(str(settings.countOfTimeM)) if settings.countOfTimeS != None: self.makeDataTimeCountOfTimeSecondsSpinboxVar.set(str(settings.countOfTimeS))
def deleteSelection(self): items = self.listbox.curselection() itemToDel = self.listbox.get(self.listbox.curselection()) itemToDel = tuple(map(int,itemToDel.replace(" ", "").split(','))) pos = 0 for i in items: idx = int(i) - pos self.listbox.delete(idx, idx) pos = pos + 1 settings = Settings.getInstance() try: settings.areasList.remove(itemToDel) except: None
def __init__(self, *args, **kwargs): tk.Frame.__init__(self, *args, **kwargs) self.framesList = [] self.RTopened = False self.OPTopened = False self.MDopened = False self.ADopened = False self.settings = Settings.getInstance() #style = ttk.Style() #print('Style themes on my system are ', style.theme_names()) #style.theme_use('xpnative') #style.configure('TButton', background='white', padding=5) container = tk.Frame(self) container.grid(row=0, column=0) self.realTimeButton = ttk.Button(container, text='real time analysis', state='disabled', command=self.showRealTime) self.realTimeButton.grid(row=0, column=0, sticky='NEWS') self.optionButton = ttk.Button(container, text='options', command=self.showOptions) self.optionButton.grid(row=1, column=0, sticky='NEWS') self.makeDataButton = ttk.Button(container, text='make data', state='disabled', command=self.showMake) self.makeDataButton.grid(row=2, column=0, sticky='NEWS') self.analyzeButton = ttk.Button(container, text='analyze data', command=self.showAnalysis) self.analyzeButton.grid(row=3, column=0, sticky='NEWS') self.portTestButton = ttk.Button(container, text='test port', state='disabled', command=self.testPort) self.portTestButton.grid(row=4, column=0, sticky='NEWS')
def createGraphSwitchers(self): try: self.switchersContainer.grid_forget() except: pass settings = Settings.getInstance() self.switchersContainer = tk.Frame(self) self.switchersContainer.grid(row=1, column=4, columnspan=2, sticky='N') self.areasList = [] try: for i in range(1, len(settings.areasList)): if settings.areasList[i] not in self.areasList: self.areasList.append(str(settings.areasList[i])) self.areasList.insert(0, self.areasList[0]) self.areasListVar = tk.StringVar(self.switchersContainer) self.areasListVar.set(self.areasList[0]) self.areasGraphOptionMenu = ttk.OptionMenu(self.switchersContainer, self.areasListVar, *self.areasList, command=self.drawGraph) self.areasGraphOptionMenu.grid(row=0, column=0) except: pass self.xList = ['temperature', 'time'] self.xList.insert(0, self.xList[0]) self.xListVar = tk.StringVar(self.switchersContainer) self.xListVar.set(self.xList[0]) self.xOptionMenu = ttk.OptionMenu(self.switchersContainer, self.xListVar, *self.xList, command=self.drawGraph) self.xOptionMenu.grid(row=0, column=1)
async def makeData(self): settings = Settings.getInstance() self.do_temp = True self.do_graph = True self.temperatureGetter() self.drawGraph() self.countOfProcess = len(settings.areasList) - 1 threads = [] for i in range(self.countOfProcess): self.realTimeList.append(RealTime(settings.areasList[i + 1])) t = threading.Thread(target=self.makingData, args=(self.realTimeList[i], )) threads.append(t) time.sleep(1) for i in threads: i.start() for i in threads: i.join() self.do_temp = False self.do_graph = False
def updateSettings(self): settings = Settings.getInstance() settings.cameraNumber = int(self.variable1.get()) settings.cameraWidth = int(self.variable2.get().split('x')[0]) settings.cameraHeight = int(self.variable2.get().split('x')[1]) settings.cameraBrightness = int(self.defaultBrightnessVar.get()) settings.cameraContrast = int(self.defaultContrastVar.get()) settings.cameraSaturation = int(self.defaultSaturationVar.get()) settings.cameraGain = int(self.defaultGainVar.get()) * 10000000 # if self.variable3.get() == 'on': # settings.cameraWhiteBalance = 1 # else: # settings.cameraWhiteBalance = 0 settings.left = self.left settings.upper = self.upper settings.right = self.right settings.lower = self.lower if (self.left, self.upper, self.right, self.lower) not in settings.areasList: settings.areasList.append((self.left, self.upper, self.right, self.lower)) settings.countOfAreas = len(settings.areasList)
def __init__(self, *args, **kwargs): tk.Frame.__init__(self, *args, **kwargs) self.settings = Settings.getInstance() ###AREA### self.left = None self.upper = None self.right = None self.lower = None ############ LEFT ############### optionsContainer = tk.Frame(self) optionsContainer.grid(row=0, column=0, sticky='N', columnspan=2) self.label9 = ttk.Label(optionsContainer, text='Camera Options', font='Helvetica 10 bold') self.label9.grid(row=0, column=0, columnspan=2) ### DEVICE NUMBER ### self.label1 = ttk.Label(optionsContainer, text='Device Number: ') self.label1.grid(row=1, column=0) self.devicelist = self.getDeviceList() self.devicelist.insert(0, self.devicelist[0]) self.variable1 = tk.StringVar(optionsContainer) self.variable1.set(self.devicelist[0]) self.dropdownmenu1 = ttk.OptionMenu(optionsContainer, self.variable1, *self.devicelist, command=self.changeCamera) self.dropdownmenu1.grid(row=1, column=1, sticky ='news') #set camera self.camera = Camera(int(self.variable1.get())) ### RESOLUTION ### self.label2 = ttk.Label(optionsContainer, text='Resolution:') self.label2.grid(row=2, column=0) self.resolutionlist = ["640x480","800x600", "1280x960", "1920x1080"] self.resolutionlist.insert(0, self.resolutionlist[0]) self.variable2 = tk.StringVar(optionsContainer) self.variable2.set(str(self.camera.getProperty(3))+"x"+str(self.camera.getProperty(4))) self.dropdownmenu2 = ttk.OptionMenu(optionsContainer, self.variable2, *self.resolutionlist, command=self.changeResolution) self.dropdownmenu2.grid(row=2, column=1, sticky ='news') # ### WHITE BALANCE ### # # self.label3 = ttk.Label(optionsContainer, text='White Balance:') # # self.label3.grid(row=3, column=0) # # self.whitebalancelist = ['on','off'] # # self.whitebalancelist.insert(0,self.whitebalancelist[0]) # # self.variable3 = tk.StringVar(optionsContainer) # # self.variable3.set(self.camera.getProperty(17)) # # self.dropdownmenu3 = ttk.OptionMenu(optionsContainer, self.variable3, *self.whitebalancelist, command=self.changeWhiteBalance) # # self.dropdownmenu3.grid(row=3, column=1, sticky='news') ### BRIGHTNESS ### self.label4 = ttk.Label(optionsContainer, text='Brightness:') self.label4.grid(row=4, column=0) self.defaultBrightnessVar = tk.StringVar(optionsContainer) self.defaultBrightnessVar.set(self.camera.getProperty(10)) self.spinbox1 = tk.Spinbox(optionsContainer, textvariable=self.defaultBrightnessVar, command=self.updateCameraParameters) self.spinbox1.grid(row=4, column=1) self.spinbox1.config(from_=0, to=10000, justify='right') ### CONTRAST ### self.label5 = tk.Label(optionsContainer, text='Contrast:') self.label5.grid(row=5, column=0) self.defaultContrastVar = tk.StringVar(optionsContainer) self.defaultContrastVar.set(self.camera.getProperty(11)) self.spinbox2 = tk.Spinbox(optionsContainer, textvariable=self.defaultContrastVar, command=self.updateCameraParameters) self.spinbox2.grid(row=5, column=1) self.spinbox2.config(from_=0, to=10000, justify='right') ### SATURATION ### self.label6 = tk.Label(optionsContainer, text='Saturation:') self.label6.grid(row=6, column=0) self.defaultSaturationVar = tk.StringVar(optionsContainer) self.defaultSaturationVar.set(self.camera.getProperty(12)) self.spinbox3 = tk.Spinbox(optionsContainer, textvariable=self.defaultSaturationVar, command=self.updateCameraParameters) self.spinbox3.grid(row=6, column=1) self.spinbox3.config(from_=0, to=10000, justify='right') ### GAIN ### self.label7 = ttk.Label(optionsContainer, text='Gain:') self.label7.grid(row=7, column=0) self.defaultGainVar = tk.StringVar(optionsContainer) self.defaultGainVar.set(self.camera.getProperty(14)/10000000) self.spinbox4 = tk.Spinbox(optionsContainer, textvariable=self.defaultGainVar, command=self.updateCameraParameters) self.spinbox4.grid(row=7, column=1) self.spinbox4.config(from_=0, to=100, justify='right') ############ AREA ################# areaContainer = tk.Frame(self) areaContainer.grid(row=1, column=0, sticky='N', columnspan=2) self.label10 = ttk.Label(areaContainer, text='Area Settings', font='Helvetica 10 bold') self.label10.grid(row=0, column=0, columnspan=2) self.scrollbar = ttk.Scrollbar(areaContainer, orient='vertical') self.scrollbar.grid(row=1, column=2, sticky='WNS') self.listbox = tk.Listbox(areaContainer, selectmode='EXTENDED') self.listbox.grid(row=1, column=0, sticky='WE', columnspan=2) self.listbox.config(yscrollcommand=self.scrollbar.set) self.scrollbar.config(command=self.listbox.yview) self.addareabutton = ttk.Button(areaContainer, text='Add', command=self.addAreaFunc) self.addareabutton.grid(row=2, column=0, sticky='W') self.deletebutton = ttk.Button(areaContainer, text='Delete', command=self.deleteSelection) self.deletebutton.grid(row=2, column=1, sticky='W') ################ MAKE DATA OPTIONS ################### self.makeDataContainer = tk.Frame(self) self.makeDataContainer.grid(row=2, column=0, sticky='N', columnspan=2) self.label11 = ttk.Label(self.makeDataContainer, text='Make Data Settings', font='Helvetica 10 bold') self.label11.grid(row=0, column=0, columnspan=3) self.label12 = ttk.Label(self.makeDataContainer, text='Making Data Time method: ') self.label12.grid(row=1, column=0) self.makeDataTimeList = ['Count of Photos', 'Count of Time'] self.makeDataTimeList.insert(0, self.makeDataTimeList[0]) self.variable4 = tk.StringVar(self.makeDataContainer) self.variable4.set(self.makeDataTimeList[0]) self.dropdownmenu4 = ttk.OptionMenu(self.makeDataContainer, self.variable4, *self.makeDataTimeList, command=self.makeDataTimeMethodInterfaceUpdate) self.dropdownmenu4.grid(row=1, column=1, sticky='news') self.label13 = ttk.Label(self.makeDataContainer, text='Making Data Photo method: ') self.label13.grid(row=2, column=0) self.makeDataPhotoList = ['Count of Frames'] self.makeDataPhotoList.insert(0, self.makeDataPhotoList[0]) self.variable5 = tk.StringVar(self.makeDataContainer) self.variable5.set(self.makeDataPhotoList[0]) self.dropdownmenu5 = ttk.OptionMenu(self.makeDataContainer, self.variable5, *self.makeDataPhotoList, command='') self.dropdownmenu5.grid(row=2, column=1, sticky='news') self.makeDataFramesContainer = tk.Frame(self.makeDataContainer) self.makeDataFramesContainer.grid(row=2, column=2) self.makeDataFramesSpinboxVar = tk.StringVar(self.makeDataFramesContainer) self.makeDataCountOfFramesSpinbox = tk.Spinbox(self.makeDataFramesContainer, from_=0, to=144, textvariable=self.makeDataFramesSpinboxVar, width=21, command=self.makeDataUpdateCountOfFrames) self.makeDataCountOfFramesSpinbox.grid(row=0, column=0) ################# LOAD/SAVE ################## loadsaveContainer = tk.Frame(self) loadsaveContainer.grid(row=3, column=0, sticky='N', columnspan=2) self.loadButton = ttk.Button(loadsaveContainer, text='Load Config', command=self.loadConfig) self.loadButton.grid(row=1, column=0, sticky='W', pady=5) self.saveButton = ttk.Button(loadsaveContainer, text='Save Config', command=self.saveConfig) self.saveButton.grid(row=1, column=1, sticky='W', pady=5) ############# PORT ################# self.portName = '' portContainer = tk.Frame(self) portContainer.grid(row=4, column=0, sticky='N', columnspan=2) self.label12 = ttk.Label(portContainer, text='Port Settings', font='Helvetica 10 bold') self.label12.grid(row=0, column=0, columnspan=3) self.portLabel = ttk.Label(portContainer, text=str(self.settings.portName)) self.portLabel.grid(row=1, column=1, sticky='W', pady=5) self.portEntry = ttk.Button(portContainer, text="Enter Port Name:", command=self.portEntryMethod) self.portEntry.grid(row=1, column=0, sticky='W', pady=5) ############ RIGHT ############### cameraCheckContainer = tk.Frame(self) cameraCheckContainer.grid(row=0, column=2, rowspan=2, sticky='N') ### CAMERA PREVIEW CHECK ### self.checkVar = tk.IntVar() self.checkbutton = tk.Checkbutton(cameraCheckContainer, variable=self.checkVar, text='Camera Preview', command=self.checkClick) self.checkbutton.grid(row=0, column=0, sticky='W') cameraContainer = tk.Frame(cameraCheckContainer) cameraContainer.grid(row=1, column=0, rowspan=2, sticky='N') ### CAMERA PREVIEW ### self.cameraWindow = tk.Canvas(cameraContainer, width=640, height=480) self.cameraWindow.grid(row=0, column=0, columnspan=2) self.delayOptions = 2000 self.delay = 18 self.updateCameraParameters() self.update() self.makeDataTimeMethodInterfaceUpdate('') self.updateAreasFromOptions() self.makeDataFramesSetFromOptions() self.updateOptions()
def __init__(self, *args, **kwargs): tk.Frame.__init__(self, *args, **kwargs) settings = Settings.getInstance() self.camera = Camera(settings.cameraNumber) self.camera = settings.setCamProperties(self.camera) self.makeDataList = [] self.TempReader = TempReader() self.do_temp = False self.temperaturePort = settings.portName ############ LEFT ############### ################ MAKE DATA OPTIONS ################### self.makeDataContainer = tk.Frame(self) self.makeDataContainer.grid(row=0, column=0, sticky='N', columnspan=2) self.label11 = ttk.Label(self.makeDataContainer, text='Make Data Settings', font='Helvetica 10 bold') self.label11.grid(row=0, column=0, columnspan=3) self.label12 = ttk.Label(self.makeDataContainer, text='Making Data Time method: ') self.label12.grid(row=1, column=0) self.makeDataTimeList = ['Count of Photos', 'Count of Time'] self.makeDataTimeList.insert(0, self.makeDataTimeList[0]) self.variable4 = tk.StringVar(self.makeDataContainer) self.variable4.set(self.makeDataTimeList[0]) self.dropdownmenu4 = ttk.OptionMenu(self.makeDataContainer, self.variable4, *self.makeDataTimeList, command=self.makeDataTimeMethodInterfaceUpdate) self.dropdownmenu4.grid(row=1, column=1, sticky='news') self.label13 = ttk.Label(self.makeDataContainer, text='Making Data Photo method: ') self.label13.grid(row=2, column=0) self.makeDataPhotoList = ['Count of Frames'] self.makeDataPhotoList.insert(0, self.makeDataPhotoList[0]) self.variable5 = tk.StringVar(self.makeDataContainer) self.variable5.set(self.makeDataPhotoList[0]) self.dropdownmenu5 = ttk.OptionMenu(self.makeDataContainer, self.variable5, *self.makeDataPhotoList, command='') self.dropdownmenu5.grid(row=2, column=1, sticky='news') self.makeDataFramesContainer = tk.Frame(self.makeDataContainer) self.makeDataFramesContainer.grid(row=2, column=2) self.makeDataFramesSpinboxVar = tk.StringVar(self.makeDataFramesContainer) self.makeDataCountOfFramesSpinbox = tk.Spinbox(self.makeDataFramesContainer, from_=0, to=144, textvariable=self.makeDataFramesSpinboxVar, width=21, command=self.makeDataUpdateCountOfFrames) self.makeDataCountOfFramesSpinbox.grid(row=0, column=0) ############ AREA ################# areaContainer = tk.Frame(self) areaContainer.grid(row=1, column=0, sticky='N', columnspan=2) self.label10 = ttk.Label(areaContainer, text='Area Settings', font='Helvetica 10 bold') self.label10.grid(row=0, column=0, columnspan=2) self.scrollbar = ttk.Scrollbar(areaContainer, orient='vertical') self.scrollbar.grid(row=1, column=2, sticky='WNS') self.listbox = tk.Listbox(areaContainer, selectmode='EXTENDED') self.listbox.grid(row=1, column=0, sticky='WE', columnspan=2) self.listbox.config(yscrollcommand=self.scrollbar.set) self.scrollbar.config(command=self.listbox.yview) self.addareabutton = ttk.Button(areaContainer, text='Add', command=self.addAreaFunc) self.addareabutton.grid(row=2, column=0, sticky='W') self.deletebutton = ttk.Button(areaContainer, text='Delete', command=self.deleteSelection) self.deletebutton.grid(row=2, column=1, sticky='W') ################# START/CANCEL ################## self.async_loop = asyncio.get_event_loop() startstopContainer = tk.Frame(self) startstopContainer.grid(row=3, column=0, sticky='N', columnspan=2) self.startButton = ttk.Button(startstopContainer, text='Start', command=lambda: self.do_tasks(self.async_loop)) self.startButton.grid(row=1, column=0, sticky='W') self.stopButton = ttk.Button(startstopContainer, text='Cancel', command=self.cancel) self.stopButton.grid(row=1, column=1, sticky='W') ############ RIGHT ############### cameraCheckContainer = tk.Frame(self) cameraCheckContainer.grid(row=0, column=2, rowspan=2, sticky='N') ### CAMERA PREVIEW CHECK ### self.checkVar = tk.IntVar() self.checkbutton = tk.Checkbutton(cameraCheckContainer, variable=self.checkVar, text='Camera Preview', command=self.checkClick) self.checkbutton.grid(row=0, column=0, sticky='W') cameraContainer = tk.Frame(cameraCheckContainer) cameraContainer.grid(row=1, column=0, rowspan=2, sticky='N') ### CAMERA PREVIEW ### self.cameraWindow = tk.Canvas(cameraContainer, width=640, height=480) self.cameraWindow.grid(row=0, column=0, columnspan=2) ### PROGRESS BAR ### self.progressBarContainer = tk.Frame(self) self.progressBarContainer.grid(row=4, column=0, columnspan=4) self.progressBar = ttk.Progressbar(self.progressBarContainer, orient='horizontal', length=1050) self.progressBar.grid(row=0, column=0, sticky='EW') self.progressBar.config(maximum=150, value=0) self.delayOptions = 2000 self.delay = 18 self.updateCameraParameters() self.update() self.makeDataTimeMethodInterfaceUpdate('') self.updateAreasFromOptions() self.makeDataFramesSetFromOptions() self.updateOptions()
def makeDataTimeUpdateCountOfTimeM(self): settings = Settings.getInstance() settings.countOfTimeM = int(self.makeDataTimeCountOfTimeMinutesSpinboxVar.get())
def makeDataTimeUpdateCountOfTimeS(self): settings = Settings.getInstance() settings.countOfTimeS = int(self.makeDataTimeCountOfTimeSecondsSpinboxVar.get())
def makeDataTimeUpdateCountOfTimeH(self): settings = Settings.getInstance() settings.countOfTimeH = int(self.makeDataTimeCountOfTimeHoursSpinboxVar.get())
def makeDataTimeUpdateCountOfPhoto(self): settings = Settings.getInstance() settings.countOfPhoto = int(self.makeDataTimeCountOfPhotosSpinboxVar.get())
def makeDataUpdateCountOfFrames(self): settings = Settings.getInstance() settings.countOfFrames = int(self.makeDataFramesSpinboxVar.get())
def makeDataFramesSetFromOptions(self): settings = Settings.getInstance() if settings.countOfFrames != None: self.makeDataFramesSpinboxVar.set(str(settings.countOfFrames))
def makingData(self, countOfPhoto=None, timeToExecute=None, countOfFramesToAverage=None, *args, **kwargs): try: settings = Settings.getInstance() # time count to execute by program if timeToExecute != None: if type(timeToExecute) == list: timeToExecute = self.convertListToSeconds(timeToExecute) else: timeToExecute = timeToExecute # camera #self.camera = cv2.VideoCapture(settings.cameraNumber) cameraWidth = int(self.camera.getProperty(3)) cameraHeight = int(self.camera.getProperty(4)) # array shape averagedArray = np.zeros((cameraHeight, cameraWidth, 3), np.float) # variables countOfPhotoDone = 0 countOfFramesToAverageDone = 0 currentDate = datetime.date.today() # creating directory if not self.do: return directoryPath = self.createDirectoryForData() # creating log.txt logFile = open(directoryPath + '/' + 'log.txt', 'w') dataTime = time.time() if (countOfPhoto and countOfFramesToAverage) != None: while (self.do): ret, frame = self.camera.getFrame() arrayFromFrame = np.array(frame, dtype=np.float) averagedArray = np.add(averagedArray, arrayFromFrame, casting='unsafe') countOfFramesToAverageDone += 1 if countOfFramesToAverageDone >= countOfFramesToAverage: averagedArray = np.divide(averagedArray, countOfFramesToAverage, casting='unsafe') photoToSave = np.array(np.round(averagedArray), dtype=np.uint8) imageNameFormat = "\image{}{}{}{}{}".format(" ", str(currentDate), "_", str(countOfPhotoDone), ".png") fileNameAndDirectory = directoryPath + imageNameFormat cv2.imwrite(fileNameAndDirectory, photoToSave) im = Image.open(fileNameAndDirectory) im = im.crop((self.left, self.upper, self.right, self.lower)) im.save(fileNameAndDirectory) logFile.write('{} {} {}\n'.format(imageNameFormat[1:], str(self.currentTemp), time.time())) averagedArray = np.zeros((cameraHeight, cameraWidth, 3), np.float) countOfPhotoDone += 1 countOfFramesToAverageDone = 0 continue if countOfPhotoDone >= countOfPhoto: break elif (timeToExecute and countOfFramesToAverage) != None: startingProgramTime = time.time() while (self.do): ProgramTimePast = time.time() - startingProgramTime ret, frame = self.camera.getFrame() arrayFromFrame = np.array(frame, dtype=np.float) averagedArray = np.add(averagedArray, arrayFromFrame, casting='unsafe') countOfFramesToAverageDone += 1 if countOfFramesToAverageDone >= countOfFramesToAverage: averagedArray = np.divide(averagedArray, countOfFramesToAverage, casting='unsafe') photoToSave = np.array(np.round(averagedArray), dtype=np.uint8) imageNameFormat = "\image{}{}{}{}{}".format(" ", str(currentDate), "_", str(countOfPhotoDone), ".png") fileNameAndDirectory = directoryPath + imageNameFormat cv2.imwrite(fileNameAndDirectory, photoToSave) logFile.write('{} {} {}\n'.format(imageNameFormat[1:], str(self.currentTemp), time.time())) im = Image.open(fileNameAndDirectory) im = im.crop((self.left, self.upper, self.right, self.lower)) im.save(fileNameAndDirectory) averagedArray = np.zeros((cameraHeight, cameraWidth, 3), np.float) countOfPhotoDone += 1 countOfFramesToAverageDone = 0 continue if int(ProgramTimePast) >= timeToExecute: break logFile.close() #self.camera.release() print("Making data ends successfully, made {} frames".format(countOfPhotoDone)) except Exception as e: print(e) return