24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2327  |  回复: 18
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

lyw8120

银虫 (正式写手)

[求助] 读取多个txt文件

各位大侠,

我需要读取一个文件夹下的全部txt文件,将它们存储在一个数组中。目的在于计算这个文件的均值(这些文件都是图像数据,想求它们的均值),并将所得的均值分别与这些图像比较 (比较做个减法)求出这些图像中固定不变的点,然后移除它们。

我不知道如何做,这些必须在c++中完成。

谢谢了。
回复此楼
Life is good,life is fair,life is just.Just trust yourself
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
jjdg(金币+1): 感谢参与 2012-02-17 02:00:40
lyw8120(金币+2): 2012-02-19 16:42:07
lyw8120(金币+5): 2012-02-19 16:42:21
C++里面实现的话,有几个细节问题要处理:
1. 每个数据文件的格式(矩阵大小)都必须是一样的;
2. 文件夹下面的文件有几个,动态处理,还是静态的手动填写入程序代码;
3. 要是文件个数过多,那就不能把文件内容一次性读取进内存。

估计写写需要3-4个小时吧。

最好,文件数据大小一致,每次读取一个,做加法,读取完成后,做平均,然后再跟原文件数据做大小比较(“相等”的定义需要一个浮点数精度)。
很女子很弓虽大
7楼2012-02-16 18:36:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

jjdg(金币+1): 感谢参与 2012-02-17 02:00:33
引用回帖:
7楼: Originally posted by lurencyj at 2012-02-16 18:36:23:
C++里面实现的话,有几个细节问题要处理:
1. 每个数据文件的格式(矩阵大小)都必须是一样的;
2. 文件夹下面的文件有几个,动态处理,还是静态的手动填写入程序代码;
3. 要是文件个数过多,那就不能把文件内 ...

在linux下的话,可以简单的做一个文件名列表作为c++程序的输入参数。

dir *.dat` > datafiles

./cpp_exe "datafiles"
很女子很弓虽大
8楼2012-02-16 18:41:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

【答案】应助回帖

lyw8120(金币+5): 2012-02-21 22:08:56
jjdg(金币+1): 感谢应助 2012-02-22 00:48:53
imread 函数, 官网online document 上有tutorial的例子
很女子很弓虽大
13楼2012-02-21 21:14:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

jjdg(金币+1): 感谢应助 2012-02-22 00:48:59
引用回帖:
4楼: Originally posted by lyw8120 at 2012-01-25 18:19:26:
很简练,这样能实现这些图像数据的求均值并比较么?能否具体点?

awk下面确实可以作平均计算。。。。。
很女子很弓虽大
14楼2012-02-21 21:15:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

【答案】应助回帖

jjdg(金币+1): 感谢应助 2012-02-22 00:49:07
lyw8120(金币+5): 谢谢,你说的是个方法,可以这些不在是我的问题,我已经用C++解决了。我的问题是如何在opencv显示这些图像,因为图像的数据是文本,图像的信息(大小,深度,位数)在另一个文件里。所以难以实现。我现在正准备编写一个C++代码读取这些信息。用opencv的图形界面显示我的图像。 2012-02-22 06:29:33
引用回帖:
15楼: Originally posted by lyw8120 at 2012-02-21 22:10:32:
imread 或cvloadimage只能读取图像,不是数据。
我的数据特殊,没有图像头文件,无法将相应的图像信息读入。

楼主为什么不用matlab或者Gnu octave试试呢?

linux下面写个octave 脚本(类似于matlab),很容易搞定的。

我粗粗的写了一点test.m :
CODE:
#!/usr/bin/octave -qf

fileList = glob("*.mat");  % 所有的mat文本文件 列表
dimX = 500;
dimY = 500;

TotalMat = zeros(dirX,dimY);

% 算平均
for n = 1:size(fileList, 1)
       dataTemp = load( fileList{n, 1});  % 读取文本内容
       TotalMat = TotalMat + dataTemp;
end

TotalMat = TotalMat / size(fileList, 1);

% 作比较
for n = 1:size(fileList, 1)
       dataTemp = load( fileList{n, 1});  % 读取文本内容
       % 作比较   save('blabla.dat', 'blabla');
end

save('final.dat', 'TotalMat');

很女子很弓虽大
16楼2012-02-21 23:56:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★
jjdg(金币+1): 感谢应助 2012-02-22 00:49:12
lyw8120(金币+4): 2012-03-14 01:18:55
[quote]16楼: Originally posted by lurencyj at 2012-02-21 23:56:31:
楼主为什么不用matlab或者Gnu octave试试呢?

linux下面写个octave 脚本(类似于matlab),很容易搞定的。

我粗粗的写了一点test.m :
CODE:
#!/usr/bin/octave -qf

fileList = glob("*.m ... [/quote]


[code]chmod 700 test.m

权限。。。
很女子很弓虽大
17楼2012-02-21 23:57:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

【答案】应助回帖

jjdg(金币+1): 感谢应助 2012-02-22 00:49:19
前面写的怎么乱了呢。。。

再写。。。

修改test.m权限:  chmod 700 test.m
最后运行:   ./test.m
很女子很弓虽大
18楼2012-02-21 23:59:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lyw8120 的主题更新
信息提示
请填处理意见