def shotDetect(self, queue, capture, sensitivity, number_frame, frames_bloc, file_name, file_name_save, file_video_save, file_atual, ncpu, ncpus): self.number_frame = number_frame self.fps = cvGetCaptureProperty(capture, CV_CAP_PROP_FPS) histogramPolitic = HistogramPolitic() imageManipulation = ImageManipulation() frameA, frameB, frameC = self.passFrame(capture) vetImg = self.initLoadFrames(frameA, frameB) frameAHistogram = imageManipulation.createHistogramBoxes(vetImg, 0) frameBHistogram = imageManipulation.createHistogramBoxes(vetImg, 1) limiar = histogramPolitic.calculateSensitivity(sensitivity, vetImg[0]) while not (frameC is None) and (self.number_frame <= frames_bloc): vetImg = self.atualizeVetImg(vetImg, Ipl2PIL(frameC)) frameCHistogram = imageManipulation.createHistogramBoxes(vetImg, 2) if histogramPolitic.verifyTransition( frameAHistogram, frameBHistogram, frameCHistogram, limiar) and (self.number_frame - self.lastSaved) > 20: self.saveTransition(file_name_save, frames_bloc, vetImg) frameA, frameB, frameC = self.atualizeVar(frameA, frameB, frameC, capture) frameAHistogram = frameBHistogram frameBHistogram = frameCHistogram self.number_frame += 1 if (ncpu == ncpus): self._list.append(frames_bloc / self.fps) elif (ncpu == 1): self._list.insert(0, 0) queue.put(self._list)
def createHistogramBoxes( self, vetImg, frame, totalHorizontalDivisions = 4, totalVerticalDivisions = 4 ): cropHistogram = [] histogramPolitic = HistogramPolitic() sizeBox = histogramPolitic.calculateSizeBox ( vetImg[frame] ) for horizontalDivision in range( totalHorizontalDivisions ): for verticalDivision in range( totalVerticalDivisions ): x1Point = horizontalDivision * sizeBox[0] y1Point = verticalDivision * sizeBox[1] x2Point = x1Point + sizeBox[0] - 1 y2Point = y1Point + sizeBox[1] - 1 box = (x1Point, y1Point, x2Point, y2Point) cropHistogram.append( vetImg[ frame ].crop(box).convert("L").histogram() ) return cropHistogram
def createHistogramBoxes(self, vetImg, frame, totalHorizontalDivisions=4, totalVerticalDivisions=4): cropHistogram = [] histogramPolitic = HistogramPolitic() sizeBox = histogramPolitic.calculateSizeBox(vetImg[frame]) for horizontalDivision in range(totalHorizontalDivisions): for verticalDivision in range(totalVerticalDivisions): x1Point = horizontalDivision * sizeBox[0] y1Point = verticalDivision * sizeBox[1] x2Point = x1Point + sizeBox[0] - 1 y2Point = y1Point + sizeBox[1] - 1 box = (x1Point, y1Point, x2Point, y2Point) cropHistogram.append( vetImg[frame].crop(box).convert("L").histogram()) return cropHistogram
def shotDetect(self,queue, capture, sensitivity, number_frame, frames_bloc, file_name, file_name_save, file_video_save, file_atual, ncpu, ncpus): self.number_frame = number_frame self.fps = cvGetCaptureProperty(capture, CV_CAP_PROP_FPS) histogramPolitic = HistogramPolitic() imageManipulation = ImageManipulation() frameA, frameB, frameC = self.passFrame(capture) vetImg = self.initLoadFrames(frameA, frameB) frameAHistogram = imageManipulation.createHistogramBoxes(vetImg, 0) frameBHistogram = imageManipulation.createHistogramBoxes(vetImg, 1) limiar = histogramPolitic.calculateSensitivity(sensitivity, vetImg[0]) while not(frameC is None) and (self.number_frame<= frames_bloc): vetImg = self.atualizeVetImg(vetImg, Ipl2PIL(frameC)) frameCHistogram = imageManipulation.createHistogramBoxes(vetImg, 2) if histogramPolitic.verifyTransition(frameAHistogram, frameBHistogram, frameCHistogram, limiar) and (self.number_frame - self.lastSaved) > 20: self.saveTransition(file_name_save, frames_bloc, vetImg) frameA, frameB, frameC = self.atualizeVar(frameA, frameB, frameC, capture) frameAHistogram = frameBHistogram frameBHistogram = frameCHistogram self.number_frame += 1 if (ncpu == ncpus): self._list.append(frames_bloc / self.fps) elif (ncpu == 1): self._list.insert(0, 0) queue.put(self._list)