- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。- a# x- `3 U& u
#include <iostream.h>
0 Z$ y( _) S/ ~8 d#include <stdio.h>
: o7 ?" E6 k& U#include <math.h>
. F- m0 S6 d8 c" r9 V% B6 otypedef unsigned char BYTE;
3 S+ b( n0 M) G5 ]. Rlong Ary2DW (unsigned char p[4]){
" G3 a2 |$ c& y9 X. i3 p' Cint a0,a1,a2,a3;unsigned long A;" B# N! L. i1 K0 ~
a0=int (p[0]); a1=int (p[1]);) g' i) W1 T1 v
a2=int (p[2]); a3=int (p[3]);# t: @; \% Y8 a' Q( W
A=a3*256*256*256+a2*256*256*256+a0;& s6 X4 Y2 ~3 J+ X( ^
return A;};//实现数的大小正确转换,转换为WORD所代表的实际值 5 @( J" f$ @* j: U1 e
typedef struct tagBITMAPFILEHEADER {
" f; Z5 U* A- D+ ~BYTE bfType[2];BYTE bfSize[4];1 b# ]* E" ` ]/ _) g
BYTE bfRcserved1[2];
% q' g( }0 W* C% U3 D+ d/ ?/ Y& G, KBYTE bfRcserved2[2];
+ E% {1 L) V' v9 B* [4 uBYTE bfoffBits[4];
3 j0 v N$ }7 V0 M5 g}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型
+ w: g: G" m* H$ B s# |1 Ztypedef struct tagBITMAPINFOHEADER {& C$ E# l* }& G5 K$ |! K. P
BYTE biSize[4];
: A; ], K$ C: n( N; @ s! f6 `BYTE biWidth[4];
7 z( }. z9 ~" d3 UBYTE biHeight[4];
0 _1 S0 E4 i k( t- |3 ^/ bBYTE biCompression[4];' N# X" j7 ]) d+ a/ b* \+ A r5 [
BYTE biXPelsPerMeter[4];
/ D) r3 L- a. l% q7 E& e6 S3 J& cBYTE biYPelsPerMeter[4];. R3 M8 w; q u% T; d/ {
BYTE biClrUsed[4];
# V' @ F# Q% oBYTE biClrImportant[4];
/ b; g! u6 N2 O1 s$ i. v; m2 s}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型9 |' [ |& X& e! Q: l* W; g
typedef struct BitmapFile{
3 {' Y3 {7 W6 b. Y5 J* \' R5 @5 ^BITMAPFILEHEADER bmfheader;) `2 l6 C$ t K# d/ B
BITMAPINFOHEADER bminfoheader;
$ M4 y2 o8 `6 N2 ^4 ~BYTE bitmapdata[3275520];! _3 ]: Z/ r) [9 t# W9 Q
}bitmap;//定义所处理图像文件对应BMP的文件格式
. E+ S2 O' K) M4 ]: q! R1 j//主函数,将图像区数据读入B、G、R三个数组6 H* p, j- C; e4 L% z I
int main()
3 B; q0 }2 E& U/ x4 M" _) T{% _6 d* L* [5 X
bitmap *ample1;' x% O7 ^) V. a7 p
FILE *fp, *fp1;1 b$ r( p+ G! X) U# s
BYTE R[1280][853],G[1280][853],B[1280][853];
" {3 S4 n4 z4 c+ ?( r' ^+ Ylong k=0;
# t% ^6 q! C( cint i,j;
1 f- l7 T( j4 @8 L0 ?/ O& gchar name[20]="try.bmp";//读到新文件的文件名
5 j7 g% E$ s+ K9 X' [# q4 z! j. ufp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件
* S. S& X& {$ Y3 ? A+ B; _fp1=fopen(name,"wb");//为写建立一个新文件名8 G h1 e. S" e3 n
if(! (ample1=new bitmap)){, |( l! t' |# f7 `; g( m- F
cout<<"error"<<endl;return 0;6 E0 k. v3 D' Q Q) {+ a
}
7 M! }% A T1 v3 l( S7 xelse0 q* m4 X0 `) g! l- b6 q% G/ ]
{
1 Q1 h8 V# p8 x. ^( bfread(ample1,sizeof(bitmap),1,fp);4 K( z W) b6 x. x: X
fwrite(ample1,sizeof(bitmap),1,fp1);# F, m( s. X7 g A# Z# Z" }
cout<<"********位图文件头格式:********"<<endl;
+ K4 |( e c/ @cout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;8 H# p" V- ~! {7 l' [' Z1 S2 r5 I
cout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;, O8 R" o. V* e9 j6 D) c; X8 v: o
cout<<"********以下是图像数据区********"<<endl;7 I, M5 L5 x m% p9 p5 _) j: }! K ]
//指定像素点,以16进制输出BGR值
4 o4 d* Z$ g+ |) Xcout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;& R7 y' Y( O- Z; e0 Y
cout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl; 5 W" p' r) O& o7 R
cout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;1 g- l; J* C0 Z" ^/ E# Y
//将图像区数据读入 R、G、B三个数组, t+ y) S, c) F9 f
for(i=1280; i>=0; i--)
3 y& B N) ^, K$ t3 J2 [+ _for(j=0; j<853; j++)
6 ]2 ]0 l1 x3 o+ z# L{
N" i/ {. Z( E6 u# t" K3 HB[i][j]=ample1 -> bitmapdata[k++]; # _8 S, X5 W! W5 P
G[i][j]=ample1 -> bitmapdata[k++]; 3 X6 |4 L6 p% h
R[i][j]=ample1 -> bitmapdata[k++];7 J& n* r9 X0 A# A: I/ j) h1 \
}4 i4 R3 V8 s8 l0 h1 E. q& p* M
//检查是否将图像数据读入数组
0 {7 r ]5 \$ Y, S6 t* N$ Zcout<<"********以下是内存数组数据********"<<endl;
, ~* G4 j, h+ R7 pcout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;$ D9 u* X. A( \* ~3 G6 ?
cout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;& W# E+ v- \6 i) x' n
return 1;
: Q$ r& K$ _. Y8 Y! K/ o/ U. J}
7 S/ ?/ I% k' ]4 f& j ?) Ldelete ample1;1 o T0 t4 T4 c6 D& |" h
fclose(fp);
* K7 v$ Z* Q! v; z& ifclose(fp1);: Q4 S5 i4 Q9 e) G5 v3 R
} |
zan
|