如何用C++读取显示envi标准格式的图像

作者&投稿:塞天 (若有异议请与网页底部的电邮联系)
如何用c++ 读取tiff格式的图像~

如果你要在程序中操作TIFF文件,可以访问PaintLib的主页http://www.paintlib.de/paintlib/。Paintlib是一个C++类,支持PNG、TGA、TIFF、JPEG/JFIF、Windows BMP、Mac PICT和EPS。

或者到http://www.libtiff.org下载libtiff库。

以下是从文件读取图片并转换成灰度图并画在界面上的程序
重点是pixel=img.GetPixel(x,y);这句,lz可以参考一下
JPG,BMP,PNG三种图片都测试过没问题,其他格式的没测试过
CClientDC dc(this);
CFileDialog file(true,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("JPG(*.JPG)|*.JPG|BMP(*.BMP)|*.BMP|PNG(*.PNG)|*.PNG||"),NULL);
if(file.DoModal()==IDOK)
{
//MessageBox(file.GetPathName());
CImage img;
img.Load(file.GetPathName());
int g;
if(img.GetWidth()<1000 && img.GetHeight()<1000)
{
int size= img.GetWidth()*img.GetHeight();
int up=0;
double g;
COLORREF pixel;
for(int x=0;x<img.GetWidth();++x)
{
for(int y=0;y<img.GetHeight();++y)
{
pixel=img.GetPixel(x,y);
if( ((int)( (GetRValue(pixel)+GetGValue(pixel)+GetBValue(pixel))/3 )) >=128) ++up;
g=int((GetRValue(pixel)+GetGValue(pixel)+GetBValue(pixel))/3);
img.SetPixel(x,y,RGB(g,g,g));
}
}
g=(double(up*100))/(double(size));
CString ts;
ts.Format(L"%d/%d(%lf%%)",up,size,g);
//MessageBox(ts);
//img.Save(L"d:\\1.jpg");
img.Draw(dc,5,5);
}
else
{
MessageBox(L"图片太大");
}
}

ENVI使用的是通用栅格数据格式,包含一个简单的二进制文件( a simple flat binary )和一个相关的ASCII(文本)的头文件。
利用其他语言如C/C++等直接读取ENVI的数据,则可以先对hdr文件进行解析,获取数据类型。
归纳起来就是分析出数据结构后绘制,你可以搜索网上看有没有专门的库或控件可以使用


