没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
OpenCV cv.Mat与与.txt文件数据的读写操作文件数据的读写操作
主要介绍了OpenCV cv.Mat 与 .txt 文件数据的读写操作,现在分享给大家,也给大家做个参考
本篇文章主要介绍了OpenCV cv.Mat 与 .txt 文件数据的读写操作,小编觉得挺不错的,现在分享给大家。
1、按OpenCV格式实现的 .txt 文件读写
可以用 cvSave 和 cvLoad 实现,格式和 .xml/.yml 的差不多,不过如果专用与 OpenCV 的数据读写,还是用 .xml/.yml 文件
格式较好,我比较喜欢 .yml 格式,可读性非常棒。
用 cvSave 和 cvLoad 读写 .txt 文件,其实现方式和数据格式与 .yml 文件基本一致。
例如:cvSave("camera_matrix.txt",camera_matrix); //保存了 camera_matrix 的数组头以及和它所指的data(类似yml形式的
文件)
2、导入/导出其它程序的 .txt 文件数据
可以用常规的 sprintf_s 和 fprintf_s 来实现,不过效率比较低,这里介绍一种快捷易用的方法,利用了 std 的 steam 和
vector。
#include <iostream>
#include <fstream>
#include <iterator>
#include <vector>
using namespace std;
/*----------------------------
* 功能 : 将 cv::Mat 数据写入到 .txt 文件
*----------------------------
* 函数 : WriteData
* 访问 : public
* 返回 : -1:打开文件失败;0:写入数据成功;1:矩阵为空
*
* 参数 : fileName [in] 文件名
* 参数 : matData [in] 矩阵数据
*/
int WriteData(string fileName, cv::Mat& matData)
{
int retVal = 0;
// 打开文件
ofstream outFile(fileName.c_str(), ios_base::out); //按新建或覆盖方式写入
if (!outFile.is_open())
{
cout << "打开文件失败" << endl;
retVal = -1;
return (retVal);
}
// 检查矩阵是否为空
if (matData.empty())
{
cout << "矩阵为空" << endl;
retVal = 1;
return (retVal);
}
// 写入数据
for (int r = 0; r < matData.rows; r++)
{
for (int c = 0; c < matData.cols; c++)
{
uchar data = matData.at<uchar>(r,c); //读取数据,at<type> - type 是矩阵元素的具体数据格式
outFile << data << " " ; //每列数据用 tab 隔开
}
outFile << endl; //换行
}
return (retVal);
}
/*----------------------------
* 功能 : 从 .txt 文件中读入数据,保存到 cv::Mat 矩阵
* - 默认按 float 格式读入数据,
* - 如果没有指定矩阵的行、列和通道数,则输出的矩阵是单通道、N 行 1 列的
资源评论
- 杜拉拉到杜拉拉2023-07-27这个文件介绍了OpenCV中cv.Mat与.txt文件的读写操作,很实用。
- 萱呀2023-07-27通过这个文件,我学会了如何将图像数据保存到.txt文件中,非常实用。
- lirumei2023-07-27这篇文章应该是很多OpenCV初学者必备的指南之一,内容很详细。
- 山林公子2023-07-27作者以简明的语言清晰地展示了如何使用OpenCV处理图像数据,非常实用。
- 实在想不出来了2023-07-27这篇文章让我对OpenCV中的cv.Mat与.txt文件操作有了更深入的了解,很棒。
weixin_38625184
- 粉丝: 4
- 资源: 947
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功