- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。
5 i- O# I9 E; g2 g" m- a#include <iostream.h>
) d+ Z. r' s. |# `' \% b#include <stdio.h>
7 D1 Q- u) E2 P- j#include <math.h>0 D- @8 T3 d% l S c
typedef unsigned char BYTE;2 h* G5 }4 K# F
long Ary2DW (unsigned char p[4]){- e8 c! F& ?/ A! ~ y9 _
int a0,a1,a2,a3;unsigned long A;2 e+ E1 n# a! Z" Y) m% H% Z
a0=int (p[0]); a1=int (p[1]);6 S. Q) i( R1 {) ?1 d# A! Y0 g4 r+ t8 V
a2=int (p[2]); a3=int (p[3]);' W/ c$ I, k' W0 g: s
A=a3*256*256*256+a2*256*256*256+a0;' R8 r- x' P# V3 e
return A;};//实现数的大小正确转换,转换为WORD所代表的实际值
* u. r9 \. B u: g% ^- ~0 @- m* t- atypedef struct tagBITMAPFILEHEADER {
" T8 @- x4 F# \; hBYTE bfType[2];BYTE bfSize[4];
, F6 Y- \3 E! V: XBYTE bfRcserved1[2];
+ k8 X. L8 S- O! A, OBYTE bfRcserved2[2];. N* Y/ r/ Y7 C. x# K
BYTE bfoffBits[4];
; U# e: [, |3 k9 B3 U8 s}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型/ c' M7 d7 b/ P! a# ^4 Y
typedef struct tagBITMAPINFOHEADER {
7 W- |* J3 |6 E6 t4 u2 `BYTE biSize[4];
+ d# s4 S1 G6 I; n: {1 y1 |1 A6 ~+ v' VBYTE biWidth[4];3 q, ^$ Z' a; ?# C) X' h7 Q, y
BYTE biHeight[4];
$ [+ N$ [5 ]/ [; i6 Y+ RBYTE biCompression[4];' T* T! m! V+ y: w! @
BYTE biXPelsPerMeter[4];
+ y: Z, T; r7 TBYTE biYPelsPerMeter[4];6 O4 g. N/ y5 f- u* i' r
BYTE biClrUsed[4];
# J9 c L$ K& dBYTE biClrImportant[4];
- M6 V8 j; W+ i( s8 c# Q}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型
! f" l; [# Q/ Q5 P& d& w" ntypedef struct BitmapFile{
( B" l" J0 k0 c6 SBITMAPFILEHEADER bmfheader;
3 D, ?& a8 X# R! HBITMAPINFOHEADER bminfoheader;
3 O+ }9 h x; Q6 p8 t& k$ `+ s# zBYTE bitmapdata[3275520];/ M2 D# a, I7 T0 p
}bitmap;//定义所处理图像文件对应BMP的文件格式! D' n- k) B6 W0 R1 \4 T( a
//主函数,将图像区数据读入B、G、R三个数组
2 T. s* D u3 u+ t, F, Gint main()' u0 I' k1 o) Q& j6 z
{/ N: w6 D& G( v. ?; Z2 `3 \8 K
bitmap *ample1;) e4 A0 ?! `% _+ r+ a
FILE *fp, *fp1;8 I3 q3 p$ O" @( a* C3 @) i
BYTE R[1280][853],G[1280][853],B[1280][853];
: W: H2 j! v9 C- Elong k=0;
& Q/ y; N% j3 I3 D# c% w0 _# @; w4 u( dint i,j;: W/ }) k1 ]1 n! b
char name[20]="try.bmp";//读到新文件的文件名
! j- d; z3 E5 v) c/ u* v, Zfp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件' H0 V9 J& I1 m" A+ S! @/ a! R+ m F
fp1=fopen(name,"wb");//为写建立一个新文件名
6 M% T5 ?7 e7 O# E6 M; Mif(! (ample1=new bitmap)){2 J: K7 B5 u; c- X6 [6 c
cout<<"error"<<endl;return 0;1 o) Z7 H( B' J5 s. }* n. x) u
}9 y/ W* j4 a0 G, _1 F2 B& Y
else
; `8 V" T( ^8 e5 S" }* E7 O. ^4 X& n{+ l* p' g7 n0 ?: Z( Y+ F+ r
fread(ample1,sizeof(bitmap),1,fp);2 U: ?# T, W& c! d. ` b5 k4 V* N
fwrite(ample1,sizeof(bitmap),1,fp1);9 G& K5 Q; `7 F
cout<<"********位图文件头格式:********"<<endl; ; r, M' N8 B$ G% F
cout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;1 t$ y" D) B- l
cout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;
7 a; I2 {) N' A3 k. H" T V# \cout<<"********以下是图像数据区********"<<endl;. W5 t8 i0 r( z/ q3 V- ^
//指定像素点,以16进制输出BGR值4 P7 g u, ?: e7 C' D+ @: Y
cout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;
4 O- \, B% N2 ?# l! |. H: jcout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl;
& J8 k2 \9 Y/ @7 ^3 @cout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;
9 Z3 \8 V- \/ p# B$ P3 z//将图像区数据读入 R、G、B三个数组
7 u, K- L1 }( } p3 C7 bfor(i=1280; i>=0; i--)
, E7 D9 o7 A9 {. h$ l, m/ Dfor(j=0; j<853; j++)
7 T. T; E) S N$ z2 y3 i2 c{$ T6 T% d' p J* ]6 B: Y! L ~- f( d
B[i][j]=ample1 -> bitmapdata[k++]; : U$ y, P$ q6 |: S
G[i][j]=ample1 -> bitmapdata[k++]; 0 t9 K& j: D# }# J2 {
R[i][j]=ample1 -> bitmapdata[k++];0 s. L6 ^4 S3 P, D
}, k: \! k1 K* @; D) a7 S& N
//检查是否将图像数据读入数组
# a2 F7 K: @7 e, F4 l- L7 }cout<<"********以下是内存数组数据********"<<endl;. P. s2 d" J& N: V
cout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;
; ^4 ?7 c9 C4 x" c2 jcout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;
2 `$ c% S# w, w3 p. `return 1;. D: ^; y+ H& ~, [
}* A- @/ o' R9 z1 D" W/ z4 @) V
delete ample1;- w5 h5 l# ]! X6 y' a1 ?" c' e
fclose(fp);
% v6 U) F* U3 s5 v. P7 Wfclose(fp1); b, f, P* C* Q$ m4 ?
} |
zan
|