- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。' C& ]9 d7 l% W2 P* _% u0 H
#include <iostream.h>
( M" T1 J- E. l1 w#include <stdio.h>
5 E: Y/ s- F" i1 w5 W#include <math.h>
8 _! b" I$ s/ \: v! D: s- jtypedef unsigned char BYTE;4 L, g: v1 w8 o. R
long Ary2DW (unsigned char p[4]){/ x, X p2 q6 ~
int a0,a1,a2,a3;unsigned long A;$ h% g' U: T8 i
a0=int (p[0]); a1=int (p[1]);
4 C! Q! [# H/ W5 H3 Y. ma2=int (p[2]); a3=int (p[3]);( Q* d7 D+ d) u6 t3 t, l) U
A=a3*256*256*256+a2*256*256*256+a0;
, g$ ]5 m" i# h" `( preturn A;};//实现数的大小正确转换,转换为WORD所代表的实际值 ( D, m" F0 v. W* o
typedef struct tagBITMAPFILEHEADER {. o( f# H" B& ?2 S* u" P5 R
BYTE bfType[2];BYTE bfSize[4];! @! ^) F$ Z: J
BYTE bfRcserved1[2];
9 m7 a0 P+ R6 `- U0 ?. j, YBYTE bfRcserved2[2];4 T3 [% i/ U; E6 K
BYTE bfoffBits[4];
2 |# o; [4 a9 p# d2 F+ s+ F3 w* A}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型
2 `, `: u- A0 ]& U% Q: Rtypedef struct tagBITMAPINFOHEADER {4 @! \+ L6 {+ Y/ r6 d5 H# A& ~
BYTE biSize[4];
& w$ ~! T7 A) U2 HBYTE biWidth[4];4 Y5 _5 h3 n p# ~" V9 S O
BYTE biHeight[4];
. r+ I8 D' T* n% }& m) m. v. t9 J* ZBYTE biCompression[4];
1 G A9 u% Y3 T+ n- Q9 `% wBYTE biXPelsPerMeter[4];
0 t/ F2 W/ I$ Y+ V3 W# i4 fBYTE biYPelsPerMeter[4];
* e$ z% d1 i! e) v! }4 @6 t KBYTE biClrUsed[4];$ y0 S( u- \0 ~- \
BYTE biClrImportant[4];
7 L ^) p7 h2 M3 b! ]1 a* L7 |}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型
) d, z* f9 b2 ]0 k* k) l# U atypedef struct BitmapFile{
5 d |$ W; G6 ~8 K! lBITMAPFILEHEADER bmfheader;% {; |5 `0 F# S9 M
BITMAPINFOHEADER bminfoheader;9 u2 a' r8 S' N
BYTE bitmapdata[3275520];) h& _, K) B# e9 q( f1 L) R
}bitmap;//定义所处理图像文件对应BMP的文件格式
6 T5 o7 P7 s" Y: ?) @& q) V//主函数,将图像区数据读入B、G、R三个数组8 B7 ?2 b* f1 S8 s/ X+ ?0 b: g5 H! l0 T
int main(); A1 V% C) f# U
{$ P! g, x. P! ]) y0 T' ~
bitmap *ample1;1 ~: J! z: h" i/ D( F& [6 n
FILE *fp, *fp1;
2 Z2 j% V% S! y- JBYTE R[1280][853],G[1280][853],B[1280][853];! ?. X- y# J" U4 g& P# T" n# I
long k=0;( k" r" w. @4 l7 ^6 W
int i,j;
* U$ p# i" V/ ?7 h$ u; rchar name[20]="try.bmp";//读到新文件的文件名$ A+ S0 w) `4 r% p! m. c+ @
fp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件
3 H% v |& P6 g9 ffp1=fopen(name,"wb");//为写建立一个新文件名
3 _) z2 o) l3 R F1 E% }2 n% Jif(! (ample1=new bitmap)){
* d1 t5 N! Y* A5 o) H; i9 Icout<<"error"<<endl;return 0;) s2 e9 H. Z2 S$ { n2 c4 ?
}
# o0 C$ V6 v" j2 m5 K" velse/ A$ j! b+ n3 y- R
{
" {! n% v9 p+ }4 P# a% ]fread(ample1,sizeof(bitmap),1,fp);/ ?3 d: ?! s( N# M( x" e
fwrite(ample1,sizeof(bitmap),1,fp1);8 ` s- m$ B3 o1 x; Y
cout<<"********位图文件头格式:********"<<endl;
7 {7 I! U" o3 @# mcout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;' a+ S+ a: t7 a; e6 [! G
cout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;
; A" V9 Z3 {8 s7 _cout<<"********以下是图像数据区********"<<endl;
2 x$ f5 i* I$ W) L1 v9 [" J6 ?* }//指定像素点,以16进制输出BGR值8 S$ G5 e- c8 k% G, C
cout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;
, f. l* `9 l A0 Zcout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl; 3 S& ~# [2 f, _4 k$ Y8 X
cout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;! B( o* x2 r0 H/ F/ k& ~; L u
//将图像区数据读入 R、G、B三个数组
) p1 s5 `8 l+ q. y9 Bfor(i=1280; i>=0; i--)
! h6 z/ w8 V' Q! V" U7 efor(j=0; j<853; j++) - l# u! D# u5 |; j7 M: c
{
8 F1 U, K2 s! s7 B: xB[i][j]=ample1 -> bitmapdata[k++]; ' G% ]" G/ x7 ?* _
G[i][j]=ample1 -> bitmapdata[k++];
/ t, Q* r4 |' M* [; K6 IR[i][j]=ample1 -> bitmapdata[k++];* p3 G: v. O* F" R, M
} C: W% x* t; P: `7 \4 y
//检查是否将图像数据读入数组- c* z3 b+ M/ J
cout<<"********以下是内存数组数据********"<<endl;
: f: C. D9 d ?* g& n- x; ncout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;
6 k, V1 Y/ ~8 X" I! M" ucout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;% k: K( n/ d" T; Y, Q, X$ ?1 Y i0 \
return 1;
& n3 p+ g0 X8 U- ^* }# @. e; p}
1 I) t# t* g3 i- Odelete ample1;
# X: N) l! y. g# L6 Mfclose(fp);
( G" b! V$ G& V' [$ Ifclose(fp1);5 v) B! B7 @( I9 |2 ], i
} |
zan
|