编写一个C语言程序读取一个csv格式文件的内容,文件内全是数字,每次读取...
int c,i;fp = fopen("in.csv", "r"); \/\/ 以文本方式打开。if(fp == NULL) return -1; \/\/ 打开文件失败。while(1){ fscanf(fp, "%d", &a[line].a);\/\/从文件中读取第一个元素。c = getchar();\/\/读取分隔符。\/\/接下来要读取字符串,需要逐个字符读入,直到出现分隔符为止。i ...

linux 标准C\/C++ 图像识别编程
getstr() 从键盘读取一串字元 scanw(format,&arg1,&arg2...) 如同 scanf, 从键盘读取一串字元 □例: int ch; char string1[80]; \/* 请注意! 不可宣告为 char *string1; *\/ char string2[80]; echo(); \/* 开启 echo 模式, 使输入立刻显示在萤幕上 *\/ ch=getch(); string1=get...

c语言大作业 学生成绩管理系统
(2)读取磁盘文件并显示输出所有学生的成绩;(3)按学号或姓名查询成绩;(4)添加成绩记录;(5)修改指定姓名或学号的学生的成绩并可存盘;(6)显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。以C语言成绩为例*\/#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#def...

求c语言程序,以下是要求:完成学生成绩管理程序系统设计,主要功能要求...
student (char n[20],int nu, int ag, char se,double e,double m,double c,double av); ~ student (); void Set();\/\/添加 void Delete();\/\/删除 void Alter();\/\/修改 void List();\/\/显示 void aver(); void ssearch();\/\/查询 \/\/ void RearchN();\/\/ void RearchNU();void staxis();...

jsp如何用c标签实现分页
jsp用c标签实现分页的方式如下:<%@ tag language="java" pageEncoding="UTF-8"%><%@ taglib uri="\/WEB-INF\/tld\/c.tld" prefix="c"%><%@ attribute name="curIndex" type="java.lang.Long" required="true"%><%@ attribute name="pageSize" type="java.lang.Long" required="true"%>...

c语言中,gets()和puts()函数与getchar()与putchar()函数有何区别?
gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束, 但回车符不属于这个字符串。其调用格式为: gets(s);s为字符串变量(字符串数组名或字符串指针)。gets(s)函数与scanf("%s", &s)相似, 但不完全相同, 使用scanf("%s", &s) 函数输入字符串时存在一个问题, 就是如果输入了空格会认为...

C语言编程:学生成绩管理系统
1,登录模块:提示用户输入用户名和密码,输入正确则显示主菜单,否则要求重新输入。2,菜单显示模块:根据用户的输入选择执行相应的功能模块。3,数据的输入和输出模块:要求学生的一... 1,登录模块:提示用户输入用户名和密码,输入正确则显示主菜单,否则要求重新输入。2,菜单显示模块:根据用户的输入选择执行相应的功能模块...

C语言中用scanf函数输入字符时,为什么要在输入控制符%c前面加空格?用s...
c前面的空格就是用来屏蔽空白符的,首先必须要知道C语言 scanf() 函数的特性,以及scanf()与缓冲区、标准输入流之间的联系。在此之前,先介绍两个专业术语。1.缓冲区 缓冲区是一块存放临时输入数据的内存,我们在键盘上输入数据之所以不会马上显示,就是因为数据存放在了缓冲区,在上面例子中,当我们按...

学生成绩管理系统 C语言
printf("文件读取成功\\n"); printf("是否显示纪录?(y\/n)"); gets(str); if(str[0]=='y'||str[0]=='Y') display(stu,0,numstus-1); return(0);}#include "stdio.h"void sort(student stud[]){ int i,j=0; char str[5]; student *p; p=stud; if(numstus==0) { printf("没有可...

该c语言程序有何问题?为何运行后未有显示?
有可能文件打开失败,没能读到数据,你在fp=fopen( ... ) ;后加一句:if ( fp== NULL ){ printf("open file stu.txt error\\n"); \/\/如果看到这句提示,说明没有找到文件 return ;}

杭锦后旗15757933670: 在VC++中如何读取文本文件的信息并显示到列表视图中 -
符宜碘佛: 如果格式都是这样的话,可以用ini文件操作API函数实现,GetPrivateProfileString这个就可以以字符串格式来读取,具体用法自己去查.另外,可以用文本文件操作,通过字符 \n 来判断,实现读取行,再通过 = 来把名称和值分开.代码我就不写了.

杭锦后旗15757933670: 如何在matlab中读取ENVI标准格式数据 -
符宜碘佛: 每个*.img文件对应一个*.hdr的头文件,程序首先从头文件里得到影像的行列和波段数,然后按照二进制方式读取,并按照行列波段数重排为多维矩阵.

杭锦后旗15757933670: 怎么用c++从excel中读入数据 -
符宜碘佛: 使用Visual C++的扩展指令#import:#import "C:\\Program Files\\Common Files\\microsoft shared\\OFFICE14\\MSO.DLL" \ rename("RGB","MsoRGB") \ rename("SearchPath","MsoSearchPath")#import "C:\\Program Files\\Common ...

杭锦后旗15757933670: vc++ 用cin 读取文件作为标准输入 -
符宜碘佛: 调用 freopen() 函数.函数原形:FILE * freopen ( const char * filename, const char * mode, FILE * stream ); 头文件:#include#include using namespace std;#include// 要加这个-------- 例如:freopen ("myfileA.txt","w",stdout); //代替标准输出 freopen ("myfileB.txt","r",stdin); //代替标准输入======= 当然,不用 freopen, 而是 运行时直接用 文件转向也可以:pr.exe myfileA.txt

杭锦后旗15757933670: windows文本文件用c++标准函数read读取 -
符宜碘佛: 你的utra edit是16进制形式显示的,0xd 就是回车键的ASCII码值,你说的0xa 是换行 相当于c/c++中的'\n'转义字符,显然你写的是对的..只是忽略了ASCII码的 换行值而已

杭锦后旗15757933670: 如何用c++读取stl格式文件 -
符宜碘佛: 1.stl 文件是在计算机图形应用系统中,用于表示三角形网格的一种文件格式. 它的文件格式非常简单, 应用很广泛.STL只能用来表示封闭的面或者体,stl文件有两种:一种是ASCII明码格式,另一种是二进制格式.2.对于程序来说,不管后缀...

杭锦后旗15757933670: 如何用c或者c++读取excel的某一单元格 -
符宜碘佛: 简单的方案就是添加com组件,从而实现对excel的读取和修改,一楼兄弟说的方案, 很早之前的做法了,现在vc 直接可以添加相关的excel com组件,就可以了,有需要,可以帮你写个demo

杭锦后旗15757933670: 如何使用C++读取配置文件 -
符宜碘佛: 调用<fstream>函数库就可以.fstream input; input.open(filename,ios::in); char ch[20]; while(!input.eof())//文件未读完继续读取 { input>>ch; cout<<ch<<" "; } 这是部分代码.

杭锦后旗15757933670: C++读取文件内容如何使用vector容器进行读取? -
符宜碘佛: 1).#include <iostream> #include <vector>using namespace std;int main() {int a[7]={1,2,3,4,5,6,7};vector<int> va(a,a+7); for(int i=0;i<va.size();i++)cout<<va[i]<<" "; } 这个是简单的遍历向量,输出向量全部元素. 2).这是简单的从向量 test.txt ...

杭锦后旗15757933670: 用C++编一个把一个c:\c++.txt的文本文件打开、并显示出来. -
符宜碘佛: #include using namespace std; main() { char fname[256],sentence[256]; cout cin>>fname; ifstream fin(fname); //打开文件 if(fin.good()) while(!fin.eof()) //打开无误则读出 { fin.getline(sentence,256); cout } else coutfin.close(); }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网