光流文件(.flo),numpy,图像(.png)相互转换——完全python实现
网上有很多都是借用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实现相关推荐
- 光流文件(.flo)转图像
一 光流文件转图像的方法 光流的文件一般是以.flo格式文件保存的,需要转换成.png等图片格式直观显示.简单得记录操作步骤.测试环境:ubuntu16.04系统,windows系统应该类似,无非就是 ...
- 光流文件(.flo)转图片(.png)
下载光流文件转图片格式文件flow-code. http://download.csdn.net/download/qq_20514449/10174848 按照README.txt文件中的步骤进行编 ...
- .flo光流文件转换为png图片
备注:该程序只支持将光流文件转换为png, pgm/ppm,其他图片格式不支持. 流程: 在http://vision.middlebury.edu/flow/submit/ 下载flow-code. ...
- 使用C++实现YUV格式图像与RGB格式图像之间相互转换
使用C++实现YUV格式图像与RGB格式图像之间相互转换 一.RGB与YUV转换公式 1.RGB转YUV 1)RGB转换亮度与色差信号公试: 2)归一化为YUV的转化公试为: 2.YUV转RGB 二. ...
- 图像 存储csv_matplotlib基于数据文件绘制其图像
先前,我们已经介绍过 matplotlib 第三方绘图库的基本操作方法. 这里,我们将介绍如何通过读取文件中的数据来绘制其图像的操作方法. 基本绘制方法 假设要绘制的数据存储在名为 sample.tx ...
- list,numpy,tensor之间相互转换的方法
list,numpy,tensor之间相互转换的方法: a=[[1,2],[3,4]]#list print(a) b=np.array(a)#list->numpy print(b) c=to ...
- python opencv imread()函数 (从文件加载图像)
def imread(filename, flags=None): # real signature unknown; restored from __doc__"""i ...
- python读取大文件内存不够_大型CSV文件(numpy)上的Python内存不足
正如其他人所提到的,对于一个很大的文件,最好不进行迭代. 但是,出于各种原因,您通常确实希望将整个内容存储在内存中. genfromtxt效率要低得多loadtxt(尽管它可以处理丢失的数据,而效率更 ...
- OpenCV图像处理(1)——指定文件夹写入图像
文件夹写入图像 imwrite("./111/maoqiubiaozhu_" + std::to_string(i) + ".bmp", src);//在项目目 ...
最新文章
- 超级有意思的代码注释
- 第一次用写一个3d轮播
- (转)javabean是什么和总结javabean的两种使用方式
- 对团队建设与管理的几点看法
- SVN使用MySQL验证用户名密码(HTTP)
- 不使用任何路由协议使3台路由器通信
- 【Networking】容器网络大观 SDN 资料汇总
- 微服务架构 vs SOA架构
- 数学分析原理 定理 6.5
- bootstrap.min.css和bootstrap.min.js以及bootstrap.bundle.min.js下载,jquery各版本下载
- java开发的程序怎么用_java安装后怎么使用?第一次编写java程序
- tf2多种方式对图像数据集进行预处理
- DH参数(Denavit-Hartenberg parameters)
- php美颜滤镜,新手入门看这里,BeautifyFace美颜滤镜Demo中文注释
- linux下自动更换壁纸软件,适用于Ubuntu 18.04的4款最佳壁纸自动切换软件
- 一文掌握差模信号、共模信号、共模抑制比的概念
- ANN(人工神经网络)基础知识
- 【知识点】单片机USB转TTL模块的相关知识
- 你是在独立思考,还是在被洗脑?
- 东大19春计算机基础,东大19春学期《计算机基础》在线作业3标准答案.doc