- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。. F( i- m) i7 |& ?6 X% ~' o' N
#include <iostream.h>. E2 @, i( C+ b* y& I
#include <stdio.h>. W) b& M. c0 Z; ]
#include <math.h>3 w: g3 D2 c- g$ D
typedef unsigned char BYTE;. E. r2 v8 Y6 N4 a
long Ary2DW (unsigned char p[4]){
% V: p7 R4 Q1 P7 }5 Iint a0,a1,a2,a3;unsigned long A;7 c# p. L! H! ?' `5 N- C# ?
a0=int (p[0]); a1=int (p[1]);
' E# V2 p* {& I7 c: Y6 La2=int (p[2]); a3=int (p[3]);8 n( @$ i* p+ g& [
A=a3*256*256*256+a2*256*256*256+a0;4 S* O! Y& n& s& U' f) ?+ |+ U
return A;};//实现数的大小正确转换,转换为WORD所代表的实际值 7 y1 \" l9 H6 |2 J
typedef struct tagBITMAPFILEHEADER {
2 A9 a9 `( f. ]4 B q, Z- a# k! z& YBYTE bfType[2];BYTE bfSize[4];
& `- O0 }" s+ bBYTE bfRcserved1[2];1 z' H% @6 [! t8 W8 t, \+ X
BYTE bfRcserved2[2];' w; _) u/ v Q
BYTE bfoffBits[4];
$ x# P- c8 g9 x, f y; N}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型- h# f1 ]. _! S9 e( E4 \
typedef struct tagBITMAPINFOHEADER {8 a1 G% \: {6 \! x3 [# j. m( d
BYTE biSize[4];. T& v, Y9 S6 Z6 q7 F& P/ A% s
BYTE biWidth[4];
8 ?' d$ }: h8 ?( }8 PBYTE biHeight[4];! q0 c6 G" z. Q" ^$ n
BYTE biCompression[4];7 ^! Z! P% ^7 w& z0 D) }
BYTE biXPelsPerMeter[4];, s8 m& n6 _, s' K- D
BYTE biYPelsPerMeter[4];
/ V1 V, @; {- A6 ^3 z SBYTE biClrUsed[4];
! K- U/ w: d8 d$ `! K) G" Q' x+ \6 pBYTE biClrImportant[4];/ m- ?* e) o. Z, u5 u) K3 [8 a
}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型
4 G+ i2 Y' J9 m& a6 H" c) X7 E# N Rtypedef struct BitmapFile{
/ _) |5 K* X3 \/ n OBITMAPFILEHEADER bmfheader;) l2 k# ^: X( ]; \$ N5 I
BITMAPINFOHEADER bminfoheader;
I( }; a: j; [2 X" Y, b- k+ VBYTE bitmapdata[3275520];
3 b" h& Y, m4 Z- |- O# _}bitmap;//定义所处理图像文件对应BMP的文件格式) j- Y6 p# i' a; Q7 |6 e
//主函数,将图像区数据读入B、G、R三个数组) S' t( t' E- r1 X; E% q- }- B: t
int main()* h$ i' P% e K7 |6 Y+ u& j( Q" H& P
{
4 U0 g! e6 n" R8 ubitmap *ample1;
1 L1 x" M F y' x! NFILE *fp, *fp1;) } q" D2 r% z3 E
BYTE R[1280][853],G[1280][853],B[1280][853];
- ?+ N6 X' T, Q1 C: E1 D6 L' Dlong k=0;
/ ]/ m8 M+ U+ U1 m+ Rint i,j;7 ], V: w1 w/ W3 o! F( [: z$ f+ Y; a
char name[20]="try.bmp";//读到新文件的文件名
+ T( [+ a1 d* Q7 B! Ffp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件- K3 C g9 s8 R u; I
fp1=fopen(name,"wb");//为写建立一个新文件名
1 k: u0 |# {6 y7 Uif(! (ample1=new bitmap)){* _' ^, n" N8 o0 k
cout<<"error"<<endl;return 0;/ v/ [$ C$ F( ^3 U# @0 N) a
}/ m" | P8 n! f) | _5 H/ _+ S
else( M5 I& z, `, A) _
{
0 ?! U% y% Q p3 w+ y' d' Kfread(ample1,sizeof(bitmap),1,fp);
" V$ F" k, S5 p5 hfwrite(ample1,sizeof(bitmap),1,fp1);
8 t. |' [& P2 v/ N7 u. F6 fcout<<"********位图文件头格式:********"<<endl; . D5 Q9 a0 E3 @" t3 g R8 V; m
cout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;
- V# y# V- U* _8 ocout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;) Y3 U7 z1 V7 G/ B! D
cout<<"********以下是图像数据区********"<<endl;+ q; k0 O L- X- d
//指定像素点,以16进制输出BGR值
0 D* n R; ~4 `$ Ycout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;
8 @2 Z0 c& G" D$ J1 N9 _cout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl; ) a: Z& V; @3 X+ {
cout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;
4 ^/ I. m- I# b" K3 J/ [//将图像区数据读入 R、G、B三个数组# g. g/ B2 S1 k' g% V
for(i=1280; i>=0; i--)
% @, Z: O Z, J0 f5 ^: Hfor(j=0; j<853; j++)
2 ^4 R2 H- C/ x4 ]& i9 n. q' |{
* w. q& V5 A i2 j; b9 CB[i][j]=ample1 -> bitmapdata[k++]; 4 J! V$ b* v6 I8 _" d
G[i][j]=ample1 -> bitmapdata[k++];
/ \$ k2 X/ u7 V' y+ u; `; c$ fR[i][j]=ample1 -> bitmapdata[k++];
0 Q* y9 ]# j4 |* z0 m}7 d0 s. ]7 ~' } R
//检查是否将图像数据读入数组5 d' K w) O0 p+ i/ _' I
cout<<"********以下是内存数组数据********"<<endl;
% E. e8 z: O9 @, _6 @cout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;
7 |! x$ v$ t$ ^# ycout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;) E! ^( P1 P) {- x
return 1;
: j) e, V2 f: @! Z9 D1 @' c7 G9 @}% Q* j, U/ j9 }2 [( C
delete ample1;
" s/ `: d M3 h |fclose(fp); # `/ |4 ?! ]( N9 t3 p/ q# S
fclose(fp1);/ o9 R0 z/ d4 n$ i8 h- D7 R1 b8 h
} |
zan
|