- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。 @' r/ X6 ^$ P, `; y- |9 W3 q2 `
#include <iostream.h>
4 L# N$ U1 k# P' @2 j9 \% Y#include <stdio.h>
0 T3 n7 S( ~1 b) |$ I4 t+ i. m/ [#include <math.h>% P2 s( R, I& t$ V2 Y
typedef unsigned char BYTE;
9 |( f! w$ ^% G& }- }7 k5 H0 ylong Ary2DW (unsigned char p[4]){
7 P+ E9 c$ j2 |1 @; ^4 y* Nint a0,a1,a2,a3;unsigned long A;3 Y! \9 ]. [4 N( o- {
a0=int (p[0]); a1=int (p[1]);: y( _2 n# U |
a2=int (p[2]); a3=int (p[3]);
2 j0 ~( D2 w; i% C" z, HA=a3*256*256*256+a2*256*256*256+a0;2 O$ E! j# R8 L( s; `. B
return A;};//实现数的大小正确转换,转换为WORD所代表的实际值
/ r! G: Y2 w) |1 f/ }typedef struct tagBITMAPFILEHEADER {
0 K0 g, M) Y* x6 VBYTE bfType[2];BYTE bfSize[4];
, ^" z- r% a" g5 q8 xBYTE bfRcserved1[2];) |6 T* G/ K }/ f, t* N
BYTE bfRcserved2[2];5 I/ L$ a4 T6 {, J8 b2 p' j4 v" ^; A
BYTE bfoffBits[4];1 y- [5 b9 F! J$ H' O( i
}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型
# o2 |5 X+ |' ]7 d# }, ` Mtypedef struct tagBITMAPINFOHEADER {4 ^. e7 d- A% d9 G4 X/ z
BYTE biSize[4];! h; T& U* B# b6 G1 C- g/ b9 d
BYTE biWidth[4];
1 n b* t, T6 [BYTE biHeight[4];
* ]# T. J H; V" H8 YBYTE biCompression[4];
3 \4 |6 W' N# D3 Y$ s1 S2 O5 nBYTE biXPelsPerMeter[4];1 B: Q f- u" M. X" a$ C
BYTE biYPelsPerMeter[4]; L% g3 }7 k* D% H* @
BYTE biClrUsed[4];
3 { C$ }5 q B. P9 bBYTE biClrImportant[4];7 W4 p7 m, U5 W4 _; B" k9 u4 {
}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型
; E- Q6 [$ c5 g( Vtypedef struct BitmapFile{
9 r3 u- N* N+ H+ A" l" l4 \BITMAPFILEHEADER bmfheader;
) j8 P+ d" p) h) I9 _BITMAPINFOHEADER bminfoheader;
' N3 n" M" m- D4 Q( \BYTE bitmapdata[3275520];
. ~, i: h) @ \1 t# }& ^}bitmap;//定义所处理图像文件对应BMP的文件格式
3 M) P) P. ^3 T/ T//主函数,将图像区数据读入B、G、R三个数组9 E" j3 J+ G- R' z" e% d; c" k
int main()
+ u7 @9 k1 H+ R{0 p, A& c0 M3 u7 m* ^
bitmap *ample1;
- S9 z" _9 B i8 SFILE *fp, *fp1;
8 @; M$ S$ q# J7 L' }BYTE R[1280][853],G[1280][853],B[1280][853];
8 }4 u) T/ ?$ s; N ?long k=0;. L9 W* C) h( n& C! s8 Z; m
int i,j;) s9 F& G! o9 C# O1 ?5 s
char name[20]="try.bmp";//读到新文件的文件名
" D- t3 n! e3 L" L; o* W: B/ Z5 R) mfp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件
J& h( l* _# r* C5 Afp1=fopen(name,"wb");//为写建立一个新文件名
: `9 ^7 W/ [: S7 p$ Kif(! (ample1=new bitmap)){; t( I n- o# I" \
cout<<"error"<<endl;return 0;5 l- ^4 F7 A4 l8 C
}
* L& u, j/ ^5 k' f$ k. |else% \. y# @9 W4 U' p* _0 @ P
{
( H; _: b: u5 Z0 Yfread(ample1,sizeof(bitmap),1,fp);6 f) [1 |/ H: s- a
fwrite(ample1,sizeof(bitmap),1,fp1);
% Y- _! K1 Y- A$ R; \cout<<"********位图文件头格式:********"<<endl;
9 u C% S9 `# a1 P# j! f2 C) H+ Mcout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;
# d. E5 k, `; Y, `: tcout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;
; k. b* Z0 W `& Y' T4 ^7 o* S$ ]cout<<"********以下是图像数据区********"<<endl;
1 m/ `5 O x" S3 r/ n$ x//指定像素点,以16进制输出BGR值 z" B& s; }; S) m8 J6 G
cout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;6 d) w8 I+ {9 U" l
cout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl;
5 p, f6 ]/ n) g* g( i0 Ocout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;$ n5 K! E8 I( @
//将图像区数据读入 R、G、B三个数组
2 u4 O g6 I! k, i! ]6 l: T* u5 xfor(i=1280; i>=0; i--)
& i3 M4 S, w) J: L8 ofor(j=0; j<853; j++) . f t) k Z2 k
{. [% T9 e, R* O! y" t
B[i][j]=ample1 -> bitmapdata[k++];
" J5 D4 O3 g DG[i][j]=ample1 -> bitmapdata[k++]; # X! s0 v9 L. H* [# R9 X! b
R[i][j]=ample1 -> bitmapdata[k++];
" s, F) o' _: b, @}
% }2 I; i1 `2 I9 I//检查是否将图像数据读入数组* j. e% Y& X7 e
cout<<"********以下是内存数组数据********"<<endl;$ s6 \" h2 [& _- \
cout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;
, a. ]5 r* _& Z# {, c) z- T$ d, \cout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;
# \, _. g4 X2 Q2 c' y" b) [- xreturn 1;
6 m9 S; r3 f6 d- n}7 f" X# e; H6 t+ F- T3 |# @
delete ample1;) ^+ r6 x8 ~) X, b( U) Y6 [% {" \
fclose(fp);
& \( i) J* i6 D5 i8 i7 Lfclose(fp1);: Q, ?4 q. W |
} |
zan
|