- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。
( T8 S5 b' t; W0 a0 t; f1 r" M; s# J#include <iostream.h>
+ w9 ?9 M; w) Q) _7 o# R. J- H( j+ R, P#include <stdio.h>
; _8 U2 N2 g+ V" e/ N, E#include <math.h>
( O/ l/ E. o/ i4 x% g Otypedef unsigned char BYTE;4 ~" F1 L0 H, E1 \
long Ary2DW (unsigned char p[4]){3 n+ a4 O% ]- F
int a0,a1,a2,a3;unsigned long A;' ?5 d* r: y8 \& I e
a0=int (p[0]); a1=int (p[1]);0 Z' J8 I: k0 `$ o8 I4 b
a2=int (p[2]); a3=int (p[3]);. R3 n0 Y0 y, E5 }
A=a3*256*256*256+a2*256*256*256+a0;
/ u7 W" y& y. Treturn A;};//实现数的大小正确转换,转换为WORD所代表的实际值 # q3 j/ V# T, J" s& k9 T+ M
typedef struct tagBITMAPFILEHEADER {+ m) m4 F( t- N" N; d& U
BYTE bfType[2];BYTE bfSize[4];
" v% t# r9 g. QBYTE bfRcserved1[2];
- e' `; p2 _7 l4 MBYTE bfRcserved2[2];
$ R' }) i, V6 k% I& ^1 K4 {BYTE bfoffBits[4];
% w# }/ e8 v4 Q9 y# ^: @}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型8 L7 @1 P) }8 C) z; B
typedef struct tagBITMAPINFOHEADER {
( Y. F$ C+ I, `5 p. B2 v6 }: W1 ZBYTE biSize[4];0 {2 n+ [: E" N! q
BYTE biWidth[4];: @( H4 m3 C! j) @, I0 z8 M
BYTE biHeight[4];5 H4 v5 X; A% j. O. Q
BYTE biCompression[4];
& o7 y, w3 R0 w1 `* {BYTE biXPelsPerMeter[4];, [0 D3 a: s( |8 ]. z, y
BYTE biYPelsPerMeter[4];( s9 O9 F. {2 n y' }1 C
BYTE biClrUsed[4];
0 j1 @8 x' @' w+ n* A0 u- UBYTE biClrImportant[4];9 R' D8 _. }, U0 o: w; u( y! q
}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型3 A6 J3 V9 I% l' g# q, R# w
typedef struct BitmapFile{
* m/ K+ C; X/ t, ^' m9 ], E2 ABITMAPFILEHEADER bmfheader;
, {# s( v# B `: V7 J, G8 ^9 nBITMAPINFOHEADER bminfoheader;
9 N7 |5 ^- D8 \: N4 m, k! Q' ~BYTE bitmapdata[3275520];
- @' A$ F" S* I3 i' j! b}bitmap;//定义所处理图像文件对应BMP的文件格式) }3 q1 m, C( G3 x: g, ]5 h
//主函数,将图像区数据读入B、G、R三个数组/ K: B W9 O! g6 b, Q9 f. o+ _0 R3 A3 |
int main()9 _1 L. P5 G) ^3 e/ d* z, K
{
7 [2 `/ L" Y9 ~' [. ^bitmap *ample1;
2 I: ?; Z% b6 c( y" I9 o8 sFILE *fp, *fp1;! S% ^* \- P1 U* X' x9 n
BYTE R[1280][853],G[1280][853],B[1280][853];) E: k7 W1 }3 s$ c
long k=0;
! I0 f8 d: p7 Z }3 R" w/ eint i,j;
' v4 r! \1 b6 Z: e& G" Jchar name[20]="try.bmp";//读到新文件的文件名
9 W' i$ k) w" D$ j8 j- A% Pfp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件
5 ]& y* v* k+ _4 l! N0 ~; Bfp1=fopen(name,"wb");//为写建立一个新文件名 Z" Y+ h+ K' @* Q
if(! (ample1=new bitmap)){
, |9 J' p1 a' e! _- v* Bcout<<"error"<<endl;return 0;7 |' U! B. W- S+ J
}
5 X1 i9 t3 N. w, D, ?/ Z7 kelse
; L* t4 [3 [4 g. {0 k/ t1 Z$ x{9 U6 O( F: p$ @, r% p* |' M/ u6 H, L' S
fread(ample1,sizeof(bitmap),1,fp);$ @6 M" s% i9 P4 N! B4 W
fwrite(ample1,sizeof(bitmap),1,fp1);) O$ S+ y0 E, ?- L7 f. b: h
cout<<"********位图文件头格式:********"<<endl; 4 P3 A) `9 a' e3 I& n5 P8 J0 H
cout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;; v' q h1 h; A( w0 o
cout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;
9 o/ j1 r s, ccout<<"********以下是图像数据区********"<<endl;( [) b: u2 \2 \& J: m
//指定像素点,以16进制输出BGR值7 v- A1 W1 L* A% W P
cout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;" S) q# q8 [6 N3 y
cout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl;
6 X' U* u, [& c o; a! Z( h8 tcout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;
" d7 C6 U3 K: E5 v//将图像区数据读入 R、G、B三个数组
: Q3 J2 ?4 c( j4 `2 v9 T. `2 Lfor(i=1280; i>=0; i--)9 ]( H" B$ h$ V' @
for(j=0; j<853; j++)
& T' A q1 ]8 Y{
2 a( V" d2 t6 J2 LB[i][j]=ample1 -> bitmapdata[k++];
6 k2 C4 b0 u# }# D) i* UG[i][j]=ample1 -> bitmapdata[k++]; 4 g, w9 I4 ^7 a! F9 M
R[i][j]=ample1 -> bitmapdata[k++];
) }5 b# A9 Z( |! z}, J5 d& g" \0 }; w9 v+ L! j" g
//检查是否将图像数据读入数组
7 x% Q; O3 S8 ^cout<<"********以下是内存数组数据********"<<endl;
" x; n: W7 N8 f3 Z- d7 vcout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;
- m" P2 Y2 _) h2 `cout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;
: t K% ^% W r7 ~8 Q$ w: Breturn 1;
3 R# b. y6 i6 U5 e" L& O) \}; a. R/ S/ E# Z$ }
delete ample1;- k" h: c0 V" M( k6 j5 s& N- ]
fclose(fp);
5 n F' t$ v. ^% @, @fclose(fp1);' P1 Q5 r# ^4 V& g" C- h
} |
zan
|