- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。
0 w/ A2 f; [8 l& ` z#include <iostream.h>9 V6 |3 }/ ^+ H
#include <stdio.h>
x( m6 n5 J/ g7 `; e/ z. s" H2 x7 u# e#include <math.h>
6 _1 k# p" f$ Q6 [# |typedef unsigned char BYTE;. {7 j* [4 f( |' B* m
long Ary2DW (unsigned char p[4]){0 M0 g0 e6 p$ x- O) b
int a0,a1,a2,a3;unsigned long A;
S5 D9 I# Y1 h( ja0=int (p[0]); a1=int (p[1]);+ N; \( r, q7 F* `1 a
a2=int (p[2]); a3=int (p[3]);
% [, |) h" f# E5 CA=a3*256*256*256+a2*256*256*256+a0;/ x/ A; z. ~) F* K
return A;};//实现数的大小正确转换,转换为WORD所代表的实际值
& s2 ~$ B) X; ]2 l$ `2 ^typedef struct tagBITMAPFILEHEADER {
+ d5 A4 g7 w, r P3 M6 ^BYTE bfType[2];BYTE bfSize[4];
6 ]; y8 @+ j% g( T5 zBYTE bfRcserved1[2];
# |9 d5 L+ a) pBYTE bfRcserved2[2];
( Y" u! I$ N" _% r* ^BYTE bfoffBits[4];/ ]* D/ v/ d" A# W7 e
}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型, t' _& m7 L! a" Q* C" k; Z/ Z
typedef struct tagBITMAPINFOHEADER {- p' M" A7 V( C) D7 b: g
BYTE biSize[4];
. H; i2 n! ?1 @BYTE biWidth[4];; V' S, k/ h7 B7 x6 `) H8 h
BYTE biHeight[4];
+ y# n; S6 x& V* O% A$ }BYTE biCompression[4];
; Y# N' q+ u& Z- f" xBYTE biXPelsPerMeter[4];
+ R/ v2 ?5 b2 _- ~) h" lBYTE biYPelsPerMeter[4];0 l) m/ X/ n( R# y: Y' X* w
BYTE biClrUsed[4];
8 |( D @7 l' [$ LBYTE biClrImportant[4];
6 d4 R8 ]' j' U; P}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型1 J; f) h/ v' H. i
typedef struct BitmapFile{
' w1 t6 L# T+ k$ B. UBITMAPFILEHEADER bmfheader;
7 \, U% x' b2 `" i( TBITMAPINFOHEADER bminfoheader;3 q- a$ Y( _0 ?8 N5 V
BYTE bitmapdata[3275520];
9 }+ _8 z D$ W* X$ R; N}bitmap;//定义所处理图像文件对应BMP的文件格式0 Z# n: v2 z0 J' f" b* Z1 p
//主函数,将图像区数据读入B、G、R三个数组
" I; J# H3 }1 ~# bint main()
6 i+ g7 I: X/ W$ M{
^6 ]9 F* ~% y/ ?) }bitmap *ample1;
+ W6 |( _6 Q# B* N% ^8 N' F9 f4 QFILE *fp, *fp1;
3 z: g$ Z. F* `% d5 |BYTE R[1280][853],G[1280][853],B[1280][853];; K1 M) k e0 T) [: |2 y* t
long k=0;1 U9 }2 e* d6 }( k a
int i,j;4 E& |; Z6 B- Z) c
char name[20]="try.bmp";//读到新文件的文件名
; _) w9 e' C6 f0 o$ Gfp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件& q* w( y# l Q3 }
fp1=fopen(name,"wb");//为写建立一个新文件名0 t5 |. [- L) k& ^
if(! (ample1=new bitmap)){3 i* e$ x" l4 d5 m8 T0 n
cout<<"error"<<endl;return 0;# I2 `4 h d2 ^* {, l
}! [; c" {2 x; E: a+ ]8 S" Q
else
( I4 w0 ~7 K7 r- Y. p{
$ R" }( M6 L9 R/ [7 X' ?) S; Qfread(ample1,sizeof(bitmap),1,fp);
/ ^3 {" P7 B) d8 Bfwrite(ample1,sizeof(bitmap),1,fp1);
2 b+ _: \! h6 }9 `# x3 e/ V1 ocout<<"********位图文件头格式:********"<<endl; 5 k3 Y0 N d9 o6 ?; r3 B
cout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;+ [! R6 T& Z% F
cout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;
9 q4 o) p6 a4 X) n% p* `cout<<"********以下是图像数据区********"<<endl;- _6 R& L8 \. R
//指定像素点,以16进制输出BGR值. S( W& A% B6 f. n- [! F: d R+ d8 L
cout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;
: w3 F. T8 M1 Z5 O- mcout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl; % g9 E1 ?; B3 i2 v$ v* s
cout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;* z( s9 u: Z, o0 i
//将图像区数据读入 R、G、B三个数组 Z' y Q- m2 ~7 ]
for(i=1280; i>=0; i--)
; x% u Z% ~( K+ }' n7 v. qfor(j=0; j<853; j++) 1 t5 V" |, S& O
{* j6 O X8 h' {* B, o4 h
B[i][j]=ample1 -> bitmapdata[k++];
% {) {1 c' ]- eG[i][j]=ample1 -> bitmapdata[k++]; # c* x# u9 G" E+ {3 y
R[i][j]=ample1 -> bitmapdata[k++];9 O4 ^' v* N1 l6 Q$ r
}
9 K. C0 I) t8 ^//检查是否将图像数据读入数组( Y- [- _. m1 {$ P) r1 V
cout<<"********以下是内存数组数据********"<<endl;
3 G9 r+ i" T7 L8 T6 Z/ Jcout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;
. |2 V8 `; `% o" }# F9 kcout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;2 I' I/ G3 W4 X$ q. i$ T/ M" K
return 1;
0 V0 X/ T( l: p: B$ H- `3 g/ e}
! M3 u* E. Q0 r: J+ Wdelete ample1;
% V" _6 |5 W/ {. p, q: F2 L$ Gfclose(fp);
, e8 X4 [+ n3 [3 `: ]$ r1 q6 L0 Ofclose(fp1);& K- j, l5 a: Y5 k
} |
zan
|