网上有很多都是借用imageLib 进行实现,并不适合用来进行开发使用,这里完全使用python进行实现

1. 光流图像转numpy

import numpy as npdef load_flow_to_numpy(path):with open(path, 'rb') as f:magic = np.fromfile(f, np.float32, count=1)assert (202021.25 == magic), 'Magic number incorrect. Invalid .flo file'h = np.fromfile(f, np.int32, count=1)[0]w = np.fromfile(f, np.int32, count=1)[0]data = np.fromfile(f, np.float32, count=2 * w * h)data2D = np.resize(data, (w, h, 2))return data2Dif __name__ == '__main__':flo = load_flow_to_numpy('frame_0001.flo')print(flo.shape)  # (436, 1024, 2)

最终的输出结果为二维图像,分别代表着图像上每一个像素点之间的x和y坐标像素的偏移量

2. 光流图像转图像

import numpy as np
from matplotlib.colors import hsv_to_rgb
import matplotlib.pyplot as pltdef load_flow_to_numpy(path):with open(path, 'rb') as f:magic = np.fromfile(f, np.float32, count=1)assert (202021.25 == magic), 'Magic number incorrect. Invalid .flo file'h = np.fromfile(f, np.int32, count=1)[0]w = np.fromfile(f, np.int32, count=1)[0]data = np.fromfile(f, np.float32, count=2 * w * h)data2D = np.resize(data, (w, h, 2))return data2Ddef load_flow_to_png(path):flow = load_flow_to_numpy(path)image = flow_to_image(flow)return imagedef flow_to_image(flow, max_flow=256):if max_flow is not None:max_flow = max(max_flow, 1.)else:max_flow = np.max(flow)n = 8u, v = flow[:, :, 0], flow[:, :, 1]mag = np.sqrt(np.square(u) + np.square(v))angle = np.arctan2(v, u)im_h = np.mod(angle / (2 * np.pi) + 1, 1)im_s = np.clip(mag * n / max_flow, a_min=0, a_max=1)im_v = np.clip(n - im_s, a_min=0, a_max=1)im = hsv_to_rgb(np.stack([im_h, im_s, im_v], 2))return (im * 255).astype(np.uint8)if __name__ == '__main__':image = load_flow_to_png('frame_0001.flo')plt.imshow(image)plt.show()

最终结果就是一张转换以后的图

剩余的转换关系以此类推就可以啦

光流文件(.flo),numpy,图像(.png)相互转换——完全python实现相关推荐

  1. 光流文件(.flo)转图像

    一 光流文件转图像的方法 光流的文件一般是以.flo格式文件保存的,需要转换成.png等图片格式直观显示.简单得记录操作步骤.测试环境:ubuntu16.04系统,windows系统应该类似,无非就是 ...

  2. 光流文件(.flo)转图片(.png)

    下载光流文件转图片格式文件flow-code. http://download.csdn.net/download/qq_20514449/10174848 按照README.txt文件中的步骤进行编 ...

  3. .flo光流文件转换为png图片

    备注:该程序只支持将光流文件转换为png, pgm/ppm,其他图片格式不支持. 流程: 在http://vision.middlebury.edu/flow/submit/ 下载flow-code. ...

  4. 使用C++实现YUV格式图像与RGB格式图像之间相互转换

    使用C++实现YUV格式图像与RGB格式图像之间相互转换 一.RGB与YUV转换公式 1.RGB转YUV 1)RGB转换亮度与色差信号公试: 2)归一化为YUV的转化公试为: 2.YUV转RGB 二. ...

  5. 图像 存储csv_matplotlib基于数据文件绘制其图像

    先前,我们已经介绍过 matplotlib 第三方绘图库的基本操作方法. 这里,我们将介绍如何通过读取文件中的数据来绘制其图像的操作方法. 基本绘制方法 假设要绘制的数据存储在名为 sample.tx ...

  6. list,numpy,tensor之间相互转换的方法

    list,numpy,tensor之间相互转换的方法: a=[[1,2],[3,4]]#list print(a) b=np.array(a)#list->numpy print(b) c=to ...

  7. python opencv imread()函数 (从文件加载图像)

    def imread(filename, flags=None): # real signature unknown; restored from __doc__"""i ...

  8. python读取大文件内存不够_大型CSV文件(numpy)上的Python内存不足

    正如其他人所提到的,对于一个很大的文件,最好不进行迭代. 但是,出于各种原因,您通常确实希望将整个内容存储在内存中. genfromtxt效率要低得多loadtxt(尽管它可以处理丢失的数据,而效率更 ...

  9. OpenCV图像处理(1)——指定文件夹写入图像

    文件夹写入图像 imwrite("./111/maoqiubiaozhu_" + std::to_string(i) + ".bmp", src);//在项目目 ...

最新文章

  1. 超级有意思的代码注释
  2. 第一次用写一个3d轮播
  3. (转)javabean是什么和总结javabean的两种使用方式
  4. 对团队建设与管理的几点看法
  5. SVN使用MySQL验证用户名密码(HTTP)
  6. 不使用任何路由协议使3台路由器通信
  7. 【Networking】容器网络大观 SDN 资料汇总
  8. 微服务架构 vs SOA架构
  9. 数学分析原理 定理 6.5
  10. bootstrap.min.css和bootstrap.min.js以及bootstrap.bundle.min.js下载,jquery各版本下载
  11. java开发的程序怎么用_java安装后怎么使用?第一次编写java程序
  12. tf2多种方式对图像数据集进行预处理
  13. DH参数(Denavit-Hartenberg parameters)
  14. php美颜滤镜,新手入门看这里,BeautifyFace美颜滤镜Demo中文注释
  15. linux下自动更换壁纸软件,适用于Ubuntu 18.04的4款最佳壁纸自动切换软件
  16. 一文掌握差模信号、共模信号、共模抑制比的概念
  17. ANN(人工神经网络)基础知识
  18. 【知识点】单片机USB转TTL模块的相关知识
  19. 你是在独立思考,还是在被洗脑?
  20. 东大19春计算机基础,东大19春学期《计算机基础》在线作业3标准答案.doc

热门文章

  1. “文件创建错误-参数错误”解决办法
  2. 吴恩达深度学习第一课--第二周神经网络基础作业上正反向传播推导
  3. 在Follow5 开围脖了
  4. 【Java】税率计算器非if版
  5. 传说中的AutoCAD公司 - 欧特克(Autodesk)招聘开发顾问-上海或北京
  6. 如何判断网站使用的操作系统
  7. CSS div内文字溢出部分隐藏显示...省略号
  8. PXI知多少?—PXI背景及PXI机箱
  9. 今天你对我爱搭不理,明天我让你高攀不起
  10. 随机森林模型sklearn_Sklearn_随机森林