- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。
a3 \; B+ s0 C) F2 B L9 L#include <iostream.h>
8 l k" l! P! L* v#include <stdio.h>
* c' o; P; r, D* p#include <math.h>0 b5 P3 J- d" q' E) M
typedef unsigned char BYTE;
; I" ?& u0 S/ h( k: m/ }+ t* Llong Ary2DW (unsigned char p[4]){
. q; Y! H' q. Q+ k# I+ pint a0,a1,a2,a3;unsigned long A;
/ J8 o, r. V5 C1 t; q# ]9 }! na0=int (p[0]); a1=int (p[1]);
6 {' @4 y7 B& M. ]0 A8 _a2=int (p[2]); a3=int (p[3]);
- J, ?6 f7 L8 k' K& d! ~3 TA=a3*256*256*256+a2*256*256*256+a0;
" q% B+ P) ~4 w* y, Yreturn A;};//实现数的大小正确转换,转换为WORD所代表的实际值
' f0 g5 B- G; p$ @, V6 Z5 itypedef struct tagBITMAPFILEHEADER {- }1 Y8 X) T4 s4 R
BYTE bfType[2];BYTE bfSize[4];
! Z ]) B) F! I( ? CBYTE bfRcserved1[2];$ ^% R1 }7 D# }% ^
BYTE bfRcserved2[2];
: f2 ^" N; q, h* N% a$ g# EBYTE bfoffBits[4];4 O6 l5 c2 f/ G
}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型) u0 Y7 {. ]! i, Y4 G* R3 x& z6 f
typedef struct tagBITMAPINFOHEADER {
* \, A% z7 K: b9 ]& aBYTE biSize[4];% F2 x, A! b) ]/ V8 `
BYTE biWidth[4];
9 [7 B w- v4 f& C, K8 S/ EBYTE biHeight[4];
/ D3 ~5 L/ w. U- Z5 E7 M" z3 W" zBYTE biCompression[4];# Q- a- J6 @4 ~4 S( ]7 T# d! ]
BYTE biXPelsPerMeter[4];
0 f8 x3 N5 m: S _( d) X8 jBYTE biYPelsPerMeter[4];
2 `. ~/ y& [1 G: N2 fBYTE biClrUsed[4];; A5 s6 |, Q) d$ o- I7 V
BYTE biClrImportant[4];
2 u2 z: w5 x5 P) r$ L}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型
% G( s6 r& k3 ~typedef struct BitmapFile{/ z9 W2 @! \3 _! f
BITMAPFILEHEADER bmfheader;
6 t; m) `; e1 L: z4 d& KBITMAPINFOHEADER bminfoheader;4 \; P( D9 S1 M) W" L7 k
BYTE bitmapdata[3275520];
- }8 r. h# u$ Y2 ?1 q7 X- g4 ~}bitmap;//定义所处理图像文件对应BMP的文件格式
2 ]6 T, o/ `- w0 C9 t p% h; V, }//主函数,将图像区数据读入B、G、R三个数组! W2 k9 } U1 p0 r0 ?
int main()
, @! w7 U8 u8 @$ @2 @{
1 f) s+ U' u' A x z2 j. Gbitmap *ample1;( ? R- R* x o/ [2 L8 }2 Z
FILE *fp, *fp1;
( [$ f' h& }( i5 WBYTE R[1280][853],G[1280][853],B[1280][853];! f0 Z/ M7 P& I6 O9 f# m/ K/ M
long k=0;: ? L* k* s8 o4 p( P" c! _, l. S; y
int i,j;
/ j2 q( }; X' H( ~/ ]/ p- N! g$ t/ x" ychar name[20]="try.bmp";//读到新文件的文件名! i8 d+ I7 k6 U+ t, r7 K4 m% F3 ]9 s
fp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件$ O% K& P" k2 a
fp1=fopen(name,"wb");//为写建立一个新文件名
1 [+ C/ z; C# Z7 V+ p9 c% Sif(! (ample1=new bitmap)){. O+ y j- G1 t3 G/ V. I
cout<<"error"<<endl;return 0;: B& {8 ?4 K+ U" M) f! T
}5 F6 {& t6 y; E6 H1 A8 k; Q
else) b) i. D' P7 g( q% j
{5 \4 q; |% e" L: u
fread(ample1,sizeof(bitmap),1,fp);
' Q: i, e; L+ ifwrite(ample1,sizeof(bitmap),1,fp1);/ k+ ^ O! j& j& ?$ w
cout<<"********位图文件头格式:********"<<endl; ! Y% l6 s- I2 P
cout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;5 s1 W/ L7 E- k: T7 [
cout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;
: [0 K; k* W) t# ^/ O% Ncout<<"********以下是图像数据区********"<<endl;, a- V) W5 h O* B f: Z7 U
//指定像素点,以16进制输出BGR值
4 j" B. A3 g0 d) A) Ucout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;8 y4 Z+ a1 j s/ A4 O& `; @9 y
cout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl;
) |3 g) q! s7 g& kcout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl; }/ K% K8 E& J) f7 l/ t( K1 l
//将图像区数据读入 R、G、B三个数组' b# L+ w. Q. c9 S6 @ c" e
for(i=1280; i>=0; i--)
: o3 t D) Y- T7 wfor(j=0; j<853; j++)
: A3 Y" u/ C8 b* w$ T{
' I! Q0 L F" y) wB[i][j]=ample1 -> bitmapdata[k++];
$ u$ O& j7 p# c) XG[i][j]=ample1 -> bitmapdata[k++];
* Y) @0 }$ I) R! O4 ~! UR[i][j]=ample1 -> bitmapdata[k++];; ~2 e5 ^. W+ }9 p
}
: ^, h! K, S9 Z9 S( p//检查是否将图像数据读入数组
" n! S# ?4 `9 Z( m3 f1 hcout<<"********以下是内存数组数据********"<<endl;* y* Q% D5 r" d3 a
cout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;
% T5 S/ V) P2 j* k. ^cout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;
' f& L. A7 q6 f- t: \, e% Yreturn 1;
2 G2 ^ P. U; T}
' i1 y. s8 p* P7 C/ D' Z0 rdelete ample1;
( N, }4 ^0 Q% E% \& S4 k' b) Wfclose(fp); & }+ |- q$ V3 t& I0 m+ o/ C* K) f- M
fclose(fp1);5 H; L7 t3 T$ ~2 ^
} |
zan
|