当前位置: 代码迷 >> VC/MFC >> 用vc++对matlab写的pgm文件进展读取
  详细解决方案

用vc++对matlab写的pgm文件进展读取

热度:79   发布时间:2016-05-02 03:36:22.0
用vc++对matlab写的pgm文件进行读取
我用如下程序将一个矩阵写成pgm文件;
f = fopen(savename, 'w');
if f == -1
    error('Could not create file tmp.pgm.');
end
fprintf(f, 'P5\n%d %d\n255\n', cols, rows);
fwrite(f, bw', 'uint8');
fclose(f);
矩阵中只有0和255两种灰度值;用matlab读取生成的pgm文件时,没有问题。但是用txt格式打开
如下图所示:

正常情况下,用txt格式打开pgm应该为乱码!!这个竟然是空格!!!!
当我想用vc++将pgm文件中的数据读入一个unsigned char类型的变量中时,出现问题。
对于像素值为零的像素点对应的变量edge_left[y][x]=0;但是对于像素值为255的像素点,变量的值为edge_left[y][x]=255‘ ’;像素值后面有一个
空格;将像素点的值输出在DOS界面时,输出全是空格,没有像素值,如下图所示:

是什么原因呢??要是写的程序有问题,但是matlab读就是正确的,可以得到正确的矩阵。但是用txt打开,除了文件头,
连乱码都没有,好像全写的是空格。用vc++读pgm文件,其中的0好像全当做空格,然后255变成255‘ ’,为什么会出现这样的情况????
求大神解释!!!
------解决思路----------------------
fopen 参数带 'b' 二进制方式操作模式  "wb" "rb"
------解决思路----------------------
另外 字符串遇到0就结束了, 用UltraEdit等编辑工具打开,16进制查看
  相关解决方案