- 在线时间
- 490 小时
- 最后登录
- 2024-2-3
- 注册时间
- 2013-2-28
- 听众数
- 117
- 收听数
- 46
- 能力
- 268 分
- 体力
- 39231 点
- 威望
- 1340 点
- 阅读权限
- 255
- 积分
- 31236
- 相册
- 2
- 日志
- 0
- 记录
- 0
- 帖子
- 1391
- 主题
- 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删不掉。请教专家们啦,看看我这程序错哪。
1 d7 r, \0 ?8 Z! ?/ u, O#include <iostream.h>" e# Z. }4 ?& s2 r4 }
#include <stdio.h>
6 z9 p9 X" _" k0 [$ J1 x5 [#include <math.h>
/ L/ W7 d' R7 f: [6 Q2 Ftypedef unsigned char BYTE;
# ^6 y- j6 u& }. M8 K6 x6 Zlong Ary2DW (unsigned char p[4]){
. M: \" M& B2 V4 }6 Q; e- Yint a0,a1,a2,a3;unsigned long A;- _" t- J/ @, S9 ~* J& D6 E% ~
a0=int (p[0]); a1=int (p[1]);
, _ J. _% ~; E3 E) c/ Wa2=int (p[2]); a3=int (p[3]);
& f6 z+ \" i5 D" w0 x) eA=a3*256*256*256+a2*256*256*256+a0;8 r& P4 ?3 \8 N$ a; g
return A;};//实现数的大小正确转换,转换为WORD所代表的实际值
" c; j! V* b# y* W2 r! H, C& l' vtypedef struct tagBITMAPFILEHEADER {$ r9 }3 r: ]6 {4 D5 \
BYTE bfType[2];BYTE bfSize[4]; b3 ?4 z* ~* ]0 w9 ^
BYTE bfRcserved1[2];/ H$ V$ j3 ^% X. \
BYTE bfRcserved2[2];
K& v w/ o0 P: |( E0 H! nBYTE bfoffBits[4];
8 i, b3 C+ t% @& \' {}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型2 ?- M4 w5 X8 w9 s
typedef struct tagBITMAPINFOHEADER { R9 B/ w8 k' v: T1 z
BYTE biSize[4];7 Y2 V5 U2 ^0 X9 c) M' P7 k$ l
BYTE biWidth[4]; M0 P. B/ ]" Z3 ~- ^4 G$ k/ X
BYTE biHeight[4];
$ |8 ]3 H( T7 F- z* o bBYTE biCompression[4];
5 V: h: h* W3 y( @0 y! x9 i6 F: RBYTE biXPelsPerMeter[4];
7 N+ U j1 C V) m# eBYTE biYPelsPerMeter[4];* H. I+ R2 I) H4 W8 T
BYTE biClrUsed[4];8 p, W( b d: q0 ~% ~% O: k; v
BYTE biClrImportant[4];
" _5 q0 d+ Q' W2 D' o}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型2 G2 i. {& x7 s) K) ]
typedef struct BitmapFile{
9 M/ y E+ d7 e3 B! D1 cBITMAPFILEHEADER bmfheader;0 q6 m# m( i ` J6 c3 G
BITMAPINFOHEADER bminfoheader;
8 H! q6 n4 F, v' y' _BYTE bitmapdata[3275520];# ?3 |+ I" @8 O% `, R. x
}bitmap;//定义所处理图像文件对应BMP的文件格式
( B6 b4 ~ |, X. e5 [ \. a6 M//主函数,将图像区数据读入B、G、R三个数组
O6 B$ A0 w8 ?3 R7 G, m" \int main()
; _2 t! f( Y* N4 Z{
6 V/ T. Y+ K D I# dbitmap *ample1;
3 ?" S8 {9 C5 ^; I% x% TFILE *fp, *fp1;
1 A/ C" D- S% c- w# gBYTE R[1280][853],G[1280][853],B[1280][853];9 g' K n7 a, M5 b2 N+ X* x9 v! g- |
long k=0;
. M; g' ?" @) X$ x$ D, ~5 ^int i,j;1 ?5 N; |; H7 d7 K. Q* T
char name[20]="try.bmp";//读到新文件的文件名
9 s1 G& x7 M7 Kfp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件
8 ]- m; H- c( E* ~9 V$ V& B* {- i, hfp1=fopen(name,"wb");//为写建立一个新文件名$ p( E) S ?: Z+ T
if(! (ample1=new bitmap)){
; g3 J- O5 F0 xcout<<"error"<<endl;return 0;
" q: `- R; x! F* ?; M% w}
( V) B- S6 O" Pelse( a' X( F& Y% U
{
; A" L5 y3 v z1 D* g: Yfread(ample1,sizeof(bitmap),1,fp);- @; k) f8 H7 J' ]+ v! @# g0 r
fwrite(ample1,sizeof(bitmap),1,fp1);
/ X- F0 r" d0 v6 n8 xcout<<"********位图文件头格式:********"<<endl; 0 G& x/ s; V2 f' F% {
cout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;
( j7 N- x; j! |( i& S' Hcout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;8 }( w ~- N. m/ r9 i: c s! n
cout<<"********以下是图像数据区********"<<endl;$ I, G* G* z. o; p3 p5 ~
//指定像素点,以16进制输出BGR值) P) A4 t: z' I# G
cout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;. {8 E. C. ~6 H( x( r5 L
cout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl;
5 r5 y* w0 K2 e* C7 t# qcout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;4 b! P7 V' A' G5 [' [ [0 l
//将图像区数据读入 R、G、B三个数组
6 V+ {, O& C$ o# ofor(i=1280; i>=0; i--)- e2 |: |4 k# w0 b( q+ |
for(j=0; j<853; j++)
& R8 H; q8 `9 O8 f$ A f* M{8 m# j6 ^. ~0 E2 V% M7 G
B[i][j]=ample1 -> bitmapdata[k++]; * L; T! ]9 d( T' |
G[i][j]=ample1 -> bitmapdata[k++]; - h5 k" X" T# e4 |; f. _/ M- Z
R[i][j]=ample1 -> bitmapdata[k++];
! E4 i5 u! b/ [& u}/ \ N. [2 K' O' }2 S1 x
//检查是否将图像数据读入数组6 q* w2 |" s' U# a' D4 z) U2 T3 \
cout<<"********以下是内存数组数据********"<<endl;0 l8 A/ S" S) y
cout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;
N5 L, N( k+ S* h r. ], Zcout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;& K( m3 }% a/ _% E0 D
return 1;4 F4 R) ?/ C& G5 J
}9 |; D! Z) L, ?5 q9 V
delete ample1;) r' w/ \0 k U* D& D7 S# V
fclose(fp); & W$ |1 p8 C4 j4 l; {, E
fclose(fp1);+ z- X, ?/ `. r9 |0 J
} |
zan
|