如何将opencv的处理结果保存由matlab分析
2013-01-14 18:02
686 查看
如何将视差数据保存为 txt 数据文件以便在 Matlab 中读取分析?
由于OpenCV本身只支持 xml、yml 的数据文件读写功能,并且其xml文件与构建网页数据所用的xml文件格式不一致,在Matlab中无法读取。我们可以通过以下方式将视差数据保存为txt文件,再导入到Matlab中。
相应的Matlab代码为:
由于OpenCV本身只支持 xml、yml 的数据文件读写功能,并且其xml文件与构建网页数据所用的xml文件格式不一致,在Matlab中无法读取。我们可以通过以下方式将视差数据保存为txt文件,再导入到Matlab中。
void saveDisp(const char* filename, const Mat& mat) { FILE* fp = fopen(filename, "wt"); fprintf(fp, "%02d/n", mat.rows); fprintf(fp, "%02d/n", mat.cols); for(int y = 0; y < mat.rows; y++) { for(int x = 0; x < mat.cols; x++) { short disp = mat.at<short>(y, x); // 这里视差矩阵是CV_16S 格式的,故用 short 类型读取 fprintf(fp, "%d/n", disp); // 若视差矩阵是 CV_32F 格式,则用 float 类型读取 } } fclose(fp); }
相应的Matlab代码为:
function img = txt2img(filename) data = importdata(filename); r = data(1); % 行数 c = data(2); % 列数 disp = data(3:end); % 视差 vmin = min(disp); vmax = max(disp); disp = reshape(disp, [c,r])'; % 将列向量形式的 disp 重构为 矩阵形式 % OpenCV 是行扫描存储图像,Matlab 是列扫描存储图像 % 故对 disp 的重新排列是首先变成 c 行 r 列的矩阵,然后再转置回 r 行 c 列 img = uint8( 255 * ( disp - vmin ) / ( vmax - vmin ) ); mesh(disp); set(gca,'YDir','reverse'); % 通过 mesh 方式绘图时,需倒置 Y 轴方向 axis tight; % 使坐标轴显示范围与数据范围相贴合,去除空白显示区
相关文章推荐
- 如何将opencv的处理结果保存由matlab分析
- 【matlab】如何产生特定格式的随机数,并保存结果
- 将matlab处理结果保存为图像文件
- 如何将spark streaming处理结果保存到关系型数据库中
- 如何将spark streaming处理结果保存到关系型数据库中
- 基于Qt与OpenCV的图片读取、保存,并利用Canny进行简单的边缘处理结果显示
- 如何使用Erdas将处理结果保存为tif格式
- 如何将视差数据保存为 txt 数据文件以便在 Matlab 中读取分析?
- opencv图像处理1--IPlImage结构分析
- Matlab图像处理——保存图像方法大全
- Matlab BMP图像如何能运行在处理RAW图像程序中
- 询问用户是哪个年级的同学,对输入的数据进行保存,将结果显示在屏幕上。要求合法年级为1,2,3.自定义异常类GradeExceptio,对输入非法的情况进行异常处理。
- SSAS-数据挖掘(聚类法)如何分析结果
- 图像处理(Matlab)-再次学习如何使用Matlab
- matlab如何一张张按顺序保存图片
- python 读取、保存、二值化、灰度化图片+opencv处理图片的方法
- Django ====> (转)Django如何使用request和response对象 Django结构及处理流程分析
- [置顶] 如何在c++ / opencv 中调用matlab 的图像数据
- Matlab数据分析练习-平滑处理
- MFC多文档中opencv处理图像打开、保存