读取文件(.txt、.excel、.csv),在c++、matlab环境中
来源:互联网 发布:excel表找相同数据 编辑:程序博客网 时间:2024/05/10 08:06
1.开始时准备在vsat010下通过C++读取Excel,需要 ole等 但方法总是配置不好。
感兴趣的可以参考http://www.cnblogs.com/kernel0815/p/3318182.html
2.最后做项目发现,对于excel文件其实最好的处理方式是:用读取.csv,
因为它们可以互相转化只是在csv文件中每个量直接由逗号隔开,也可以直接读.。
在此代码栗子分享
待处理文件 data.csv如下:
#image/照片ID,time/时间,latitude/纬度,longitude/经度,altitude/高程,roll/滚转觿,pitch/俯仰觿,yaw/航向觿
1,2016/11/30 11:31,34.37583,112.83631,746.12,0.5,0.1,81.3
2,2016/11/30 11:31,34.37582,112.83741,744.66,-0.1,3.1,79.5
3,2016/11/30 11:31,34.37581,112.83848,743.45,0.5,7,80.3
4,2016/11/30 11:31,34.37581,112.83955,744.45,-0.7,6.7,80.8
实现代码
//// ReadCsv.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"#include <opencv\highgui.h> #include <iostream>#include <string>#include <fstream>#include <opencv2/highgui/highgui.hpp>#define ExampleNum 114 //.csv文件中样本数据行数using namespace std;using namespace cv;int main(){ifstream file("data.csv");string data[ExampleNum+1][8];string value;int row = 0;while (getline(file,value)) { //istream& getline (istream&& is, string& str);//读取的istream是作为参数is传进函数的。读取的字符串保存在string类型的str中。istringstream sin(value); //istringstream::istringstream(string str);它的作用是从string对象str中读取字符。string field;int col = 0;while (getline(sin, field, ',')) {data[row][col] = field;col = col + 1;}cout << data[row][0] << "\t" << data[row][1] << "\t" << data[row][2] <<"\t"<< data[row][3] <<"\t"<<data[row][4] << "\t" << data[row][5] <<"\t" << data[row][6] << "\t" << data[row][7] <<"\t"<<endl;row = row + 1;}waitKey(0); return 0;}
3.之后有个将Excel转换成转成 .txt 读取的想法通过c++读取,也可以走得通,可参考点击打开链接
最后我自己写了一些代码可以参考,举个例子说明,这里有待处理文件.txt
xiaoming;123456;shanghai
zhangming;123;shangdong
hanmeimei;987;beijing
处理代码
#include<iostream>#include<stdio.h>#include<string>using namespace std;int main(int argc,char **argv){ string strname,strid,straddress; char buff[256]; FILE *p; p=fopen("data.txt","r"); while(fgets(buff,256,p)!=NULL) { strname=strtok(buff,";");//这里要注意的是一行文本中在第一次使用strtok的时候,第一个参数要使用待处理数据的首地址 strid=strtok(NULL,";");//但是在该行的以后使用中第一个参数就要用NULL,这一点很重要,往往被人忽视 straddress=strtok(NULL,"\n");//更加要注意的一点是,在分割该行最后一个属性的时候,很多人对于分隔符的选取仍然是" "(空格),这样是不正确的,应该使用"\n"来分割,因为最后的符号是"\n"而不是空格,如果继续使用空格作为分隔符的话,那么最后一个属性就多了一个"\n"了。 cout<<strname<<" "<<strid<<" "<<straddress<<endl; } return 0;}strtok() 函数可以对各种分隔符进行分隔变量//本例中是对;
4.最后考虑图片的读取最好在matlab下处理,结果非常好的,得到了解决以下是我的代码,可以选择导入我提供的文件
文件链接百度云盘:链接:链接: http://pan.baidu.com/s/1skhNX3f 密码:fj75
扣完图片保存在matlab工作目录下
clcclear%%%%%5 %%调用格式:%{截图函数I2=imcrop(I,RECT);X2=imcrop(X,MAP,RECT);RGB2=imcrop(RGB,RECT);其中,I、X、RGB分别对应灰度图像、索引图像、RGB图像的数据矩阵,MAP为索引图像颜色表,I2、X2、RGB2分别为各自输入矩阵所对应的输出矩阵。而RECT为可选参数,格式为[XMIN YMIN WIGTH HEIGHT].例如[20 20 40 40],则剪裁后的图像的左上角像素为原图像位置在(20,20)的像素,而剪裁后图像的右下角像素为原图像位置在(60,60)的像素。另外,如不加参数RECT,将使用鼠标在原图像上划矩形框的方法来实现图像的剪裁,所划矩形框内的图像将在新窗口中输出。如:RGB=imread('1,jpg');RGB1=imcrop(RGB,[60,255,400,425]);imhsow(RGB);figureimshow(RGB1);%}%开始通过弹出文件选择框选择excel文件,读入数据,如读入我提供的文件005%弹出选择excel文件窗,选择文件[filename, pathname] = uigetfile({'*.xls;*.xlsx;', 'EXCEL 文件 (*.xls, *.xlsx)'},'导入文件');str = [pathname,filename];data = xlsread(str);[num ,ixi, raw]=xlsread(str);num[num_x,num_y]=size(num)list=dir([pathname,'*.jpg']);k=length(list)for j=1:k %str_img= strcat (pathname, int2str(i) , '.jpg') ; % 连接字符串形成图像的文件名 str_img= strcat (pathname, list(j).name) a{j}=imread(str_img); %img=imread([pathname,'001.jpg']);end%在当前work directory下建立image文件夹% //如果文件夹已存在,会提示warning,运行无碍 mkdir 066directory=[cd,'/066/'];%扣取指定位置的区域图片switch (num(1,2)) case 1 for i=1:k img1=imcrop(a{i},[num(i,6),num(i,7),num(i,8),num(i,9)]); imwrite(img1,[directory,num2str(i),'11.jpg']) end case 2 for i=1:k img1=imcrop(a{i},[num(i,6),num(i,7),num(i,8),num(i,9)]); imwrite(img1,[directory,num2str(i),'11.jpg']) img2=imcrop(a{i},[num(i,13),num(i,14),num(i,15),num(i,16)]); imwrite(img2,[directory,num2str(i),'12.jpg']) end case 3 for i=1:k img1=imcrop(a{i},[num(i,6),num(i,7),num(i,8),num(i,9)]); imwrite(img1,[directory,num2str(i),'11.jpg']) img2=imcrop(a{i},[num(i,13),num(i,14),num(i,15),num(i,16)]); imwrite(img2,[directory,num2str(i),'12.jpg']) img3=imcrop(a{i},[num(i,20),num(i,21),num(i,22),num(i,23)]); imwrite(img3,[directory,num2str(i),'13.jpg']) end case 4 for i=1:k img1=imcrop(a{i},[num(i,6),num(i,7),num(i,8),num(i,9)]); imwrite(img1,[directory,num2str(i),'11.jpg']) img2=imcrop(a{i},[num(i,13),num(i,14),num(i,15),num(i,16)]); imwrite(img2,[directory,num2str(i),'12.jpg']) img3=imcrop(a{i},[num(i,20),num(i,21),num(i,22),num(i,23)]); imwrite(img3,[directory,num2str(i),'13.jpg']) img4=imcrop(a{i},[num(i,27),num(i,28),num(i,29),num(i,30)]); imwrite(img4,[directory,num2str(i),'14.jpg']); end case 5 for i=1:k img1=imcrop(a{i},[num(i,6),num(i,7),num(i,8),num(i,9)]); imwrite(img1,[directory,num2str(i),'11.jpg']) img2=imcrop(a{i},[num(i,13),num(i,14),num(i,15),num(i,16)]); imwrite(img2,[directory,num2str(i),'12.jpg']) img3=imcrop(a{i},[num(i,20),num(i,21),num(i,22),num(i,23)]); imwrite(img3,[directory,num2str(i),'13.jpg']) img4=imcrop(a{i},[num(i,27),num(i,28),num(i,29),num(i,30)]); imwrite(img4,[directory,num2str(i),'14.jpg']); img5=imcrop(a{i},[num(i,34),num(i,35),num(i,36),num(i,37)]); imwrite(img5,[directory,num2str(i),'15.jpg']) end case 6 for i=1:k img1=imcrop(a{i},[num(i,6),num(i,7),num(i,8),num(i,9)]); imwrite(img1,[directory,num2str(i),'11.jpg']) img2=imcrop(a{i},[num(i,13),num(i,14),num(i,15),num(i,16)]); imwrite(img2,[directory,num2str(i),'12.jpg']) img3=imcrop(a{i},[num(i,20),num(i,21),num(i,22),num(i,23)]); imwrite(img3,[directory,num2str(i),'13.jpg']) img4=imcrop(a{i},[num(i,27),num(i,28),num(i,29),num(i,30)]); imwrite(img4,[directory,num2str(i),'14.jpg']); img5=imcrop(a{i},[num(i,34),num(i,35),num(i,36),num(i,37)]); imwrite(img5,[directory,num2str(i),'15.jpg']) img6=imcrop(a{i},[num(i,41),num(i,42),num(i,43),num(i,44)]); imwrite(img6,[directory,num2str(i),'16.jpg']); end case 7 for i=1:k img1=imcrop(a{i},[num(i,6),num(i,7),num(i,8),num(i,9)]); imwrite(img1,[directory,num2str(i),'11.jpg']) img2=imcrop(a{i},[num(i,13),num(i,14),num(i,15),num(i,16)]); imwrite(img2,[directory,num2str(i),'12.jpg']) img3=imcrop(a{i},[num(i,20),num(i,21),num(i,22),num(i,23)]); imwrite(img3,[directory,num2str(i),'13.jpg']) img4=imcrop(a{i},[num(i,27),num(i,28),num(i,29),num(i,30)]); imwrite(img4,[directory,num2str(i),'14.jpg']); img5=imcrop(a{i},[num(i,34),num(i,35),num(i,36),num(i,37)]); imwrite(img5,[directory,num2str(i),'15.jpg']) img6=imcrop(a{i},[num(i,41),num(i,42),num(i,43),num(i,44)]); imwrite(img6,[directory,num2str(i),'16.jpg']); img7=imcrop(a{i},[num(i,48),num(i,49),num(i,50),num(i,51)]); imwrite(img7,[directory,num2str(i),'17.jpg']); end end
- 读取文件(.txt、.excel、.csv),在c++、matlab环境中
- C#读取CSV,Excel,Txt文件,删除文件,拷贝文件
- 读取.txt .csv文件
- 读取csv.txt文件
- matlab读取写入txt,excel文件
- Matlab读取Excel、txt文件数据
- MATLAB读取Excel,Txt文件中的数据
- Selenium读取文件大全txt、excel、csv...中文英文字符...
- Python 读取EXCEL(XLS、CSV)写入txt文件
- Matlab读取CSV文件
- Matlab读取CSV文件
- Matlab读取CSV文件
- matlab读取csv文件
- 读取txt,csv等文件
- python读取txt、csv文件
- Python读取txt、csv文件
- iphone app中读取本地txt,csv文件
- iphone app中读取本地txt,csv文件 转载
- spring国际化
- 有名管道与无名管道之间的区别
- 对比面向对象和面向服务
- web 基础
- MFC->同时弹出多个对话框
- 读取文件(.txt、.excel、.csv),在c++、matlab环境中
- [木易玲珑]linux系统Kile+Okular实现逆向搜索
- 并行计算实现判断一个数是不是素数--Win32和.Net两种方式结合
- hihoCoder题目AC #1014 : Trie树 Java
- SQL2012密码老过期,解决问题
- ASP.NET MVC4中的bundles特性引发服务器拒绝访问(403错误)
- 2016-03-16 .ui文件转.py脚本
- adb shell后出现error解决方案
- android刷机