- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。
- g' |* O0 {4 J- e#include <iostream.h>
* Y/ {8 v* {' i. T#include <stdio.h>
% [ u1 [0 H, U! ]5 O2 R#include <math.h># v6 ~: c+ g7 c8 I7 k
typedef unsigned char BYTE;
* V2 `& G4 }3 c3 T; } C' elong Ary2DW (unsigned char p[4]){/ _& Q% g g. s4 B5 F& ~$ t9 l
int a0,a1,a2,a3;unsigned long A;* k0 I2 o& B& f+ C. q0 W3 n
a0=int (p[0]); a1=int (p[1]);1 D: c+ A4 C$ R; |- g
a2=int (p[2]); a3=int (p[3]);
" t3 ^0 w# G8 H+ oA=a3*256*256*256+a2*256*256*256+a0;# ^0 A# i3 u6 j8 P; W! ~" C
return A;};//实现数的大小正确转换,转换为WORD所代表的实际值
0 K- f, T" y$ |+ x9 Q, stypedef struct tagBITMAPFILEHEADER {
& g7 u2 {8 B7 TBYTE bfType[2];BYTE bfSize[4];
O) E& y5 n0 p9 c: |BYTE bfRcserved1[2];+ T0 U' s# ]4 b$ M; Q
BYTE bfRcserved2[2];. S! a# b& G9 V: t/ K
BYTE bfoffBits[4];. Y! x( }6 E; H+ R& v
}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型
0 r7 ^7 B% b; r0 m) [9 | @' p& gtypedef struct tagBITMAPINFOHEADER {7 c! J" b7 v" M. F) e/ `
BYTE biSize[4];2 e/ N8 z. Q: O2 |6 E6 D
BYTE biWidth[4];6 X) T: Z3 X1 M0 A! z+ L
BYTE biHeight[4];$ _0 H& F; A3 Q! z& F* z
BYTE biCompression[4];
2 a. ~% s! T/ Q6 l5 y+ }BYTE biXPelsPerMeter[4];7 _. ?1 I0 f/ m
BYTE biYPelsPerMeter[4];
' t: H+ G% D" @! UBYTE biClrUsed[4];7 u' _ J) K4 w$ y/ E6 c
BYTE biClrImportant[4];7 h5 T: U. ?6 }8 Y3 c+ Q7 u
}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型. o, u6 q6 g. Z9 P! W# X
typedef struct BitmapFile{1 F' S" y7 [) c# I/ C
BITMAPFILEHEADER bmfheader;! X# H! L9 I2 a$ ~9 l/ B
BITMAPINFOHEADER bminfoheader; @6 A+ e( w; f4 P" ?
BYTE bitmapdata[3275520];8 G( r) k: g6 [
}bitmap;//定义所处理图像文件对应BMP的文件格式: U9 ~3 o6 S! U, c1 V( p
//主函数,将图像区数据读入B、G、R三个数组
& w" i; G: H. \) T0 B# eint main()
3 v9 S1 @" a* N/ r{
& x& m5 F. X- T* V3 j3 O3 k( ebitmap *ample1;
q* C0 h% T/ u& v, S$ DFILE *fp, *fp1;* d+ d) U+ i8 r) u
BYTE R[1280][853],G[1280][853],B[1280][853];
# S5 T+ X% N3 R3 ?8 A% ylong k=0;/ p! s' d2 j- t& }
int i,j;
- W; e U. B; ^- c/ P* ]% zchar name[20]="try.bmp";//读到新文件的文件名! ^6 L0 P0 g: H) n! l
fp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件
4 @8 a( ?" [# d9 n' y7 C( Yfp1=fopen(name,"wb");//为写建立一个新文件名$ V; ?" c+ H0 t3 m
if(! (ample1=new bitmap)){
7 o. r+ S; S0 [+ O5 \" ^2 @' A' qcout<<"error"<<endl;return 0;+ K$ `% R, r8 O
}7 E! ^1 a6 P) s0 O# R- g0 W2 C
else
# Z+ h7 V. i; U{
( r" X1 v S: s: B* m1 f9 X! Qfread(ample1,sizeof(bitmap),1,fp);. x. _) b1 d/ E f0 W, q
fwrite(ample1,sizeof(bitmap),1,fp1);" i6 a4 }6 E- v2 U% T4 b7 i5 o/ p
cout<<"********位图文件头格式:********"<<endl;
& P- k7 q8 A5 K$ Gcout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;
2 G* Z9 r Y& Lcout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;
' O6 J( R Z; g4 Qcout<<"********以下是图像数据区********"<<endl;
, i. w9 p# i, k7 P I7 }8 k//指定像素点,以16进制输出BGR值
1 ^( a- V H7 g3 o( _4 Bcout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;, v3 U6 z4 G4 n/ v! |
cout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl; ; {2 n8 R0 O4 x. F" i( _& R5 G
cout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;9 p' B' z0 {) U+ o9 e
//将图像区数据读入 R、G、B三个数组) T1 X& E+ d" m+ M. ]
for(i=1280; i>=0; i--)) g. M( Y; R4 O
for(j=0; j<853; j++) & f+ a- F4 ]3 W# ^
{
% U9 ?3 |" d, VB[i][j]=ample1 -> bitmapdata[k++];
" b( Q; k; [, a8 S1 K/ ~+ {5 AG[i][j]=ample1 -> bitmapdata[k++];
- _/ N* B) B. S M: l* f/ f: tR[i][j]=ample1 -> bitmapdata[k++];
* m3 H- |% u5 j6 _+ E}
; X- P+ J* m, h8 x7 ^//检查是否将图像数据读入数组
% a$ R1 R) j: Vcout<<"********以下是内存数组数据********"<<endl;" q4 [8 T& w: X; l5 x7 g6 j
cout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;
8 B7 T5 `: e6 c# U5 c' `* Qcout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;9 b8 _9 k' v- s6 @2 r
return 1;
) R, o9 @ w* }( Z}
+ e: ]; ^) }3 n5 }* u K: n, A& \. g/ t* ^delete ample1;
' m/ O: Y9 C, h+ @" Efclose(fp);
7 e' \( F$ o3 |. Z ~fclose(fp1);* S1 s) [" _1 n
} |
zan
|