- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。
! _) @9 m3 j& P) f1 x- m# }0 Y#include <iostream.h>
9 Y, U# S; w- ?' u7 ?; W#include <stdio.h>
6 r" T" u: v/ D#include <math.h>
4 u9 _" u0 t6 b9 X. o6 htypedef unsigned char BYTE;
& a5 K% }! J. v9 {) ylong Ary2DW (unsigned char p[4]){1 a5 q( G; o; ~& D2 T0 Q
int a0,a1,a2,a3;unsigned long A;, ]' c- c6 h, M# I/ y! X8 D" X
a0=int (p[0]); a1=int (p[1]);# f% d* q- I6 m2 c6 G* [
a2=int (p[2]); a3=int (p[3]);
) y' F* A* i6 W0 q6 Z1 Z* VA=a3*256*256*256+a2*256*256*256+a0;1 Y6 W: Y ^* W! N& W4 q, F
return A;};//实现数的大小正确转换,转换为WORD所代表的实际值 , I+ C0 ^+ i9 F3 O
typedef struct tagBITMAPFILEHEADER {
# @# H0 G& c7 v- \BYTE bfType[2];BYTE bfSize[4];( Q( a$ S2 W, `, |
BYTE bfRcserved1[2];
$ J) J* }+ a: [BYTE bfRcserved2[2];' \& I2 Y" T' d" ]! }
BYTE bfoffBits[4];3 z: v) v3 S6 R" p* ^1 x4 v
}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型
! x( r0 y2 v5 m `typedef struct tagBITMAPINFOHEADER {
( [; N4 }# \0 ?& r; e9 H0 Y. E5 mBYTE biSize[4];
% ?1 ]* X. l- A3 T. TBYTE biWidth[4];9 B8 C6 \& d- W- e o7 \- s. h& Z
BYTE biHeight[4];, C, t, J- a/ P- y, ^7 Y
BYTE biCompression[4];- t: }3 O1 v9 h
BYTE biXPelsPerMeter[4];
% Q8 T' ~; k2 Q9 y iBYTE biYPelsPerMeter[4];% ^' o( O' {- |/ W: `) M
BYTE biClrUsed[4];' u2 y/ N+ t: t+ `! d
BYTE biClrImportant[4];7 c3 A. {; `8 Y8 _ p0 X" h
}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型
. {. S* r) X/ ?0 [) h, d; Btypedef struct BitmapFile{( N% l7 h8 M5 p+ b
BITMAPFILEHEADER bmfheader;' q4 R/ G' R7 j1 E$ R' Q+ V2 ~
BITMAPINFOHEADER bminfoheader;: M: J, n: C" e5 ?/ V/ ~0 }
BYTE bitmapdata[3275520];: C5 O. G9 M" H( R
}bitmap;//定义所处理图像文件对应BMP的文件格式
& U- N6 D- F5 N7 A+ y- z8 B//主函数,将图像区数据读入B、G、R三个数组
3 B# k- z( y2 R% @, g: w4 Fint main()
! ~! Z) c* ]; Q' C# X{2 l, Z' m! ~, m! r# o0 x% v
bitmap *ample1;2 w7 t1 z" A( f; N! t
FILE *fp, *fp1;$ Z: f' ]; P1 A% Z3 S8 M" @! _
BYTE R[1280][853],G[1280][853],B[1280][853];
f+ L' _0 A4 d% H% Nlong k=0;
5 Z9 b+ a% f. Rint i,j;
4 ~( N0 G& B* P, O0 gchar name[20]="try.bmp";//读到新文件的文件名2 K4 d4 u, c" Z; `
fp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件& W0 `8 h0 N: w6 K
fp1=fopen(name,"wb");//为写建立一个新文件名 \& w' C% Z5 Y, F0 K/ V
if(! (ample1=new bitmap)){$ ?6 O% I! t" f) i
cout<<"error"<<endl;return 0;, f; H0 d4 G# q$ m+ @5 k2 P
}' A2 m2 P Z( N/ t
else
. q8 T7 m# R, m2 O4 O1 w{: h2 F/ B- o2 s
fread(ample1,sizeof(bitmap),1,fp);6 S# j1 j* K1 ?6 W8 m' D
fwrite(ample1,sizeof(bitmap),1,fp1);
. G3 l* }6 N: s6 q7 Ucout<<"********位图文件头格式:********"<<endl; 5 Y1 b/ ^! q+ Z9 e9 _9 R
cout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;$ F0 _, }; ~* K0 N
cout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;! Y, z' u. r3 Q# U/ b
cout<<"********以下是图像数据区********"<<endl;) o! k/ P$ I d( P6 t* s
//指定像素点,以16进制输出BGR值
+ [/ c# [0 u- W6 l5 d8 H0 D4 s1 Vcout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;2 ]" P! a9 B) Z: m) r
cout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl;
9 U9 l6 G0 v" s/ C- p, ucout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;
) e, G( w( M1 C# w) t0 L B//将图像区数据读入 R、G、B三个数组
: f- l, E) @5 a& |for(i=1280; i>=0; i--)2 c! g( r( h1 c. a* H+ M% Y
for(j=0; j<853; j++)
3 A# U1 W8 J5 K1 a! O% r{* ~1 q+ o. F! U. u( Q* O8 i V
B[i][j]=ample1 -> bitmapdata[k++]; , C7 G1 R/ O8 Y7 D$ r" j: K
G[i][j]=ample1 -> bitmapdata[k++]; ) h- `4 N2 J$ p3 W, z, |6 y
R[i][j]=ample1 -> bitmapdata[k++];
% Y( P$ i- C8 p1 r/ {, K}
- b! t% H9 Y! Z2 T9 _1 g* G//检查是否将图像数据读入数组4 }9 I) K/ [' a5 {7 j% O
cout<<"********以下是内存数组数据********"<<endl;
$ z, H% v [3 D& J" [& y' ]cout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;. T$ } N* W/ _
cout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;
4 V. n2 L5 p1 T1 Qreturn 1; r5 u- j. p |. U9 |
}
+ j6 m7 q4 ?! M9 ]! tdelete ample1;
% S! g8 o2 v6 Jfclose(fp); ! n8 f6 O. W; j/ S- v O! }
fclose(fp1);
0 O+ G) j7 O8 n# v& |" Y4 ?7 {} |
zan
|