光流算法:关于OpenCV读写middlebury网站给定的光流的代码
Middlebury是每个研究光流算法的人不可能不使用的网站,Middlebury提供了许多标准的测试库,这极大地推进了光流算法的进展。Middlebury提供的标准库,其计算出的光流保存在后缀名为.flo的文件中,Middlebury本身也提供了读取.flo文件中C++源码和Matlab源码。尽管如此,将源码写成与OpenCV结合的形式是我们更期望的,以下我写的读写.flo文件的源码。相对于Middlebury给定的源码,更简洁易懂。
#include "CCC/COMCV.h"
#include <fstream>
void writeFlow(Mat_<Point2f> &flow, string outpath)
{
ofstream out(outpath, ios_base::binary);
string tag = "PIEH";//文件标志
out.write(tag.c_str(), tag.size());
out.write((const char*)(&flow.cols), sizeof(int));//行数
out.write((const char*)(&flow.rows), sizeof(int));//列数
for (int i = 0; i < flow.rows; i++)
for (int j = 0; j < flow.cols; j++)
{
out.write((const char*)(&flow(i, j).x), sizeof(float));
out.write((const char*)(&flow(i, j).y), sizeof(float));
} out.close();
}
void readFlow(Mat_<Point2f> &flow, string path)
{
ifstream in(path, ios_base::binary);
string tag(4, '0');//文件标志
in.read((char*)tag.data(), 4);
int rows, cols;
in.read((char*)(&cols), sizeof(int));//行数
in.read((char*)(&rows), sizeof(int));//列数
flow.create(rows, cols);
for (int i = 0; i < flow.rows; i++)
for (int j = 0; j < flow.cols; j++)
{
in.read((char*)(&(flow(i, j).x)), sizeof(float));
in.read((char*)(&(flow(i, j).y)), sizeof(float));
}
in.close();
}
光流算法:关于OpenCV读写middlebury网站的给定的光流的代码
光流算法:关于OpenCV读写middlebury网站给定的光流的代码的更多相关文章
- 立体匹配:关于OpenCV读写middlebury网站的给定的视差并恢复三维场景的代码
Middlebury是每个研究立体匹配算法的人不可能不使用的网站,Middlebury提供了许多标准的测试库,这极大地推进了立体匹配算法的进展.Middlebury提供的标准库,其计算出的视差保存在后 ...
- 立体匹配:关于用OpenCV彩色化middlebury网站给定的视差
#include "XYZ.h" void readPFM(Mat_<float> &disp, float &scale, string path) ...
- LK光流算法:提高计算精度和增加搜索范围
LK光流算法:提高计算精度和增加搜索范围 关于LK算法的基本理论,见:http://www.cnblogs.com/dzyBK/p/4960630.html 这里主要阐述如何提高LK算法的计算精度和在 ...
- Lucas–Kanade光流算法学习
Lucas–Kanade光流算法是一种两帧差分的光流估计算法.它由Bruce D. Lucas 和 Takeo Kanade提出. 光流(Optical flow or optic f ...
- 光流算法:Brox光流的OpenCV源码解析
OpenCV中DeepFlow代码其实是Brox光流,而非真正的DeepFlow光流,在将近一个月的研究.移植及优化过程中,对Brox光流有了较深刻的认识.我对OpenCV中源码进行了详细的分析,并以 ...
- HS光流算法详解<转载>
HS 光流法详解 前言 本文较为详细地介绍了一种经典的光流法 - HS 光流法. 光流法简介 当人的眼睛与被观察物体发生相对运动时,物体的影像在视网膜平面上形成一系列连续变化的图像,这一系列变化的图像 ...
- 光流算法:Brox算法(转载)
参考论文:1. High Accuracy Optical Flow Estimation Based on a Theory for Warping, Thomas Box, ECCV20042. ...
- 光流算法:Brox算法
参考论文:1. High Accuracy Optical Flow Estimation Based on a Theory for Warping, Thomas Box, ECCV20042. ...
- LK光流算法的三个假设
在实际过程中采用 Lucas-Kanade 光流算法跟踪运动物体特征点的时候,一个很明显的特点是LK算法(包括其他光流算法)不能计算"大运动",加上金子塔的方法稍微好点. 这是什么 ...
随机推荐
- 安装max plugin wizard
参考:http://liweizhaolili.blog.163.com/blog/static/162307442013117731953/
- Android视录视频示例
这几天需要搞一个Android视频通话功能,从最简单的视频录制开始,网上例子大多不完整.下面的示例参考过别人的代码,还是拿出来给需要的朋友分享下. Activity类:VideoActivity pa ...
- Deferred和Promise之间有什么区别呢?
一个promise就是一个由异步函数返回的对象. deferred对象就是jQuery的回调函数解决方案. 总结 jQuery 的ajax 就是返回一个promise 对象,里面含有done(), f ...
- 解决 nginx https反向代理http协议 302重定向localtion到http问题
location /rest { #proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remot ...
- 怎么利用WinPE恢复系统注册表?
我们的电脑总是会遇到各种各样的问题,最好用的方式就是电脑重装,重装系统的方式有很多,光盘安装.硬盘安装.U盘安装等.但是碰到电脑系统瘫痪无法启动,甚至连安全模式也进不了的时候,你的光盘.硬盘就没有用处 ...
- c# string 数组转 list
string str = "1,11,121,131"; var arr = str.Split(','); List<string> list = new List& ...
- 【转】双机高可用、负载均衡、MySQL(读写分离、主从自动切换)架构设计
架构简介 前几天网友来信说帮忙实现这样一个架构:只有两台机器,需要实现其中一台死机之后另一台能接管这台机器的服务,并且在两台机器正常服务时,两台机器都能用上.于是设计了如下的架构.此架构主要是由kee ...
- C++的头文件和实现文件分别写什么
在C++编程过程中,随着项目的越来越大,代码也会越来越多,并且难以管理和分析.于是,在C++中就要分出了头(.h)文件和实现(.cpp)文件,并且也有了Package的概念. 对于以C起步,C#作为& ...
- android学习笔记八——SeekBar
SeekBar——拖动条 拖动条(SeekBar)组件与ProgressBar水平形式的显示进度条类似,不过其最大的区别在于,拖动条可以由用户自己进行手工的调节,例如当用户需要调整播放器音量或者电影的 ...
- 128. Longest Consecutive Sequence
Given an unsorted array of integers, find the length of the longest consecutive elements sequence. F ...