- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。
" d, v: S1 w! W+ F( ^% V#include <iostream.h>
& S5 L* ?: }% H# U#include <stdio.h>
5 f$ { s) i/ o, J: X& x3 E U#include <math.h>/ ~6 r' U0 t+ D0 o1 C8 q' x4 V
typedef unsigned char BYTE;& K. d9 e- t) q6 U: k- v! {
long Ary2DW (unsigned char p[4]){; d' ?% z7 f- K1 s/ Z
int a0,a1,a2,a3;unsigned long A;9 }8 O+ [; @2 C- v$ ^7 U# j, A; X
a0=int (p[0]); a1=int (p[1]);
$ W. E+ H+ X% B+ s, Ua2=int (p[2]); a3=int (p[3]);" D3 l+ B, J$ [# b
A=a3*256*256*256+a2*256*256*256+a0;6 X1 l0 ]- t6 K1 [
return A;};//实现数的大小正确转换,转换为WORD所代表的实际值
% l/ S4 p) B' W3 itypedef struct tagBITMAPFILEHEADER {
1 x( x# F4 |! Q1 h) uBYTE bfType[2];BYTE bfSize[4];
/ e$ J& J m- b8 tBYTE bfRcserved1[2];
7 i& S3 f; C4 W _) I& c- x, }BYTE bfRcserved2[2];
" @8 ]% m6 [% R* ]# C; ]% d9 yBYTE bfoffBits[4]; i8 c9 {0 b9 f `2 F
}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型
1 J- l' q% f$ E# I1 r- o( u1 ltypedef struct tagBITMAPINFOHEADER {
$ ~) [7 o0 u7 j# B% A% j! L$ DBYTE biSize[4];3 ?" D+ w2 J/ |3 c+ T
BYTE biWidth[4];
! _4 v6 `. A: q, s* y" w' KBYTE biHeight[4];7 l/ c) D* T( \. {/ [. x/ S
BYTE biCompression[4];
9 W1 H6 {# b) O& RBYTE biXPelsPerMeter[4];8 e' X$ r y2 q$ w# s+ R! ?5 N
BYTE biYPelsPerMeter[4];# w6 V9 f0 D0 c* `
BYTE biClrUsed[4];
( i' U0 k* i& p ^, \BYTE biClrImportant[4];" B; u5 ~# Y7 {/ i2 I8 ~1 e4 P
}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型: x& R) x% M. L8 u L
typedef struct BitmapFile{
# B8 C7 v0 w" N6 CBITMAPFILEHEADER bmfheader;
* B, A- g4 M2 O' Z' p g+ H% s2 `' O+ XBITMAPINFOHEADER bminfoheader;- P. N$ |7 ~$ o
BYTE bitmapdata[3275520];# k& g. u8 |, e* S( k1 y8 m, G
}bitmap;//定义所处理图像文件对应BMP的文件格式# u4 c( i6 Z% X I
//主函数,将图像区数据读入B、G、R三个数组/ Z+ ^6 @4 d( f& c6 j- f
int main()7 w! Y) B' y) a8 g) L/ c- ]
{
7 \3 m* t: L8 t; [bitmap *ample1; ~0 M5 p" D; A6 @3 p p7 L% V
FILE *fp, *fp1;% C5 o, U9 g, v/ s# K$ e) A
BYTE R[1280][853],G[1280][853],B[1280][853];- s0 ]- ?/ U# f8 ?( X
long k=0;
/ Z& Z! Y/ ^8 Tint i,j;
+ Y* f7 _9 V5 w2 b3 @1 D& Lchar name[20]="try.bmp";//读到新文件的文件名
q( `2 f0 T8 R( Ufp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件
1 t8 s: {$ ?' L/ Bfp1=fopen(name,"wb");//为写建立一个新文件名/ w' H- T5 j( l* m
if(! (ample1=new bitmap)){
3 c+ K4 N J* p; x7 t7 Tcout<<"error"<<endl;return 0;5 `2 w- S4 m- F3 n! Z, @ V8 v1 s
}
7 k# T& C8 B0 C, E# ]2 selse
5 q, A( }! Q/ O2 m W5 {% X{
" C8 x3 j/ z$ |fread(ample1,sizeof(bitmap),1,fp);, @# }, r' x2 V$ O
fwrite(ample1,sizeof(bitmap),1,fp1);( p0 e# Q9 F2 d" z/ y
cout<<"********位图文件头格式:********"<<endl; ' V1 H/ Z0 g C! }; c, d
cout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;
, c) a5 p# w7 N6 l z4 _cout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;# V( J1 B# d' a* F+ G$ h2 J2 ?
cout<<"********以下是图像数据区********"<<endl;- X Y& W( B6 ~/ S; m$ Q
//指定像素点,以16进制输出BGR值
$ k7 A) a, }# Q! F/ C8 R, U# \cout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;! d( a- ~ v$ Z4 S
cout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl;
! A, Z( R3 w9 s$ R% F& ecout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl; T! q! L, Y4 }; _, G/ T4 s
//将图像区数据读入 R、G、B三个数组: h* f3 r8 W d6 a! f+ k
for(i=1280; i>=0; i--)
# l. L- y9 j& D9 d* |8 Sfor(j=0; j<853; j++) . J' { @. m2 w; d% }+ P6 S
{ T. @5 w' C) z/ B/ `
B[i][j]=ample1 -> bitmapdata[k++];
- L; ?% p5 K, J) |G[i][j]=ample1 -> bitmapdata[k++];
3 R4 Z7 Z9 }: U( t! ?. ^( vR[i][j]=ample1 -> bitmapdata[k++];5 z" \0 N1 ]4 Y
}; |; l7 g3 J8 h
//检查是否将图像数据读入数组
1 L+ u1 B7 G( Y6 y$ R N! H5 ocout<<"********以下是内存数组数据********"<<endl;
' l; k7 s- ]9 L1 Z: ~cout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;
; Z7 x7 z# D# E6 H$ G& o- ?9 icout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;" G4 l% k7 G; D5 A$ O* Q
return 1;
. S+ }+ S, ~% o8 ^' a6 }+ \" \}8 h8 W/ r1 q5 C
delete ample1;$ o: a" z3 w7 e+ p
fclose(fp);
3 p) q( l6 |* e/ I) W& x5 J7 W Qfclose(fp1);- b6 _) H; g) E; k" h9 }( q
} |
zan
|