C++对ascii文件的读取和显示


步骤:
1.在已知文件头部行数情况下,读取文件头部获取文件信息
2.根据文件头部读取信息创建相关数组存储文件下方数据
3.cv创建矩阵,转换数据并显示

#include<iostream>
#include<sstream>
#include<fstream>
#include<cstdlib>
#include<cstdio>
#include<iomanip>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
const int maxsize = 1000;
typedef struct Band
{int data[maxsize][maxsize];
}Band;
typedef struct Ascii_image
{double imageWidth;//图像的宽double imageHeight;//图像的高double nbands;//图像的波段数double cellsize;//图像像素大小Band bands[4];
}Ascii_image;int main()
{ifstream inf;inf.open("F://ascii_image.txt");string sline;//每一行string out;char* s1 = new char[10];double s2 = 0;int i = 0, j = 0, n = 0;struct Ascii_image* image = NULL;image = (Ascii_image*)malloc(sizeof(Ascii_image) * 2);while (getline(inf, sline) && image != NULL){if (sline.empty()){n++;j = 0;}else if (i < 6){istringstream sin(sline);sin >> s1 >> s2;if (strcmp(s1, "ncols") == 0)image->imageWidth = s2;if (strcmp(s1, "nrows") == 0)image->imageHeight = s2;if (strcmp(s1, "nbands") == 0)image->nbands = s2;if (strcmp(s1, "cellsize") == 0)image->cellsize = s2;i++;}else{istringstream sin(sline);for (int k = 0; k < image->imageWidth; k++){sin >> image->bands[n].data[j][k];}j++;}}if (image != NULL){Mat myimg(image->imageHeight, image->imageWidth, CV_8UC3);//取像素数据首地址for (int row = 0; row < myimg.rows; row++){for (int col = 0; col < myimg.cols; col++){myimg.at<Vec3b>(row, col) = Vec3b(image->bands[0].data[row][col], image->bands[1].data[row][col], image->bands[2].data[row][col]);}}imshow("new", myimg * 10);cv::waitKey(0);}return 0;
}

结果截图展示:

C++对ascii文件按行和分隔符读取并显示相关推荐

  1. Spring MVC上传文件后重命名读取不显示,报错已解决(The origin server did not find a current representation for the targe)

    上传文件后,重命名保存在本地,再读取时报错:The origin server did not find a current representation for the target resourc ...

  2. C#读取文件:按行读取

    C#如何读取文件前面说过了:http://blog.csdn.net/yysyangyangyangshan/article/details/6948327,下面以一个例子来说明如何按行读取,其实很简 ...

  3. MATLAB读取txt,excel,ASCII文件

    MATLAB读取txt,excel,ASCII文件 1. 读取方式 textread(字母和数值每行格式一致) xlsread(读取excel文件) importdata(字母和数值分开,以数字为主, ...

  4. load函数无法打开MAT文件:不是二进制 MAT 文件。请尝试执行 load -ASCII 以便以文本形式读取。

    load函数无法打开MAT文件 问题描述 报错:不是二进制 MAT 文件.请尝试执行 load -ASCII 以便以文本形式读取. 原因分析: Matlab2021a及以下版本用load函数读取MAT ...

  5. python回到首行_python读取文件首行和最后一行

    python读取文件最后一行两种方式 1)常规方法:从前往后依次读取 步骤:open打开文件. 读取文件,把文件所有行读入内存. 遍历所有行,提取指定行的数据. 优点:简单,方便 缺点:当文件大了以后 ...

  6. c语言读取ascii文件,C++对ASCII文件的读写操作

    如果文件的每一个字节中均以ASCII代码形式存放数据,即一个字节存放一个字符,这个文件就是ASCII文件(或称字符文件).程序可以从ASCII文件中读入若干个字符,也可以向它输出一些字符. 对ASCI ...

  7. python读取文件第一行_python读取文件首行和最后一行

    python读取文件最后一行两种方式 1)常规方法:从前往后依次读取 步骤:open打开文件. 读取文件,把文件所有行读入内存. 遍历所有行,提取指定行的数据. 优点:简单,方便 缺点:当文件大了以后 ...

  8. matlab读ascii的dat,[转载]MATLAB读取和调用各种数据(txt,dat,ma

    例2-1 %exam1.m [f,message]=fopen('fileexam1', 'r') if f==-1 disp (message); %显示错误信息 end 若文件fileexam1不 ...

  9. matlab加载ascii文件,matlab自动处理ascii文件的方法

    在用matlab处理数据时中,经常要用到ascii文件,在此贴出一段代码,该代码从work中自动读取ascii文件 并去掉非数值的headline,在将其转化为数值矩阵,求得第五列的平均值.本代码中, ...

  10. c#中文件的写入与读取

    在我们做名片管理时用到了对于名片的存储与读入问题.首先我们需要获取当前的路径引用using System.IO;命名空间.我们在写入之前先把card类型的一条记录转化成string类型的数组方便写入. ...

最新文章

  1. 让Hive支持行级insert、update、delete
  2. 搜索引擎工作的基础流程与原理
  3. python double语法_python上手--基本语法和数据类型基础
  4. C++类的基本学习知识
  5. python数字判断规则_判断Python输入是否为数字、字符(包括正则表达式)-阿里云开发者社区...
  6. 长寿的人会有的8个健康理念
  7. 剑指offer python实现_剑指Offer第2题详解(附Python、Java代码实现)
  8. css和css的圣杯布局,CSS布局--圣杯布局和双飞翼布局以及使用Flex实现圣杯布局
  9. c java http通讯,c语言经过http请求javaee项目
  10. [Python] 生成迭代器 iter() 函数
  11. main:处理命令行选项
  12. Robot Framework 的安装配置和简单的实例介绍
  13. ++x 和 x++的区别
  14. java cxf调用wsdl文件_如何使用CXF将 .wsdl 文件变成java文件
  15. Mstar的Monitor方案OSD 菜单制作(四)——图片转换代码工具详解
  16. 深信服虚拟服务器 视频教程,5分钟,轻松玩转深信服服务器虚拟化
  17. 房价会断崖式下跌吗?
  18. Codeforces 1013 A. Piles With Stones
  19. 我喜欢生命本来的样子
  20. 今日头条-级联组件开发过程

热门文章

  1. 精美高清壁纸:2014年1月桌面日历壁纸免费下载
  2. CentOS 6.4 php环境配置以及安装wordpress
  3. Delphi SWF SDK v1.4 Crack Notes
  4. Gradle基础介绍
  5. vue-cli2.0webpack的理解
  6. Intellij IDEA问题解决合集
  7. centos7使用kubeadm部署高可用k8s集群
  8. python shell运行_Python 执行 Shell 命令
  9. linux用Vim上传.sql,真的有(很多)linux大牛用vim写项目吗?
  10. laravel mysql增删改查_laravel基础laravle中orm简单的增删改查-一颗优雅草男神你姚哥...