def hockeyLoadData(shuffle=True): path_violence = constants.PATH_HOCKEY_FRAMES_VIOLENCE path_non_violence = constants.PATH_HOCKEY_FRAMES_NON_VIOLENCE # if not os.path.exists(os.path.join(constants.PATH_HOCKEY_README, 'all_data_labels_numFrames.csv')): # datasetAll, labelsAll, numFramesAll = initializeDataset.createDataset(path_violence, path_non_violence, shuffle) #shuffle # all_data = zip(datasetAll, labelsAll, numFramesAll) # save_csvfile_multicolumn(all_data, os.path.join(constants.PATH_HOCKEY_README, 'all_data_labels_numFrames.csv')) # else: # datasetAll, labelsAll, numFramesAll = read_csvfile_threecolumns(os.path.join(constants.PATH_HOCKEY_README, 'all_data_labels_numFrames.csv')) # return datasetAll, labelsAll, numFramesAll if not os.path.exists( os.path.join(constants.PATH_HOCKEY_README, 'all_data_labels_numFrames.csv')): datasetAll, labelsAll, numFramesAll = [], [], [] v_videos = os.listdir(path_violence) v_videos = sortListByStrNumbers(v_videos) nv_videos = os.listdir(path_non_violence) nv_videos = sortListByStrNumbers(nv_videos) for vd in v_videos: d = os.path.join(path_violence, vd) if not os.path.isdir(d): continue datasetAll.append(d) labelsAll.append(1) # imagesNoF = [] for vd in nv_videos: d = os.path.join(path_non_violence, vd) if not os.path.isdir(d): continue datasetAll.append(d) labelsAll.append(0) # Dataset = imagesF + imagesNoF # Labels = list([1] * len(imagesF)) + list([0] * len(imagesNoF)) numFramesAll = [ len(glob.glob1(datasetAll[i], "*.jpg")) for i in range(len(datasetAll)) ] if shuffle: combined = list(zip(datasetAll, labelsAll, numFramesAll)) random.shuffle(combined) datasetAll[:], labelsAll[:], numFramesAll[:] = zip(*combined) all_data = zip(datasetAll, labelsAll, numFramesAll) save_csvfile_multicolumn( all_data, os.path.join(constants.PATH_HOCKEY_README, 'all_data_labels_numFrames.csv')) else: datasetAll, labelsAll, numFramesAll = read_csvfile_threecolumns( os.path.join(constants.PATH_HOCKEY_README, 'all_data_labels_numFrames.csv')) return datasetAll, labelsAll, numFramesAll
def __load_video_frames__(self, video_path, as_grey=False): _, video_name = os.path.split(video_path) imgs_paths = os.listdir(video_path) imgs_paths = sortListByStrNumbers(imgs_paths) frames = [] for i, path in enumerate(imgs_paths): frame_path = os.path.join(video_path, path) img = cv2.imread(frame_path) if as_grey: img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) frames.append(img) return frames, imgs_paths
def __getitem__(self, idx): vid_name = self.videos[idx] label = self.labels[idx] frames_names = os.listdir(vid_name) frames_names = sortListByStrNumbers(frames_names) frame_path = os.path.join(vid_name, frames_names[self.frame_idx]) frame = Image.open(frame_path) frame = frame.convert("RGB") # frame = np.array(frame) frame = self.spatial_transform(frame) return vid_name, frame, label, frame_path
def load_video_segment(path, init_frame, num_frames): frames = os.listdir(path) frames = sortListByStrNumbers(frames) # print('NumFRames=', len(frames)) segment = [] n = 0 for i in range(len(frames)): if len(segment) == num_frames: break if i >= init_frame: img_dir = os.path.join(path, frames[i]) img1 = Image.open(img_dir) img1 = img1.convert("RGB") img = np.array(img1) segment.append(img) central_frame = segment[int(len(segment) / 2)] return segment, central_frame
def sample(self, video_path): frames_dirs = os.listdir(video_path) frames_dirs = sortListByStrNumbers(frames_dirs) frameT0 = Image.open(os.path.join(video_path, frames_dirs[0])).convert('L') frameT0 = np.array(frameT0) # self.plotFrame(frameT0) frameT1 = 0 x_c0, y_c0 = self.grayCentroid(frameT0) frames_centroids = [[x_c0, y_c0]] frames_samples = [frameT0] frames_samples_indices = [0] d_v = 0 for i in range(1, len(frames_dirs)): frameT1 = Image.open(os.path.join(video_path, frames_dirs[i])).convert('L') frameT1 = np.array(frameT1) self.plotFrame(frameT0, i - 1, frameT1, i) [x_c0, y_c0] = frames_centroids[len(frames_centroids) - 1] x_c1, y_c1 = self.grayCentroid(frameT1) # x_c_start, y_c_start = self.averageCentroid(frames_centroids) d = self.relativeDistance(x_c_start, y_c_start, x_c1, y_c1) if d < self.threshold1: frames_centroids.append([x_c1, y_c1]) if len(frames_centroids) > self.maxSampleLength: [x_c0, y_c0] = frames_centroids[len(frames_centroids) - 1] frames_centroids = [[x_c0, y_c0]] else: frames_samples.append(frameT1) frames_samples_indices.append(i) print( 'LenSimilarFrames({}), frame t({})-frame t+1({}) = {}, avg ({}, {}), current_centroid ({}, {})' .format(len(frames_centroids), i - 1, i, d, x_c_start, y_c_start, x_c1, y_c1)) frameT0 = frameT1 return frames_samples, frames_samples_indices
def load_multiple_segments(path, segments_num, segment_len): frames = os.listdir(path) frames = sortListByStrNumbers(frames)