- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。3 I! K4 b# r8 |3 R
#include <iostream.h>
0 e& O, ], e, s8 u; x0 u! M7 E#include <stdio.h>8 G$ G3 m9 U1 L8 ^; h
#include <math.h>' e, v5 L# [" T8 a: G: n
typedef unsigned char BYTE;0 @7 M2 A6 |& n/ h, n; m, ]
long Ary2DW (unsigned char p[4]){
5 [7 @: z3 M* [4 p5 I1 jint a0,a1,a2,a3;unsigned long A;
- r! A& F, d! `# N2 i5 Ca0=int (p[0]); a1=int (p[1]);
8 F. t+ L& E( T- ?0 D$ Ua2=int (p[2]); a3=int (p[3]);
" j F* r! b0 X) H: R6 K8 V% x( \A=a3*256*256*256+a2*256*256*256+a0;
5 X4 i3 A9 l& u b$ `return A;};//实现数的大小正确转换,转换为WORD所代表的实际值
2 s5 ]$ ?7 X, ~" ], q8 i- \9 Btypedef struct tagBITMAPFILEHEADER {$ M. L7 B6 y) n" x: Y5 K4 K- P
BYTE bfType[2];BYTE bfSize[4];! a6 P. ? V7 h2 p5 ^) p. \* m
BYTE bfRcserved1[2];
) L0 O+ S0 e: ^3 O( U3 Y" l2 z7 V# xBYTE bfRcserved2[2];8 E: M1 g0 t5 K# W) @
BYTE bfoffBits[4];0 _3 }) A& z1 x: A# k0 j
}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型+ Q2 _% T, u* X7 D A$ d
typedef struct tagBITMAPINFOHEADER {
# ?, n i# o( |9 A$ F& @BYTE biSize[4];
6 ~8 S' L) W9 Q+ x# e# t- u/ rBYTE biWidth[4];
- _- i5 e3 D& xBYTE biHeight[4];6 N0 J* [! K6 x7 K( g
BYTE biCompression[4];
& x$ \, ]+ f2 s/ A- j9 z7 q3 DBYTE biXPelsPerMeter[4];
$ N. k/ a- x1 d5 K: C8 J* X( H; MBYTE biYPelsPerMeter[4];
1 l/ F. M/ ^9 F. TBYTE biClrUsed[4];
C! ~/ m2 ~ wBYTE biClrImportant[4];
" z: N* t9 Z* n$ ?$ X& r$ o5 Z}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型
% f% p" f# ^ ~) W( ?5 etypedef struct BitmapFile{
% ]8 l; c4 M S! F4 EBITMAPFILEHEADER bmfheader;' Y; @5 z/ x6 O
BITMAPINFOHEADER bminfoheader;
& V7 ^2 ~, B3 B3 c! M5 T; uBYTE bitmapdata[3275520];: @- l# F5 j9 l n7 V, \
}bitmap;//定义所处理图像文件对应BMP的文件格式
/ V! F2 m7 E2 I# j% b9 W//主函数,将图像区数据读入B、G、R三个数组2 I/ M% K- C0 L! }1 z) J4 i( d& f
int main()3 Z2 D) a6 v" Z5 W. J& q
{( z+ K8 a$ @. |( g: ]" [( ~& x
bitmap *ample1;5 d2 H' f6 B3 y
FILE *fp, *fp1;
. G: x' r5 a$ X! t0 _BYTE R[1280][853],G[1280][853],B[1280][853];
5 n. g. U0 f& I2 m0 n% _7 slong k=0;
3 R5 D" n5 L, `) m$ mint i,j;3 w$ H: O3 H4 K# O
char name[20]="try.bmp";//读到新文件的文件名- O, h5 M" j* y6 j4 i4 C# P+ n
fp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件
- d% v/ \& G/ z# ofp1=fopen(name,"wb");//为写建立一个新文件名
8 I6 @$ q) f6 tif(! (ample1=new bitmap)){3 c# ^4 D' e- S1 m
cout<<"error"<<endl;return 0;
& ^6 n$ P+ L" B" t, [3 Z2 V' }}
% L3 e6 F/ n' K0 felse! L3 c6 p# b9 B- q8 @+ m* l
{) }/ b Y+ V. b( q
fread(ample1,sizeof(bitmap),1,fp);. Q. w- H$ o% Q3 X! N# C3 D
fwrite(ample1,sizeof(bitmap),1,fp1);6 S+ x0 T( W$ J& p% k x
cout<<"********位图文件头格式:********"<<endl; * x$ p' t& @/ ^+ \& I
cout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;
) U" h& ^6 ~) g! @cout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;2 M9 ^% }2 W! j; r- J1 u
cout<<"********以下是图像数据区********"<<endl;0 }' _: A& j5 f; w* }* a
//指定像素点,以16进制输出BGR值8 {4 d# o2 z' f5 o9 R. H5 k
cout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;
/ i# `) N& C) pcout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl; , t" ^7 d5 ]$ y! c
cout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;" L$ u' d' V F7 L- O/ s
//将图像区数据读入 R、G、B三个数组! o' O8 T2 T* k
for(i=1280; i>=0; i--)
( t: w! B5 c" Z4 a8 @for(j=0; j<853; j++)
9 o; Y* y' J7 o/ h{0 s& O" i/ S( X7 r0 r8 _
B[i][j]=ample1 -> bitmapdata[k++];
- n" P4 n+ o' i/ h+ kG[i][j]=ample1 -> bitmapdata[k++];
! _( k. O' H& l: s1 q7 bR[i][j]=ample1 -> bitmapdata[k++];
( h7 J0 ?+ M. _, j/ c& A}
" F' b; q$ ^9 P//检查是否将图像数据读入数组
$ U3 x9 m( b; w% s) Ycout<<"********以下是内存数组数据********"<<endl;- ~: c' e# H4 y6 r: m1 z7 ?7 C
cout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;' d1 C5 _8 F0 F- ?3 r: r+ Z
cout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;
, U. p7 m$ {7 ?; B- m, Xreturn 1;
' ~0 d+ B% S2 K) ?- `5 g9 a}* E- F+ `1 t& E& B7 v* V3 Q
delete ample1;
9 b6 U2 M5 i9 f8 v0 ?fclose(fp); 1 H* E i8 l+ |& v" i5 ?7 K) J( l3 l
fclose(fp1);- p0 g% L/ M5 h6 @( c
} |
zan
|