- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。
4 C1 F& p4 Y# T#include <iostream.h>; z+ e/ {- L. T. |: q. r
#include <stdio.h>
( q$ J( j' o: l* }7 u: @5 J. j#include <math.h>9 B# m% T: B# g$ G; Y) H6 |7 J
typedef unsigned char BYTE;
: v! u9 \; z* }9 O1 z; nlong Ary2DW (unsigned char p[4]){
5 ^+ T, b9 _. t% ]: D, J, C' {int a0,a1,a2,a3;unsigned long A;
% r. d0 D% U. r4 t0 fa0=int (p[0]); a1=int (p[1]);- t* s4 N6 E% D% [
a2=int (p[2]); a3=int (p[3]);
( K( L8 G# o$ u5 O/ o- X) qA=a3*256*256*256+a2*256*256*256+a0;
]9 R5 }' b" oreturn A;};//实现数的大小正确转换,转换为WORD所代表的实际值
; B" ~" W5 M, ~typedef struct tagBITMAPFILEHEADER { C# C/ F4 y0 K. H$ `, O
BYTE bfType[2];BYTE bfSize[4];3 `0 W# l6 W0 t
BYTE bfRcserved1[2];- V* `: v& G2 f1 H* C6 Z
BYTE bfRcserved2[2];
. b: T1 s0 a7 ?$ ^2 W+ v/ jBYTE bfoffBits[4];3 b% e9 Y: p. \4 S1 }
}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型
, e. N( B/ h q4 ]typedef struct tagBITMAPINFOHEADER {/ H( @, F6 Q9 \# x
BYTE biSize[4];- p; T; H) s+ n: |
BYTE biWidth[4];" u" h7 \' F/ Y/ N% Q
BYTE biHeight[4];" H0 L% j$ H3 x- U+ I* Z, k' V7 P
BYTE biCompression[4];
. D8 k1 a7 z. Q i6 ]7 b+ Y) E3 D9 l& a) MBYTE biXPelsPerMeter[4];. U5 \* t6 L+ i3 h! s
BYTE biYPelsPerMeter[4];
+ _9 t, u2 m2 B+ y3 o3 _% O$ ^( WBYTE biClrUsed[4];
0 h ]7 J }2 g r- b( a) w2 _0 ~BYTE biClrImportant[4];! i2 t7 Y1 U$ @7 m3 S
}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型5 \ c+ _8 n2 n7 d+ ^
typedef struct BitmapFile{
+ G) z3 m) i8 Q/ M3 e( gBITMAPFILEHEADER bmfheader;6 }$ D* }$ q6 c/ b4 w. A$ g8 a2 |- H. b
BITMAPINFOHEADER bminfoheader;& t0 J2 e$ B/ c
BYTE bitmapdata[3275520];
6 ]" u R( \/ w- F( T}bitmap;//定义所处理图像文件对应BMP的文件格式
; I3 j. ~3 e H7 L//主函数,将图像区数据读入B、G、R三个数组
) L3 ~9 [# E+ f3 z( n9 \6 {5 yint main()
- `' }) j% \& Y{) m! n+ `; v( n# |8 s+ ?! G" s9 q
bitmap *ample1;6 l% x# i8 ^6 S6 o1 H+ ]- Q/ m0 L
FILE *fp, *fp1;0 S% P! E! e7 a) g7 Q
BYTE R[1280][853],G[1280][853],B[1280][853];
# \' c6 ^* T* v" Vlong k=0;' q& _# L8 d- I) N
int i,j;
$ E2 R( X3 [8 W: ?+ M7 ichar name[20]="try.bmp";//读到新文件的文件名- I4 _0 e8 c* e
fp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件
5 ^- F5 n* @$ n y5 J& `# g, nfp1=fopen(name,"wb");//为写建立一个新文件名% V, E8 J; m" _# }% D; e6 O
if(! (ample1=new bitmap)){
- K( k: a$ O2 T$ i# S$ D+ z f+ |cout<<"error"<<endl;return 0;
1 b6 S8 ?/ X; g: d- n( X}) m' ^" _ e$ R% H ?1 `* c
else
7 `4 X s2 J. O8 y) W/ o7 J{" P& V- \# b/ b% k! ~
fread(ample1,sizeof(bitmap),1,fp);8 B; P& p4 R. R" L& S9 j# x
fwrite(ample1,sizeof(bitmap),1,fp1);+ }1 p6 ?: x2 b/ m+ s7 m
cout<<"********位图文件头格式:********"<<endl;
& |3 u, f1 m) {0 |4 H& [) [# lcout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;
\2 U+ G6 R E+ ^. Ucout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;
* t+ A9 q+ p) `) l scout<<"********以下是图像数据区********"<<endl;
1 r0 F. J, G0 T% q: y# j/ l/ y% L8 ?//指定像素点,以16进制输出BGR值* ?1 I7 x# t0 B6 I+ f( n" F
cout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;( q5 } \) w% k1 D0 ^& x
cout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl;
* \( y9 ^9 c# Lcout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl; l/ b ]; y! Q& z4 J
//将图像区数据读入 R、G、B三个数组
3 U9 q+ C x5 F, [% Rfor(i=1280; i>=0; i--)- ^' l) G+ K4 v% Y& Z) K6 ~! R
for(j=0; j<853; j++)
, C5 F# Z5 X* F. w$ `3 I$ ]{
, l: g( E! U3 t+ F x. a; |* x) O) yB[i][j]=ample1 -> bitmapdata[k++]; ( B$ ~4 w1 d f/ y
G[i][j]=ample1 -> bitmapdata[k++];
3 N6 {' |/ C* F: O, kR[i][j]=ample1 -> bitmapdata[k++];
2 S" B. z8 O8 D2 X0 J}/ V# T- r' H: y. a4 |
//检查是否将图像数据读入数组
2 y6 V. ^- \7 g8 v1 }cout<<"********以下是内存数组数据********"<<endl;
. Q+ x1 G+ Q" J2 ^4 `, Xcout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;% J. `& U( u0 h) z
cout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;. |. y$ t6 v: [, M: s' U
return 1;" {9 M) R( d5 h* V4 e) ?
}" m/ W: D5 H- Z% D$ }
delete ample1;1 d& |9 [3 N2 _* A2 V+ S
fclose(fp); \; x9 b4 W$ c- B
fclose(fp1);; [# V4 { t8 n9 W: l
} |
zan
|