Python cv2.cartToPolar() Examples
The following are 28
code examples of cv2.cartToPolar().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
cv2
, or try the search function
.
Example #1
Source File: video2tfrecord.py From video2tfrecord with MIT License | 8 votes |
def compute_dense_optical_flow(prev_image, current_image): old_shape = current_image.shape prev_image_gray = cv2.cvtColor(prev_image, cv2.COLOR_BGR2GRAY) current_image_gray = cv2.cvtColor(current_image, cv2.COLOR_BGR2GRAY) assert current_image.shape == old_shape hsv = np.zeros_like(prev_image) hsv[..., 1] = 255 flow = None flow = cv2.calcOpticalFlowFarneback(prev=prev_image_gray, next=current_image_gray, flow=flow, pyr_scale=0.8, levels=15, winsize=5, iterations=10, poly_n=5, poly_sigma=0, flags=10) mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1]) hsv[..., 0] = ang * 180 / np.pi / 2 hsv[..., 2] = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX) return cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
Example #2
Source File: predict.py From License-Plate-Recognition with MIT License | 6 votes |
def preprocess_hog(digits): samples = [] for img in digits: gx = cv2.Sobel(img, cv2.CV_32F, 1, 0) gy = cv2.Sobel(img, cv2.CV_32F, 0, 1) mag, ang = cv2.cartToPolar(gx, gy) bin_n = 16 bin = np.int32(bin_n*ang/(2*np.pi)) bin_cells = bin[:10,:10], bin[10:,:10], bin[:10,10:], bin[10:,10:] mag_cells = mag[:10,:10], mag[10:,:10], mag[:10,10:], mag[10:,10:] hists = [np.bincount(b.ravel(), m.ravel(), bin_n) for b, m in zip(bin_cells, mag_cells)] hist = np.hstack(hists) # transform to Hellinger kernel eps = 1e-7 hist /= hist.sum() + eps hist = np.sqrt(hist) hist /= norm(hist) + eps samples.append(hist) return np.float32(samples) #不能保证包括所有省份
Example #3
Source File: digits.py From PyCV-time with MIT License | 6 votes |
def preprocess_hog(digits): samples = [] for img in digits: gx = cv2.Sobel(img, cv2.CV_32F, 1, 0) gy = cv2.Sobel(img, cv2.CV_32F, 0, 1) mag, ang = cv2.cartToPolar(gx, gy) bin_n = 16 bin = np.int32(bin_n*ang/(2*np.pi)) bin_cells = bin[:10,:10], bin[10:,:10], bin[:10,10:], bin[10:,10:] mag_cells = mag[:10,:10], mag[10:,:10], mag[:10,10:], mag[10:,10:] hists = [np.bincount(b.ravel(), m.ravel(), bin_n) for b, m in zip(bin_cells, mag_cells)] hist = np.hstack(hists) # transform to Hellinger kernel eps = 1e-7 hist /= hist.sum() + eps hist = np.sqrt(hist) hist /= norm(hist) + eps samples.append(hist) return np.float32(samples)
Example #4
Source File: digits.py From PyCV-time with MIT License | 6 votes |
def preprocess_hog(digits): samples = [] for img in digits: gx = cv2.Sobel(img, cv2.CV_32F, 1, 0) gy = cv2.Sobel(img, cv2.CV_32F, 0, 1) mag, ang = cv2.cartToPolar(gx, gy) bin_n = 16 bin = np.int32(bin_n*ang/(2*np.pi)) bin_cells = bin[:10,:10], bin[10:,:10], bin[:10,10:], bin[10:,10:] mag_cells = mag[:10,:10], mag[10:,:10], mag[:10,10:], mag[10:,10:] hists = [np.bincount(b.ravel(), m.ravel(), bin_n) for b, m in zip(bin_cells, mag_cells)] hist = np.hstack(hists) # transform to Hellinger kernel eps = 1e-7 hist /= hist.sum() + eps hist = np.sqrt(hist) hist /= norm(hist) + eps samples.append(hist) return np.float32(samples)
Example #5
Source File: utils.py From BlenderProc with GNU General Public License v3.0 | 6 votes |
def flow_to_rgb(flow): """ Visualizes optical flow in hsv space and converts it to rgb space. :param flow: (np.array (h, w, c)) optical flow :return: (np.array (h, w, c)) rgb data """ im1 = flow[:, :, 0] im2 = flow[:, :, 1] h, w = flow.shape[:2] # Use Hue, Saturation, Value colour model hsv = np.zeros((h, w, 3), dtype=np.float32) hsv[..., 1] = 1 mag, ang = cv2.cartToPolar(im1, im2) hsv[..., 0] = ang * 180 / np.pi hsv[..., 2] = cv2.normalize(mag, None, 0, 1, cv2.NORM_MINMAX) return cv2.cvtColor(hsv, cv2.COLOR_HSV2RGB)
Example #6
Source File: opticalflow.py From sign-language with MIT License | 6 votes |
def flow2colorimage(ar_f_Flow:np.array(float)) -> np.array(int): """ translate 1 optical flow (with values from -1.0 to 1.0) to an colorful image """ h, w, c = ar_f_Flow.shape if not isinstance(ar_f_Flow[0,0,0], np.float32): warnings.warn("Need to convert flows to float32") ar_f_Flow = ar_f_Flow.astype(np.float32) ar_n_hsv = np.zeros((h, w, 3), dtype = np.uint8) ar_n_hsv[...,1] = 255 # get colors mag, ang = cv2.cartToPolar(ar_f_Flow[..., 0], ar_f_Flow[..., 1]) ar_n_hsv[...,0] = ang * 180 / np.pi / 2 ar_n_hsv[...,2] = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX) ar_n_bgr = cv2.cvtColor(ar_n_hsv, cv2.COLOR_HSV2BGR) return ar_n_bgr
Example #7
Source File: spfunctions.py From spfeas with MIT License | 6 votes |
def get_mag_ang(img): """ Gets image gradient (magnitude) and orientation (angle) Args: img Returns: Gradient, orientation """ img = np.sqrt(img) gx = cv2.Sobel(np.float32(img), cv2.CV_32F, 1, 0) gy = cv2.Sobel(np.float32(img), cv2.CV_32F, 0, 1) mag, ang = cv2.cartToPolar(gx, gy) return mag, ang, gx, gy
Example #8
Source File: hofm.py From dvt with GNU General Public License v2.0 | 6 votes |
def _make_block_hofm(flow, blocks, mag_buckets, ang_buckets, skutil): mag, ang = cartToPolar(flow[..., 0], flow[..., 1], angleInDegrees=True) mag_digit = digitize(mag, mag_buckets) # mod so 360 falls into first bucket ang_digit = digitize(ang % 360, ang_buckets) mag_blocks = skutil.view_as_blocks(mag_digit, (blocks, blocks)) ang_blocks = skutil.view_as_blocks(ang_digit, (blocks, blocks)) histogram = zeros( (blocks, blocks, len(mag_buckets), len(ang_buckets) - 1) ) for i in range(blocks): for j in range(blocks): for mblock, ablock in zip( mag_blocks[:, :, i, j].flatten(), ang_blocks[:, :, i, j].flatten(), ): histogram[i, j, mblock - 1, ablock - 1] += 1 # normalize by block size (h,w) histogram[i, j, :, :] /= mag_blocks[:, :, i, j].size return histogram
Example #9
Source File: svm_train.py From vehicle-license-plate-recognition with MIT License | 6 votes |
def preprocess_hog(digits): samples = [] for img in digits: gx = cv2.Sobel(img, cv2.CV_32F, 1, 0) gy = cv2.Sobel(img, cv2.CV_32F, 0, 1) mag, ang = cv2.cartToPolar(gx, gy) bin_n = 16 bin = np.int32(bin_n*ang/(2*np.pi)) bin_cells = bin[:10,:10], bin[10:,:10], bin[:10,10:], bin[10:,10:] mag_cells = mag[:10,:10], mag[10:,:10], mag[:10,10:], mag[10:,10:] hists = [np.bincount(b.ravel(), m.ravel(), bin_n) for b, m in zip(bin_cells, mag_cells)] hist = np.hstack(hists) # transform to Hellinger kernel eps = 1e-7 hist /= hist.sum() + eps hist = np.sqrt(hist) hist /= norm(hist) + eps samples.append(hist) return np.float32(samples)
Example #10
Source File: imgproc.py From graph_distillation with Apache License 2.0 | 6 votes |
def proc_oflow(images): h, w = images.shape[-3:-1] processed_images = [] for image in images: hsv = np.zeros((h, w, 3), dtype=np.uint8) hsv[:, :, 0] = 255 hsv[:, :, 1] = 255 mag, ang = cv2.cartToPolar(image[..., 0], image[..., 1]) hsv[..., 0] = ang*180/np.pi/2 hsv[..., 2] = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX) processed_image = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR) processed_images.append(processed_image) return np.stack(processed_images)
Example #11
Source File: digits.py From OpenCV-Python-Tutorial with MIT License | 6 votes |
def preprocess_hog(digits): samples = [] for img in digits: gx = cv2.Sobel(img, cv2.CV_32F, 1, 0) gy = cv2.Sobel(img, cv2.CV_32F, 0, 1) mag, ang = cv2.cartToPolar(gx, gy) bin_n = 16 bin = np.int32(bin_n*ang/(2*np.pi)) bin_cells = bin[:10,:10], bin[10:,:10], bin[:10,10:], bin[10:,10:] mag_cells = mag[:10,:10], mag[10:,:10], mag[:10,10:], mag[10:,10:] hists = [np.bincount(b.ravel(), m.ravel(), bin_n) for b, m in zip(bin_cells, mag_cells)] hist = np.hstack(hists) # transform to Hellinger kernel eps = 1e-7 hist /= hist.sum() + eps hist = np.sqrt(hist) hist /= norm(hist) + eps samples.append(hist) return np.float32(samples)
Example #12
Source File: networks_modified.py From everybody_dance_now_pytorch with GNU Affero General Public License v3.0 | 5 votes |
def flow2im(flow): flow_npy = np.array(flow.detach().cpu().numpy().transpose(1, 2, 0), np.float32) shape = flow_npy.shape[:-1] hsv = np.zeros(shape + (3,), dtype=np.uint8) hsv[..., 2] = 255 mag, ang = cv2.cartToPolar(flow_npy[..., 0], flow_npy[..., 1]) hsv[..., 0] = ang * 180 / np.pi / 2 hsv[..., 1] = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX) bgr = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR) return bgr
Example #13
Source File: util_func.py From sanet_relocal_demo with GNU General Public License v3.0 | 5 votes |
def flow_vis(flow): # Use Hue, Saturation, Value colour model hsv = np.zeros(flow.shape, dtype=np.uint8) hsv[..., 1] = 255 mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1]) hsv[..., 0] = ang * 180 / np.pi / 2 hsv[..., 2] = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX) bgr = cv2.cvtColor(hsv, cv2.COLOR_HSV2RGB) return bgr
Example #14
Source File: dense_optflow.py From snapchat-filters-opencv with MIT License | 5 votes |
def dense_flow(image): global prvs next = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) flow = cv2.calcOpticalFlowFarneback(prvs, next, None, 0.5, 3, 15, 3, 5, 1.2, 0) mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1]) hsv[..., 0] = ang * 180 / np.pi / 2 hsv[..., 2] = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX) image = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR) prvs = next return image
Example #15
Source File: deepmatch.py From videoseg with MIT License | 5 votes |
def run_deepmatch(imname1, imname2): command = os.getenv("HOME") + '/fbcode/_bin/experimental/' + \ 'deeplearning/dpathak/video-processing/deepmatch/deepmatch' call([command, imname1, imname2, '-out', os.getenv("HOME") + '/local/data/trash/tmp.txt', '-downscale', '2']) with open(os.getenv("HOME") + '/local/data/trash/tmp.txt', 'r') as f: lines = f.readlines() lines = [x.strip().split(' ') for x in lines] vals = np.array([[float(y) for y in x] for x in lines]) x = ((vals[:, 0] - 8.) / 16.).astype(int) y = ((vals[:, 1] - 8.) / 16.).astype(int) U = np.zeros((int(np.max(y)) + 1, int(np.max(x)) + 1)) U[(y, x)] = vals[:, 2] - vals[:, 0] V = np.zeros((int(np.max(y)) + 1, int(np.max(x)) + 1)) V[(y, x)] = vals[:, 3] - vals[:, 1] img1 = cv2.imread(imname1) U1 = cv2.resize(U, (img1.shape[1], img1.shape[0])) V1 = cv2.resize(V, (img1.shape[1], img1.shape[0])) mag, ang = cv2.cartToPolar(U1, V1) print(np.max(mag)) hsv = np.zeros_like(img1) hsv[..., 1] = 255 hsv[..., 0] = ang * 180 / np.pi / 2 hsv[..., 2] = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX) bgr = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR) return bgr
Example #16
Source File: epic_flow.py From videoseg with MIT License | 5 votes |
def compute_flow(impath1, impath2, outdir, fbcodepath=os.getenv("HOME") + '/fbcode'): stem = os.path.splitext(os.path.basename(impath1))[0] deepmatch_cmd = os.path.join(fbcodepath, '_bin/experimental/deeplearning/dpathak' + '/video-processing/deepmatch/deepmatch') call([deepmatch_cmd, impath1, impath2, '-out', os.path.join(outdir, stem + '_sparse.txt'), '-downscale', '2']) img1 = cv2.imread(impath1).astype(float) M = np.zeros((img1.shape[0], img1.shape[1]), dtype=np.float32) filt = np.array([[1., -1.]]).reshape((1, -1)) for c in range(3): gx = convolve2d(img1[:, :, c], filt, mode='same') gy = convolve2d(img1[:, :, c], filt.T, mode='same') M = M + gx**2 + gy**2 M = M / np.max(M) with open(os.path.join(outdir, '_edges.bin'), 'w') as f: M.tofile(f) epicflow_command = os.path.join(fbcodepath, '_bin/experimental/deeplearning/dpathak' + '/video-processing/epicflow/epicflow') call([epicflow_command, impath1, impath2, os.path.join(outdir, '_edges.bin'), os.path.join(outdir, stem + '_sparse.txt'), os.path.join(outdir, 'flow.flo')]) flow = read_flo(os.path.join(outdir, 'flow.flo')) hsv = np.zeros_like(img1).astype(np.uint8) hsv[..., 1] = 255 mag, ang = cv2.cartToPolar(flow[..., 0].astype(float), flow[..., 1].astype(float)) hsv[..., 2] = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX) hsv[..., 0] = ang * 180 / np.pi / 2 bgr = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR) cv2.imwrite(os.path.join(outdir, stem + '_flow.png'), bgr)
Example #17
Source File: hogsvm.py From OpenCV-Python-Tutorial with MIT License | 5 votes |
def hog(img): gx = cv2.Sobel(img, cv2.CV_32F, 1, 0) gy = cv2.Sobel(img, cv2.CV_32F, 0, 1) mag, ang = cv2.cartToPolar(gx, gy) bins = np.int32(bin_n*ang/(2*np.pi)) # quantizing binvalues in (0...16) bin_cells = bins[:10,:10], bins[10:,:10], bins[:10,10:], bins[10:,10:] mag_cells = mag[:10,:10], mag[10:,:10], mag[:10,10:], mag[10:,10:] hists = [np.bincount(b.ravel(), m.ravel(), bin_n) for b, m in zip(bin_cells, mag_cells)] hist = np.hstack(hists) # hist is a 64 bit vector return hist ## [hog]
Example #18
Source File: opt_flow.py From Walk-Assistant with GNU General Public License v3.0 | 5 votes |
def get_direction(self, frame1, frame2, show=False): frame1 = cv2.resize(frame1, (self.width, self.height)) frame1 = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY) frame2 = cv2.resize(frame2, (self.width, self.height)) frame2 = cv2.cvtColor(frame2, cv2.COLOR_BGR2GRAY) flow = cv2.calcOpticalFlowFarneback(frame1[self.height_start:self.height_end], frame2[self.height_start:self.height_end], None, 0.5, 3, 15, 1, 5, 1.2, 0) flow_avg = np.median(flow, axis=(0, 1)) # [x, y] move_x = -1 * flow_avg[0] move_y = -1 * flow_avg[1] if show: hsv = np.zeros((self.height_end - self.height_start, self.width, 3)) hsv[...,1] = 255 mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1]) hsv[..., 0] = ang * 180 / np.pi / 2 hsv[..., 2] = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX) bgr = cv2.cvtColor(np.array(hsv).astype(np.uint8), cv2.COLOR_HSV2BGR) cv2.imshow('opt_flow', bgr) if cv2.waitKey(1) & 0xFF == ord('q'): print('User Interrupted') exit(1) return move_x, move_y
Example #19
Source File: 47.2-使用SVM进行-手写数据OCR.py From OpenCV-Python-Tutorial with MIT License | 5 votes |
def hog(img): gx = cv2.Sobel(img, cv2.CV_32F, 1, 0) gy = cv2.Sobel(img, cv2.CV_32F, 0, 1) mag, ang = cv2.cartToPolar(gx, gy) bins = np.int32(bin_n * ang / (2 * np.pi)) # quantizing binvalues in (0...16) bin_cells = bins[:10, :10], bins[10:, :10], bins[:10, 10:], bins[10:, 10:] mag_cells = mag[:10, :10], mag[10:, :10], mag[:10, 10:], mag[10:, 10:] hists = [np.bincount(b.ravel(), m.ravel(), bin_n) for b, m in zip(bin_cells, mag_cells)] hist = np.hstack(hists) # hist is a 64 bit vector return hist # 最后 和前 一样 我们将大图分割成小图。使用每个数字的前 250 个作 为训练数据 # 后 250 个作为测试数据
Example #20
Source File: flow_utils.py From swiftnet with GNU General Public License v3.0 | 5 votes |
def flow2rgb(flow): hsv = np.zeros(list(flow.shape[:-1]) + [3], dtype=np.uint8) hsv[..., 1] = 255 mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1]) hsv[..., 0] = ang * 180 / np.pi / 2 hsv[..., 2] = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX) return cv2.cvtColor(hsv, cv2.COLOR_HSV2RGB)
Example #21
Source File: utils.py From tvnet_pytorch with MIT License | 5 votes |
def save_flow_to_img(flow, h, w, c, name='_result.png'): hsv = np.zeros((h, w, c), dtype=np.uint8) hsv[:, :, 0] = 255 hsv[:, :, 2] = 255 mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1]) hsv[..., 0] = ang * 180 / np.pi / 2 hsv[..., 1] = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX) rgb = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR) res_img_path = os.path.join('result', name) cv2.imwrite(res_img_path, rgb)
Example #22
Source File: video_jpeg_rolls_flow_saliency.py From self-supervision with BSD 3-Clause "New" or "Revised" License | 5 votes |
def extract_optical_flow(fn, n_frames=34): img = dd.image.load(fn) if img.shape != (128*34, 128, 3): return [] frames = np.array_split(img, 34, axis=0) grayscale_frames = [fr.mean(-1) for fr in frames] mags = [] skip_frames = np.random.randint(34 - n_frames + 1) middle_frame = frames[np.random.randint(skip_frames, skip_frames+n_frames)] im0 = grayscale_frames[skip_frames] for f in range(1+skip_frames, 1+skip_frames+n_frames-1): im1 = grayscale_frames[f] flow = cv2.calcOpticalFlowFarneback(im0, im1, None, # flow 0.5, # pyr_scale 3, # levels np.random.randint(3, 20), # winsize 3, #iterations 5, #poly_n 1.2, #poly_sigma 0 # flags ) mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1]) mags.append(mag) im0 = im1 mag = np.sum(mags, 0) mag = mag.clip(min=0) #norm_mag = np.tanh(mag * 10000) norm_mag = (mag - mag.min()) / (mag.max() - mag.min() + 1e-5) outputs = [] outputs.append((middle_frame, norm_mag)) return outputs
Example #23
Source File: video_avi_flow_saliency.py From self-supervision with BSD 3-Clause "New" or "Revised" License | 5 votes |
def extract_optical_flow(fn, times, frames=8, scale_factor=1.0): cap = cv2.VideoCapture(fn) n_frames = cap.get(cv2.CAP_PROP_FRAME_COUNT) outputs = [] if n_frames < frames * 2: return outputs def resize(im): if scale_factor != 1.0: new_size = (int(im.shape[1] * scale_factor), int(im.shape[0] * scale_factor)) return cv2.resize(im, new_size, interpolation=cv2.INTER_LINEAR) else: return im for t in times: cap.set(cv2.CAP_PROP_POS_FRAMES, min(t * n_frames, n_frames - 1 - frames)) ret, frame0 = cap.read() im0 = resize(cv2.cvtColor(frame0, cv2.COLOR_BGR2GRAY)) mags = [] middle_frame = frame0 for f in range(frames - 1): ret, frame1 = cap.read() if f == frames // 2: middle_frame = frame1 im1 = resize(cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)) flow = cv2.calcOpticalFlowFarneback(im0, im1, None, 0.5, 3, 15, 3, 5, 1.2, 0) mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1]) mags.append(mag) im0 = im1 mag = np.sum(mags, 0) mag = mag.clip(min=0) norm_mag = (mag - mag.min()) / (mag.max() - mag.min() + 1e-5) x = middle_frame[..., ::-1].astype(np.float32) / 255 outputs.append((x, norm_mag)) return outputs
Example #24
Source File: opticalFlow.py From Mask-RCNN-Pedestrian-Detection with MIT License | 5 votes |
def denseOpticalFlow(): # use 0 for webcam capturing # cap = cv2.VideoCapture(0) cap = cv2.VideoCapture('test/Pedestrian overpass.mp4') ret, frame1 = cap.read() prvs = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY) hsv = np.zeros_like(frame1) hsv[...,1] = 255 while(1): ret, frame2 = cap.read() next = cv2.cvtColor(frame2,cv2.COLOR_BGR2GRAY) flow = cv2.calcOpticalFlowFarneback(prvs,next, None, 0.5, 3, 15, 3, 5, 1.2, 0) mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1]) hsv[...,0] = ang*180/np.pi/2 hsv[...,2] = cv2.normalize(mag,None,0,255,cv2.NORM_MINMAX) # print(np.sum(mag[100:300, 100:300])) if (np.sum(mag)> 100000): print('motion detected') bgr = cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR) cv2.imshow('frame2',bgr) k = cv2.waitKey(30) & 0xff if k == 27: break elif k == ord('s'): cv2.imwrite('opticalfb.png',frame2) cv2.imwrite('opticalhsv.png',bgr) prvs = next cap.release() cv2.destroyAllWindows()
Example #25
Source File: visualization_utils.py From MOTSFusion with MIT License | 5 votes |
def show_flow(flow): # Use Hue, Saturation, Value colour model hsv = np.zeros((flow.shape[0], flow.shape[1], 3), dtype=np.uint8) hsv[..., 1] = 255 mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1]) hsv[..., 0] = ang * 180 / np.pi / 2 hsv[..., 2] = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX) bgr = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR) plt.imshow(bgr) plt.show()
Example #26
Source File: video_avi_flow.py From self-supervision with BSD 3-Clause "New" or "Revised" License | 4 votes |
def extract_optical_flow(fn, times, frames=8, scale_factor=1.0): cap = cv2.VideoCapture(fn) if not cap.isOpened(): return [] n_frames = cap.get(cv2.CAP_PROP_FRAME_COUNT) outputs = [] if n_frames < frames * 2: return outputs def resize(im): if scale_factor != 1.0: new_size = (int(im.shape[1] * scale_factor), int(im.shape[0] * scale_factor)) return cv2.resize(im, new_size, interpolation=cv2.INTER_LINEAR) else: return im for t in times: cap.set(cv2.CAP_PROP_POS_FRAMES, min(t * n_frames, n_frames - 1 - frames)) ret, frame0 = cap.read() im0 = resize(cv2.cvtColor(frame0, cv2.COLOR_BGR2GRAY)) mags = [] middle_frame = frame0 flows = [] for f in range(frames - 1): ret, frame1 = cap.read() if f == frames // 2: middle_frame = frame1 im1 = resize(cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)) flow = cv2.calcOpticalFlowFarneback(im0, im1, None, 0.5, # py_scale 8, # levels int(40 * scale_factor), # winsize 10, # iterations 5, # poly_n 1.1, # poly_sigma cv2.OPTFLOW_FARNEBACK_GAUSSIAN) #mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1]) #mags.append(mag) flows.append(flow) im0 = im1 flow = (np.mean(flows, 0) / 100).clip(-1, 1) #flow = np.mean(flows, 0) #flow /= (flow.mean() * 5 + 1e-5) #flow = flow.clip(-1, 1) #flows = flows / (np.mean(flows, 0, keepdims=True) + 1e-5) x = middle_frame[..., ::-1].astype(np.float32) / 255 outputs.append((x, flow)) return outputs
Example #27
Source File: util.py From deep-smoke-machine with BSD 3-Clause "New" or "Revised" License | 4 votes |
def write_video_summary(cm, file_name, p_frame, p_save, global_step=None, fps=12): check_and_create_dir(p_save) for u in cm: for v in cm[u]: tag = "true_%d_prediction_%d" % (u, v) if global_step is not None: tag += "_step_%d" % global_step grid_x = [] grid_y = [] items = cm[u][v] for idx in items: frames = np.load(p_frame + file_name[idx] + ".npy") shape = frames.shape if shape[3] == 2: # this means that the file contains optical flow frames (x and y) tmp = np.zeros((shape[0], shape[1], shape[2], 3), dtype=np.float64) for i in range(shape[0]): # To visualize the flow, we need to first convert flow x and y to hsv flow_x = frames[i, :, :, 0] flow_y = frames[i, :, :, 1] magnitude, angle = cv.cartToPolar(flow_x / 255, flow_y / 255, angleInDegrees=True) tmp[i, :, :, 0] = angle # channel 0 represents direction tmp[i, :, :, 1] = 1 # channel 1 represents saturation tmp[i, :, :, 2] = magnitude # channel 2 represents magnitude # Convert the hsv to rgb tmp[i, :, :, :] = cv.cvtColor(tmp[i, :, :, :].astype(np.float32), cv.COLOR_HSV2RGB) frames = tmp else: # this means that the file contains rgb frames frames = frames / 255 # tensorboard needs the range between 0 and 1 if frames.dtype != np.uint8: frames = (frames * 255).astype(np.uint8) frames = ImageSequenceClip([I for I in frames], fps=12) grid_x.append(frames) if len(grid_x) == 8: grid_y.append(grid_x) grid_x = [] if len(grid_x) != 0: grid_y.append(grid_x) if len(grid_y) > 1 and len(grid_y[-1]) != len(grid_y[-2]): grid_y = grid_y[:-1] try: clips_array(grid_y).write_videofile(p_save + tag + ".mp4") except Exception as ex: for a in grid_y: print(len(a)) print(ex)
Example #28
Source File: saliency.py From OpenCV-Computer-Vision-Projects-with-Python with MIT License | 4 votes |
def _get_channel_sal_magn(self, channel): """Returns the log-magnitude of the Fourier spectrum This method calculates the log-magnitude of the Fourier spectrum of a single-channel image. This image could be a regular grayscale image, or a single color channel of an RGB image. :param channel: single-channel input image :returns: log-magnitude of Fourier spectrum """ # do FFT and get log-spectrum if self.use_numpy_fft: img_dft = np.fft.fft2(channel) magnitude, angle = cv2.cartToPolar(np.real(img_dft), np.imag(img_dft)) else: img_dft = cv2.dft(np.float32(channel), flags=cv2.DFT_COMPLEX_OUTPUT) magnitude, angle = cv2.cartToPolar(img_dft[:, :, 0], img_dft[:, :, 1]) # get log amplitude log_ampl = np.log10(magnitude.clip(min=1e-9)) # blur log amplitude with avg filter log_ampl_blur = cv2.blur(log_ampl, (3, 3)) # residual residual = np.exp(log_ampl - log_ampl_blur) # back to cartesian frequency domain if self.use_numpy_fft: real_part, imag_part = cv2.polarToCart(residual, angle) img_combined = np.fft.ifft2(real_part + 1j*imag_part) magnitude, _ = cv2.cartToPolar(np.real(img_combined), np.imag(img_combined)) else: img_dft[:, :, 0], img_dft[:, :, 1] = cv2.polarToCart(residual, angle) img_combined = cv2.idft(img_dft) magnitude, _ = cv2.cartToPolar(img_combined[:, :, 0], img_combined[:, :, 1]) return magnitude