- 在线时间
- 490 小时
- 最后登录
- 2024-2-3
- 注册时间
- 2013-2-28
- 听众数
- 117
- 收听数
- 46
- 能力
- 268 分
- 体力
- 39235 点
- 威望
- 1340 点
- 阅读权限
- 255
- 积分
- 31237
- 相册
- 2
- 日志
- 0
- 记录
- 0
- 帖子
- 1388
- 主题
- 937
- 精华
- 0
- 分享
- 0
- 好友
- 111
升级   0% TA的每日心情 | 衰 2020-10-25 11:55 |
|---|
签到天数: 264 天 [LV.8]以坛为家I
- 自我介绍
- 内蒙古大学计算机学院
 群组: 2013年数学建模国赛备 |
我为做机器人自学C++编程,在网上找了个程序改了一下。调试该程序总报错,因为ntd.dll的原因,无匹配的字符信息。我想把我C:\windows\system32\ntd.dll删除后,再下载一个新的ntd.dll替换,老的ntd.dll删不掉。请教专家们啦,看看我这程序错哪。
) j4 H9 p, J) }) S, J& e8 Y#include <iostream.h>6 l8 s$ t' Z" t# ^, I+ l7 g
#include <stdio.h># J, v ^3 Y" h7 D
#include <math.h>
6 L$ |( f [) u+ ^; otypedef unsigned char BYTE;
' s5 U9 y7 U4 Ilong Ary2DW (unsigned char p[4]){
2 Z" H( P. r R: L6 Z) h; h5 ]int a0,a1,a2,a3;unsigned long A;
* y+ w" c5 R( ra0=int (p[0]); a1=int (p[1]);
! U, D) n, P$ O. l5 A- U) ra2=int (p[2]); a3=int (p[3]);" b" \0 k3 S! B$ p5 F5 R
A=a3*256*256*256+a2*256*256*256+a0;
& F" m' h/ Q+ S! V! `$ }& l' ?return A;};//实现数的大小正确转换,转换为WORD所代表的实际值 ' ?& |8 {$ O! x4 j
typedef struct tagBITMAPFILEHEADER {8 d8 v: {& @$ D! B. U! x% v' q$ V) z8 j
BYTE bfType[2];BYTE bfSize[4];
; a4 X3 ~4 I" t: w) NBYTE bfRcserved1[2];
5 n% T. w2 W! G0 P/ fBYTE bfRcserved2[2];
. B* ]: G5 Y) s& q: IBYTE bfoffBits[4];' R* l% m" |% }
}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型
! b* N( G) _$ }" X& M7 z/ m, `typedef struct tagBITMAPINFOHEADER {; t! j. a: J% T& ~7 R
BYTE biSize[4];
* f2 b8 J7 h* o. \1 R* BBYTE biWidth[4];
+ U4 R$ |3 ^4 E: gBYTE biHeight[4];7 k. B9 y) x: r+ K1 r3 |
BYTE biCompression[4];
7 a A6 E9 B: j- JBYTE biXPelsPerMeter[4];
( U* x% M) ]3 f' |+ S( EBYTE biYPelsPerMeter[4];
' [% v( F6 d4 z7 dBYTE biClrUsed[4];, L. D/ A) ~/ U1 G; Y- A3 I, ?
BYTE biClrImportant[4]; u3 x' v$ x% ^& Q
}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型5 B+ u* j. P. W; r6 s& F# e
typedef struct BitmapFile{- V; T2 W3 `: K% G
BITMAPFILEHEADER bmfheader;4 A8 l# {1 e. o
BITMAPINFOHEADER bminfoheader;
4 h, v6 ?9 B( K, n5 a- Z, ?' [BYTE bitmapdata[3275520];
( Z' s& e8 M/ @: H& M" n}bitmap;//定义所处理图像文件对应BMP的文件格式/ A! \: B; C) y* u: ?6 ]; n
//主函数,将图像区数据读入B、G、R三个数组% Z) ^4 A% _2 d6 {
int main()7 a1 G' h: Y0 S" A4 O
{7 M" n4 ~& s0 e
bitmap *ample1;
+ E; d% z# T2 H6 e! x1 rFILE *fp, *fp1;
( ~2 e, X- a6 \. CBYTE R[1280][853],G[1280][853],B[1280][853];
( ]2 ?. A$ }& V+ R; |long k=0;( g: `: x9 ?" W3 k g1 d
int i,j;
7 b% F/ e7 z4 h/ _9 |! T" echar name[20]="try.bmp";//读到新文件的文件名
& g4 c7 @/ J* p7 f8 v" p& \fp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件
: @# D0 U) _9 [+ ?: u; }fp1=fopen(name,"wb");//为写建立一个新文件名
. _4 m! d" j3 t F7 q0 Kif(! (ample1=new bitmap)){
! n# k& V: L$ x, z: U0 l: i- c- y0 Fcout<<"error"<<endl;return 0;' V9 S$ c; m4 q7 t) L2 d
}
& O6 M$ ]$ Y5 \* d( s) i! T# kelse
/ |* s9 { f: d0 {0 y8 _: i3 v" ~{( F2 L5 r- c* O) f" y
fread(ample1,sizeof(bitmap),1,fp);
( y: n. [0 `- l3 ]% k o+ pfwrite(ample1,sizeof(bitmap),1,fp1);) R" W5 N2 t4 b* h; Q. W$ d2 z/ A
cout<<"********位图文件头格式:********"<<endl;
, f$ h0 G% q* X* xcout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;
* t- y6 S b, V4 icout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;( ]& I- {* Y# W: Y% u1 ]5 ^
cout<<"********以下是图像数据区********"<<endl;3 d: O' q3 x2 A+ n9 `7 `
//指定像素点,以16进制输出BGR值 X* K" F, K2 ~& I& b
cout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;
$ ^* @$ J; w3 e- p1 N" |8 R" J4 Vcout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl;
8 t9 p. O9 j* D2 v+ ncout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;
" S( m5 h: f) J6 Y//将图像区数据读入 R、G、B三个数组
8 l& {; I, d' @( Ufor(i=1280; i>=0; i--)) Y* m" I A% W1 u$ S, Q7 B
for(j=0; j<853; j++) 9 y! Y- A5 H& T( k* ^2 q
{
7 {$ K9 }4 {# r; U7 r8 ]+ c* @. BB[i][j]=ample1 -> bitmapdata[k++];
7 h6 `4 C' I; E0 I: [7 m: gG[i][j]=ample1 -> bitmapdata[k++]; . r1 V8 c3 O4 |+ Q w ?
R[i][j]=ample1 -> bitmapdata[k++];1 _* k4 I l+ J' i6 E" Y
}
) M3 c5 ^2 V- ?//检查是否将图像数据读入数组
+ G+ E- D$ j; k2 L. x# _" z8 k0 ocout<<"********以下是内存数组数据********"<<endl;
0 ~9 Y4 x; q" W+ i* c0 hcout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;
8 {( ]( S* N4 s. f* ~- kcout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;
% J9 A7 F3 \1 g. `" Yreturn 1;
8 @5 T) P: k" E; T4 `. @( q}
9 }5 q* Z* [* J- ?5 W1 L+ |delete ample1;
. R8 q% g5 ~- L+ qfclose(fp); * U# z' f6 O% u, Z: k+ \
fclose(fp1);+ _) s! Q" P' I+ ~8 W
} |
zan
|