- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。
7 ~, t( Z$ m7 d' c. [! L: d, p#include <iostream.h>, M3 i5 R( a0 k S" u! W! V0 f7 g
#include <stdio.h>
, g' i4 g$ l& J#include <math.h>% r' k0 ?9 p4 `2 q. Q2 p% P5 u
typedef unsigned char BYTE;, G% x0 a% Q+ M' ~ L
long Ary2DW (unsigned char p[4]){2 }7 ]' {7 R! W! u8 b! W
int a0,a1,a2,a3;unsigned long A;! T; U: A1 a! y3 t* L# K# }( ?$ W
a0=int (p[0]); a1=int (p[1]);' _2 M, h" |* z7 ?3 @
a2=int (p[2]); a3=int (p[3]);" V3 v ~+ K* z
A=a3*256*256*256+a2*256*256*256+a0;9 p) j' W& y8 y; g+ X
return A;};//实现数的大小正确转换,转换为WORD所代表的实际值 $ k; P) D+ e1 G5 ]! H
typedef struct tagBITMAPFILEHEADER {
' a: j9 K9 W/ I* z& C: VBYTE bfType[2];BYTE bfSize[4];
1 T# |/ T$ y( w# g5 g3 xBYTE bfRcserved1[2];
1 v: k3 @' \7 c# t* TBYTE bfRcserved2[2]; O: t& p+ z4 q
BYTE bfoffBits[4];
4 K' c9 K0 t1 r' ~8 `}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型
+ d: A7 D9 _; A4 ~- M- z0 |typedef struct tagBITMAPINFOHEADER {
7 n; f4 }; t6 ~' k! `* oBYTE biSize[4];9 d8 q5 q4 [' w2 w
BYTE biWidth[4];7 m6 u( g2 Y- K( X# f) \- f# N
BYTE biHeight[4];
' c% ^0 m: Y3 eBYTE biCompression[4];) e2 L7 O: E' I2 D2 J
BYTE biXPelsPerMeter[4];, N2 I0 Q% Z* o2 j! [
BYTE biYPelsPerMeter[4];6 N) J: j) V4 b# o) D. m# O5 Z$ U
BYTE biClrUsed[4];
( D! x. s$ ~4 G2 n- I# j- `. x! KBYTE biClrImportant[4];- Y' h! C1 J8 ]( Y2 [/ C2 R* L3 r
}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型 C( s: J# y! b2 V
typedef struct BitmapFile{ A4 u# E7 L9 D$ H3 @
BITMAPFILEHEADER bmfheader;
' l' G4 V4 B! y3 ^BITMAPINFOHEADER bminfoheader;, `# Y8 Z; {$ J9 z% K; w2 @
BYTE bitmapdata[3275520];
& t) B3 x' h+ W$ j}bitmap;//定义所处理图像文件对应BMP的文件格式5 |5 a p" x$ M$ s! @, T$ @
//主函数,将图像区数据读入B、G、R三个数组6 Q" M% _/ q5 z
int main()
1 A9 g- f$ Z0 J" L: Y{
7 V. b0 z$ m g4 \bitmap *ample1;# y$ l# i2 g% F4 B5 |" a6 T2 C: k3 C
FILE *fp, *fp1;
9 o% g# v* ~0 b* R9 B- DBYTE R[1280][853],G[1280][853],B[1280][853];$ I: t- t) X& }" x/ X8 G/ ~* e
long k=0;$ J4 l4 {* S- B- g
int i,j;
- e4 T5 d p/ { b, R9 {4 o$ ~' hchar name[20]="try.bmp";//读到新文件的文件名. K' C9 j4 u7 o+ z) u5 E5 k
fp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件
/ l G! O" [4 P1 Mfp1=fopen(name,"wb");//为写建立一个新文件名
; ?* h0 L2 M$ l6 n0 ]if(! (ample1=new bitmap)){
+ T) ^7 z% Z' @! ?% t/ l& B7 ycout<<"error"<<endl;return 0;$ Z) x B& V& h0 d$ z; \
}) |8 E1 @1 X- ?/ A# U3 ^
else/ k) H8 C8 V& ]/ W2 n/ L
{* n# x) H$ ^5 y7 k
fread(ample1,sizeof(bitmap),1,fp);
5 j9 h! a3 Q2 k _3 Zfwrite(ample1,sizeof(bitmap),1,fp1);0 M' a) C' I1 L% X
cout<<"********位图文件头格式:********"<<endl; # J1 B( P/ r4 h; k' }- D" I& O
cout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;
( z5 k d, t$ r- ecout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;
# x S7 ?9 B/ V: Hcout<<"********以下是图像数据区********"<<endl;
2 s* d2 j3 `: W; B) r+ d( v8 }//指定像素点,以16进制输出BGR值: Q, `. ^/ y8 A8 t! E/ v" o
cout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;
* o6 S M. g6 Q( x) D% hcout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl;
( s6 T! U! ~# F/ u' X$ s0 k) B: ~cout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;& U7 u9 k$ W: o( Q% d/ j) f7 u& `* t
//将图像区数据读入 R、G、B三个数组$ m5 H' T l7 e9 J/ D
for(i=1280; i>=0; i--)
- y3 K+ N) a3 v* N8 Rfor(j=0; j<853; j++)
# r) }: K: _7 _- A{7 A. S5 Q; h& P6 x$ Y
B[i][j]=ample1 -> bitmapdata[k++];
' x) K& H1 V2 e! G. UG[i][j]=ample1 -> bitmapdata[k++]; , O2 y( G. d! J# M0 z
R[i][j]=ample1 -> bitmapdata[k++];
' @) t; _5 i. g, S( A}
o" a: y4 s6 [) n- L//检查是否将图像数据读入数组
+ u# s5 Q% C" ^& ?+ ]( scout<<"********以下是内存数组数据********"<<endl;
0 l% d* w( e; @; ccout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;
0 S/ k& _; C) L" F# g4 d- P7 {cout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;8 z @! ]" X1 [0 o0 v# G
return 1;
3 r$ E' J3 M& B1 g/ L [7 Z}
7 J" p) d2 b' i. v# \/ \; Zdelete ample1;
1 T% a& s2 F' ffclose(fp); 2 C$ |1 x" r) Y; z) I7 |
fclose(fp1);
- G3 |1 _0 q6 I! w* Q. `} |
zan
|