python - 速度矢量(光流等)到 RGB 颜色转换
问题描述
我已经计算了一个光流,我希望将其转换为图像。
按照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_MINMAX)
bgr = cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR)
cv2.imshow('optical flow',bgr)
我能够做到这一点,但是 RGB 图像不像最近的论文那样平滑和连续:例如 T. Brox 的 High Accuracy Optical Flow Estimation Based on a Theory for Warping 或 FlowNet 看起来很平滑,如下所示的连续区域:https ://www.youtube.com/watch?v=JSzUdVBmQP4
有什么建议可以让我实现这种转换而不是我在做什么(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}))
谢谢你。
解决方案
推荐阅读
- reactjs - 在反应中处理下拉输入建议列表的模糊单击和焦点事件
- apache-zookeeper - Zookeeper 是否运行与标准端口 2181 的使用有关?
- python - 如何在 PySpark 中调用 python 函数?
- c - 当我将下一张卡片分配给它时,为什么指针最后没有在主函数中改变?
- sql - 将 float 转换为 varchar 并在 Excel 导入中保留前面的零
- python - Python Bot 自动更正
- c# - 电子邮件工作正常,但同时收到两封电子邮件?
- gremlin - gremlin 服务器中 TinkerGraph 的容量是多少?
- c# - DataContext 连接到数据库,但表引用为空。为什么?
- python - 在 python 的 pymysql 中,我可以保留一个连接对象以供下次使用吗?