经常在C语言编写的程序中对图像进行处理,但不知道处理结果是否正确,今天经过尝试,可以做到在C语言中将图像数据输出到一个txt文件中,在matlab中读取这个txt文件并画图。

在C语言程序中

FILE *p = fopen("try.txt", "w");//存储图像数据的txt文件,按照行优先
 for(int i=0;i<height;i++)
  for(int j=0;j<width;j++)
  {
   fprintf(p,"%d  ",before[i*width+j]);//图像数据按一维存储
   //cout<<int(before[i*width+j]);
  }
   fclose(p);

在matlab中

A=load('D:\MATLAB7\work\try.txt');

B=reshape(A,88,72);%第二个参数为图像的宽,第二个参数为图像的高,matlab在r eshap时按照列优先的顺序

imshow(B,[]);

注意此时显示的图像是实际图像进行了镜像与翻转。若想正常显示,需要在C语言中改为列优先存储,即改变两个for的顺序,并在matlab中改变reshape的后两个参数的顺序。