- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。/ k0 U( b0 t0 C) t0 E
#include <iostream.h>
4 B- X. c! J) q0 F#include <stdio.h>9 f; t( ~7 f; A7 S
#include <math.h>/ i! b! q7 k `2 Z8 ^9 `
typedef unsigned char BYTE;
$ K; C" I! Q! p/ P& P7 `long Ary2DW (unsigned char p[4]){0 z2 l+ S3 n/ r/ ]5 _: t) d8 ~
int a0,a1,a2,a3;unsigned long A;
: m: c% t v, T$ R' za0=int (p[0]); a1=int (p[1]);' H+ F R! E; e# d( b
a2=int (p[2]); a3=int (p[3]);# `, k1 `$ `1 P% K2 H& O* a, V8 e# W) i( V
A=a3*256*256*256+a2*256*256*256+a0;0 N, F& Q6 [% r/ ~# U
return A;};//实现数的大小正确转换,转换为WORD所代表的实际值 ) x4 I# ?9 z; ?$ G
typedef struct tagBITMAPFILEHEADER {
0 p' Z4 M/ T4 @1 [7 e% L7 _2 }& }* KBYTE bfType[2];BYTE bfSize[4];
! ^% q: Q( m6 U% NBYTE bfRcserved1[2];
6 M, ~0 G. _! A5 n7 W+ r: Y$ _) TBYTE bfRcserved2[2];
% m! A8 m" g5 _/ `BYTE bfoffBits[4];
8 e$ s& n+ a) k9 h}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型: Y! _' M |6 j9 Q8 ]$ c6 o
typedef struct tagBITMAPINFOHEADER {+ I8 U: P& k8 Y% M" D
BYTE biSize[4];0 L: G2 ^9 _0 j" S
BYTE biWidth[4];
+ }- \* U4 F$ c* ~% l: ^: nBYTE biHeight[4];
) s0 C- b( g5 E6 E, RBYTE biCompression[4];8 j1 M6 ]4 |: F0 U: C! N0 R" P J
BYTE biXPelsPerMeter[4];
& V" M3 J; d2 x% _* a, dBYTE biYPelsPerMeter[4];
8 W* f: B I; {9 p& aBYTE biClrUsed[4];
3 G" a0 a4 a4 N7 Y8 N/ wBYTE biClrImportant[4];
0 a1 N" X% @5 W+ g% |}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型4 i5 M# V4 g! d, L. v
typedef struct BitmapFile{: G, M5 X# d7 R7 d9 m8 Z7 N
BITMAPFILEHEADER bmfheader;2 [$ c" o) S- a6 ?6 o) q) p7 l
BITMAPINFOHEADER bminfoheader;! H7 W0 P- Y" F5 E2 i" W$ W
BYTE bitmapdata[3275520];7 n+ t( }2 Z9 |% Z* l" z, C
}bitmap;//定义所处理图像文件对应BMP的文件格式
5 W3 ^: O5 l2 ~! R6 t0 ^//主函数,将图像区数据读入B、G、R三个数组
/ D1 a5 `* }3 @$ E# _0 j. eint main()$ v# O3 ~! C2 |: V$ Y. f. P
{
* x! T- [$ V8 cbitmap *ample1;5 E( H/ ]8 ^7 Z
FILE *fp, *fp1;
2 e: K P5 @ P4 q+ DBYTE R[1280][853],G[1280][853],B[1280][853];) y6 e; o8 W9 S% E' {
long k=0;
# k) _% a5 p' i; ^int i,j;* D$ U7 F! s3 x! `, A
char name[20]="try.bmp";//读到新文件的文件名
Y `! y# N9 C8 {& H8 P ufp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件
9 Z! `7 R$ R. m2 S' l/ |* Ofp1=fopen(name,"wb");//为写建立一个新文件名8 P1 @# p' o" J+ A5 u& ]# q, I
if(! (ample1=new bitmap)){
0 m: n" _ o' h) L& q1 U6 ]9 ~cout<<"error"<<endl;return 0;
; R, a4 E8 i4 W7 ~8 W' Z1 f}
% W7 y% h; T, N$ Celse
7 v- x8 i2 c( q{) K6 S7 N( t8 l& _; u; @; Y# F/ m
fread(ample1,sizeof(bitmap),1,fp);: W' a: @# z+ M0 S5 e
fwrite(ample1,sizeof(bitmap),1,fp1);
3 s$ u/ c' X; zcout<<"********位图文件头格式:********"<<endl; 4 t L9 X Y9 |! @, s8 ~
cout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;/ J* F3 b* J9 {( n
cout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;
; @- m6 _& L( G7 U3 z7 O; |3 wcout<<"********以下是图像数据区********"<<endl;3 a6 A0 c! U' U. V
//指定像素点,以16进制输出BGR值
. J7 {0 A9 }) Fcout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;4 b% g" v6 j" J/ V
cout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl;
4 o& C8 ?+ P' ], Z3 }7 hcout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;4 B/ q: e7 i" ~" ?0 h4 a; B" i
//将图像区数据读入 R、G、B三个数组& H8 t. i8 Q3 S0 J [) X
for(i=1280; i>=0; i--)
. L9 e1 l6 Z1 M# r; lfor(j=0; j<853; j++) $ A9 S4 I5 D( ]7 O6 l, C+ ~
{
! P) E; l \6 O' P6 tB[i][j]=ample1 -> bitmapdata[k++];
$ ]: d; p3 W3 ^' v% qG[i][j]=ample1 -> bitmapdata[k++]; " X0 ]1 w b) k' U2 @
R[i][j]=ample1 -> bitmapdata[k++];
* k' {$ z- o- D9 v% G}8 k- z, J! O+ ^ p. r. u* s
//检查是否将图像数据读入数组' n" a9 [0 A* Z) w k
cout<<"********以下是内存数组数据********"<<endl;, l* X) M$ H- B
cout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;% F- F3 M( j1 q# K
cout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;
4 }7 o( e: u* sreturn 1;
; s0 b9 l4 I9 A% r3 Z5 Q}
% z0 X7 j# K: a4 Qdelete ample1;
0 P/ z$ V% D- J6 x/ Z( Efclose(fp); {$ p3 Q% \; c) C3 Z# T
fclose(fp1);2 ~( h3 a1 @. Z, N3 D0 z
} |
zan
|