Python 速度矢量(光流等)到RGB颜色转换
我已经计算了光流,我想把它转换成图像 以下是opencv2的教程:Python 速度矢量(光流等)到RGB颜色转换,python,matlab,rgb,motion,opticalflow,Python,Matlab,Rgb,Motion,Opticalflow,我已经计算了光流,我想把它转换成图像 以下是opencv2的教程: mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1]) hsv = np.zeros_like(cv2.imread(img_path)) hsv[...,1] = 255 hsv[...,0] = ang*180/np.pi/2 hsv[...,2] = cv2.normalize(mag,None,0,255,cv2.NORM_MINM
mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1])
hsv = np.zeros_like(cv2.imread(img_path))
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)
cv2.imshow('optical flow',bgr)
我能够做到这一点,但是RGB图像不像最近论文中的图像那样平滑和连续:例如T.Brox基于翘曲或流网理论的高精度光流估计,看起来像平滑、连续的区域,如图所示:
有什么建议可以代替我正在做的事情来实现这种转换(opencv教程)
我找到了一段Matlab脚本,它可能实现了后一个,但我不明白转换是如何进行的。有人能解释一下吗
flow = mex_OF(double(im1),double(im2));
scale = 16;
mag = sqrt(flow(:,:,1).^2+flow(:,:,2).^2)*scale+128;
mag = min(mag, 255);
flow = flow*scale+128;
flow = min(flow,255);
flow = max(flow,0);
[x,y,z] = size(flow);
flow_image = zeros(x,y,3);
flow_image(:,:,1:2) = flow;
flow_image(:,:,3) = mag;
imwrite(flow_image./255,sprintf('%s/%s/flow_image_%s',save_base,video,frames{k}))
多谢各位