- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。
. V0 Z8 x. J/ c9 L3 K. J- p#include <iostream.h>
: T4 K c. f+ z+ f4 C2 k#include <stdio.h>
6 S) B; m5 E/ }+ O, `#include <math.h>
$ r7 R3 S$ }9 k* L4 ^1 Etypedef unsigned char BYTE;
4 g7 }& F2 C# K0 E4 rlong Ary2DW (unsigned char p[4]){
; R r5 R6 y1 [5 bint a0,a1,a2,a3;unsigned long A;
3 Y! S! i" a. Y. Za0=int (p[0]); a1=int (p[1]);1 T; i# G1 \5 T9 J) B' g
a2=int (p[2]); a3=int (p[3]);
: o" c5 C- x7 J; WA=a3*256*256*256+a2*256*256*256+a0;
|1 g) G( C( Freturn A;};//实现数的大小正确转换,转换为WORD所代表的实际值
* \2 a1 l" A$ l! K/ W/ Ctypedef struct tagBITMAPFILEHEADER {3 Z8 @6 [' D. q- U
BYTE bfType[2];BYTE bfSize[4];
% f7 G: t, j/ C; ]1 aBYTE bfRcserved1[2];
6 }% u; g" D% f5 O& T* z' x1 pBYTE bfRcserved2[2];
6 L. y( _- B. U) xBYTE bfoffBits[4];
: W& o; a! L9 ^5 G}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型
7 H* B. o, b) Utypedef struct tagBITMAPINFOHEADER {
' S' F9 M% I7 W4 D9 DBYTE biSize[4];
/ ~ M/ U" U9 u4 g# ?# l5 I: p4 pBYTE biWidth[4];: v m, g- o/ i9 s
BYTE biHeight[4];5 M) R/ ~( @) A; Y9 W0 S
BYTE biCompression[4];+ B4 a5 A8 B8 X* q0 Z! @3 ?4 e
BYTE biXPelsPerMeter[4];$ i( k1 \5 G! ^' n+ l
BYTE biYPelsPerMeter[4];3 }; |" R% _' p$ l1 ~" `
BYTE biClrUsed[4];
& ?; D/ e8 S, _$ h: iBYTE biClrImportant[4];
4 N. w" \' z/ p, W- O) u8 }}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型
1 w: }3 P- d/ Q3 d! j$ K0 stypedef struct BitmapFile{
, t% G! n8 M6 ]4 U. b& ^5 v' gBITMAPFILEHEADER bmfheader;0 q( U! q; Z" I& c
BITMAPINFOHEADER bminfoheader;
7 i9 G- O0 W+ O, ]( r; j5 z& QBYTE bitmapdata[3275520];* ]+ s0 M* T# l
}bitmap;//定义所处理图像文件对应BMP的文件格式
- e8 d" L+ e* C6 c3 H( x5 |//主函数,将图像区数据读入B、G、R三个数组+ G6 t4 Q3 ?+ M1 F# i- x
int main()
2 G8 L+ k+ U4 q C{% g$ W6 E, J3 x
bitmap *ample1;
! s# O z: y: E! w% P: X! b' ~; HFILE *fp, *fp1;
8 _! Q1 ?, p- K D: wBYTE R[1280][853],G[1280][853],B[1280][853];
" k( S% e& S/ J5 j) S) _- w' B9 |" klong k=0;
8 o: j: S* E" G' \1 o* sint i,j; @$ g5 j& W4 c$ X% m0 \6 d
char name[20]="try.bmp";//读到新文件的文件名* R) R0 J6 K9 k9 C2 R. K2 U
fp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件
8 P. [ ^: R- ?/ z" X: G6 U' }5 ffp1=fopen(name,"wb");//为写建立一个新文件名: w0 l2 G7 D+ a" E# c+ d
if(! (ample1=new bitmap)){- A6 Y; u/ U9 x
cout<<"error"<<endl;return 0;, C3 _! K+ U( q- s$ k; C. @9 t
}
' j* \: f" i/ Eelse
" s8 x7 z- g1 k: B5 A8 ]/ [2 [: e{
6 Y! R! p; C' I8 C+ zfread(ample1,sizeof(bitmap),1,fp);) e/ X( O& g" R# ]' b8 u1 S$ R$ v
fwrite(ample1,sizeof(bitmap),1,fp1);
9 P1 T9 p }, w5 s r z# Gcout<<"********位图文件头格式:********"<<endl; 8 j4 r: T$ O8 r
cout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;; A3 D$ D, p6 p; h9 q
cout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;) R, g1 C* n2 R) Z" E
cout<<"********以下是图像数据区********"<<endl;
6 ~9 _8 T! a1 m* {/ @//指定像素点,以16进制输出BGR值
8 |5 a) V+ M# f( p/ m f) ccout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;
- R/ w& s- L' \7 p+ O3 r0 h# qcout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl; ! Q f5 N$ B( K7 H
cout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;; m3 }4 f& E7 e: Y
//将图像区数据读入 R、G、B三个数组
5 R$ Z' O$ q0 h) n; G. o- Vfor(i=1280; i>=0; i--)+ ]6 \1 T( ]* @& Z- D
for(j=0; j<853; j++) 4 y+ k: l P0 K2 ?: n3 w
{7 U( {( [) s' e# |) P* l5 t1 h
B[i][j]=ample1 -> bitmapdata[k++];
- X4 e) _/ n5 cG[i][j]=ample1 -> bitmapdata[k++]; 7 @( h4 ~) h/ `3 b0 C+ e. a1 t
R[i][j]=ample1 -> bitmapdata[k++];$ _# `5 u: P6 g5 Q9 r# l- M( e! H, D
}& W6 O- G% T3 I* \ i4 o
//检查是否将图像数据读入数组
4 _2 t. v& {$ l% D0 y, H+ @cout<<"********以下是内存数组数据********"<<endl;
# ]% t n# b, ^8 j/ O3 Acout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;
, w$ m' z; f6 x; M8 P9 y, E9 Z6 Ccout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;
" l; h. D( J9 Y- mreturn 1;
# c/ q( c+ D" W; s- u}
q1 ~9 }/ G5 a& I8 sdelete ample1;
3 @: K8 n# \+ p" P- Q h- V8 }* y' Yfclose(fp);
: y$ u. D e; R- G5 Bfclose(fp1);
' O4 A& M, m' l; V$ m' t- H3 U8 v} |
zan
|