• 大小: 1.77MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-30
  • 语言: 其他
  • 标签:

资源简介

利用遥感的K均值分类方法进行bmp图像的分类.

资源截图

代码片段和文件信息

#include 
#include  
#include 
#include 
#include 
#include 
#include 
#include 
#define NUM 2000000

unsigned char *pBmpBuf;//读入图像数据的指针
unsigned char *pBmpbiao;//读入颜色表的指针

class RGB
{
public:
int R;
int G;
int B;
int f;
};

class BIAO
{
public:
int R;
int G;
int B;
int f;
};


int bmpWidth;//图像的宽
int bmpHeight;//图像的高
RGBQUAD *pColorTable;//颜色表指针

int biBitCount;//图像类型,每像素位数
//-------------------------------------------------------------------------------------------
//读图像的位图数据、宽、高、颜色表及每像素位数等数据进内存,存放在相应的全局变量中
bool readBmp(char *bmpName) 
{

    FILE *fp=fopen(bmpName“rb“);//二进制读方式打开指定的图像文件

    if(fp==0) return 0;

    //跳过位图文件头结构BITMAPFILEHEADER

    fseek(fp sizeof(BITMAPFILEHEADER)0);

    //定义位图信息头结构变量,读取位图信息头进内存,存放在变量head中

    BITMAPINFOHEADER head;  

    fread(&head sizeof(BITMAPINFOHEADER) 1fp); //获取图像宽、高、每像素所占位数等信息

    bmpWidth = head.biWidth;

    bmpHeight = head.biHeight;

    biBitCount = head.biBitCount;//定义变量,计算图像每行像素所占的字节数(必须是4的倍数)

    int lineByte=(bmpWidth * biBitCount/8+3)/4*4;

if(biBitCount==8)
{
     pBmpbiao=new unsigned char[1024];
     fread(pBmpbiao11024fp);
}
    //申请位图数据所需要的空间,读位图数据进内存


    pBmpBuf=new unsigned char[lineByte * bmpHeight];

    fread(pBmpBuf1lineByte * bmpHeightfp);

    fclose(fp);//关闭文件

    return 1;//读取文件成功
}


int findmin(double a[]int length)
{
    int t=0;
    int q;
    double min=0;
    min = a[0];
    for (q=0;q {
       if (min > a[q])
   {
          min = a[q];
          t=q;
   }

}
      return t;
}

//----------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------
//给定一个图像位图数据、宽、高、颜色表指针及每像素信息进行分类,将其写到指定文件中
void main()

{
    //读入指定BMP文件进内存
    RGB rgb[2500000];
    RGB center[50];
    RGB other[50];
BIAO biao[256];
int dian[50];
int hei[2500000];
int num[50];
int jiunum[50];
int h;
int dei;
double yu;
int jump;
int cishu=0;
double abc[50];
    char readPath[]=“nv.BMP“;

    readBmp(readPath);

    //输出图像的信息

    cout<<“width=“<    

    //每行字节数

    int lineByte=(bmpWidth*biBitCount/8+3)/4*4;
    int nlineByte=(bmpWidth*3+3)/4*4;
    int m=0n=0ge=0;
         if(biBitCount==8)
 {//图像
            for(int ca=0;ca<256;ca++)

biao[ge].R=*(pBmpbiao+ca*4);
biao[ge].G=*(pBmpbiao+ca*4+1);
biao[ge].B=*(pBmpbiao+ca*4+2);
biao[ge].f=*(pBmpbiao+ca*4+3);
ge++;
}



        for(int ii=0;ii {
            for(int jj=0;jj
hei[n]=*(pBmpBuf+ii*lineByte+jj);
                    n++;
}
         }
        for(int shu=0;shu {

rgb[shu].R=biao[hei

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      10267  2011-03-05 19:04  K均值分类\遥感K均值分类\bmp123.cpp

     文件       3447  2011-05-15 22:34  K均值分类\遥感K均值分类\bmp123.dsp

     文件        537  2011-05-15 22:33  K均值分类\遥感K均值分类\bmp123.dsw

     文件      41984  2011-05-15 22:34  K均值分类\遥感K均值分类\bmp123.ncb

     文件      53760  2011-05-15 22:34  K均值分类\遥感K均值分类\bmp123.opt

     文件        246  2011-05-15 22:34  K均值分类\遥感K均值分类\bmp123.plg

     文件     258160  2011-05-15 22:32  K均值分类\遥感K均值分类\Debug\bmp123.exe

     文件     296060  2011-05-15 22:32  K均值分类\遥感K均值分类\Debug\bmp123.ilk

     文件      28331  2011-05-15 22:32  K均值分类\遥感K均值分类\Debug\bmp123.obj

    I.A....   3698368  2011-05-15 22:32  K均值分类\遥感K均值分类\Debug\bmp123.pch

     文件     517120  2011-05-15 22:32  K均值分类\遥感K均值分类\Debug\bmp123.pdb

     文件     164864  2011-05-15 22:34  K均值分类\遥感K均值分类\Debug\vc60.idb

     文件      94208  2011-05-15 22:32  K均值分类\遥感K均值分类\Debug\vc60.pdb

     文件     768054  2011-01-09 09:13  K均值分类\遥感K均值分类\nv.bmp

     文件     110592  2011-05-15 22:37  K均值分类\遥感K均值分类\程序说明.doc

     目录          0  2011-05-15 22:32  K均值分类\遥感K均值分类\Debug

     目录          0  2011-05-15 22:38  K均值分类\遥感K均值分类

     目录          0  2011-05-15 22:32  K均值分类

----------- ---------  ---------- -----  ----

              6045998                    18


评论

共有 条评论

相关资源