- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。: f* x9 r3 x/ b0 a" e
#include <iostream.h>7 y! n- F. Q; k- ]% Z% h
#include <stdio.h>
( }$ \, O; E+ d9 W#include <math.h>
" G8 }! d6 e0 ^! Btypedef unsigned char BYTE;
# c w4 |+ Z: u2 mlong Ary2DW (unsigned char p[4]){
0 Z j- s d: w& h0 T6 j9 o% Lint a0,a1,a2,a3;unsigned long A;, |9 }* ^( m! {$ y% E; M
a0=int (p[0]); a1=int (p[1]);# W |) s! r8 O. M b. x
a2=int (p[2]); a3=int (p[3]); e; s! E+ r, U: p: X; _. e) Y
A=a3*256*256*256+a2*256*256*256+a0;
1 d5 h+ D, d& u; U# `return A;};//实现数的大小正确转换,转换为WORD所代表的实际值
- ?8 N# ]. ]( ^! c+ x/ Atypedef struct tagBITMAPFILEHEADER {
9 S# i- N& O! b7 u8 gBYTE bfType[2];BYTE bfSize[4];
4 M7 e2 B8 Z9 a' BBYTE bfRcserved1[2];
9 S- j7 r/ P: i. zBYTE bfRcserved2[2];
5 Y! W0 K. N' e8 ZBYTE bfoffBits[4];' [( A& Q; p# _6 d! Z. ~+ h' g
}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型3 k+ T0 g+ O5 \- K y$ \- `
typedef struct tagBITMAPINFOHEADER {
8 C- E5 s( }6 N, w9 \BYTE biSize[4];
8 P8 u. `9 @9 ?* c V( v$ gBYTE biWidth[4];: t8 ] D, n* x7 A& c1 c
BYTE biHeight[4];
" w( a: w2 J$ f( U% h& X% nBYTE biCompression[4];5 k; p. y6 K( O6 Q1 a5 m
BYTE biXPelsPerMeter[4];$ o# [# m z3 V6 d
BYTE biYPelsPerMeter[4];. L% A+ B ]2 j9 j3 r
BYTE biClrUsed[4];+ \$ Y" _% T" u) n+ p
BYTE biClrImportant[4];
2 i! b0 v* q, `. z+ A1 c}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型/ Y7 b4 Z. T7 b+ H1 C
typedef struct BitmapFile{9 R: y, B( c: M( O2 o* P
BITMAPFILEHEADER bmfheader;
' m0 x' Y. ]5 f) ~( DBITMAPINFOHEADER bminfoheader;: a" O+ d9 d$ q7 x
BYTE bitmapdata[3275520];8 B+ n& Z; ]5 @; b6 y- k# @1 |
}bitmap;//定义所处理图像文件对应BMP的文件格式, r0 W' B' Y3 k: K7 q7 _4 _
//主函数,将图像区数据读入B、G、R三个数组
0 g- G* k! L1 P" a: [% b5 ?int main()6 Z. t" d% q# W8 [7 z* T
{. P( ]" U& \6 x5 a, t4 S+ Q" R
bitmap *ample1;
" k6 @% i, f6 K# ^FILE *fp, *fp1;7 G) \2 j$ r1 @$ c
BYTE R[1280][853],G[1280][853],B[1280][853];1 A% i5 Y$ d4 @5 H7 P
long k=0;0 N7 z8 ~9 H& H/ d V; J: s" T& w4 B
int i,j;+ I* x/ U A$ Z3 q: ~8 A0 N2 z
char name[20]="try.bmp";//读到新文件的文件名# ?$ ~1 v1 Q9 G
fp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件) W( |. f3 \7 w7 X8 v5 V* z
fp1=fopen(name,"wb");//为写建立一个新文件名! x! I* C& _) N
if(! (ample1=new bitmap)){
/ L3 W r3 x: g. O8 e7 C, Y+ j& M. G+ ncout<<"error"<<endl;return 0;
f+ A+ L: B2 v3 w7 M7 |3 c; U}
8 L4 V; u7 ?- H, M& `7 _7 B2 S- uelse
* z9 s1 d7 ^1 P3 ?8 z8 e{
: b9 q; o2 V, t7 x# n2 s% R ]* ^fread(ample1,sizeof(bitmap),1,fp);$ E6 r7 B/ z0 B1 i
fwrite(ample1,sizeof(bitmap),1,fp1);
( `5 l' f4 T+ X& ecout<<"********位图文件头格式:********"<<endl; ; c6 b' R4 ^9 k/ y
cout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;
, H1 p2 H+ `9 y: y2 h* G4 Ucout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;# _2 `. ?: ?# |- e0 z. k
cout<<"********以下是图像数据区********"<<endl;4 ]# ^( ?+ {% T
//指定像素点,以16进制输出BGR值/ Z0 f5 u: F' t$ e% J6 s$ k: }
cout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;/ R1 T2 Q* B7 {
cout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl;
3 W; k) h% `; ]4 L7 D1 g; j. T8 ]% i* Vcout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;& u/ y& f$ P7 K h
//将图像区数据读入 R、G、B三个数组
$ v! a- x/ b; tfor(i=1280; i>=0; i--)
# U/ V) `3 `; d ]( U% ifor(j=0; j<853; j++) 1 p2 E/ y$ H( v( O/ Z& r$ G7 p
{/ q3 o3 o4 d& q7 L- t( c4 G# \5 |
B[i][j]=ample1 -> bitmapdata[k++]; 2 f$ @ K( N! F: y( o
G[i][j]=ample1 -> bitmapdata[k++];
# e. g' w% B Q) X# } mR[i][j]=ample1 -> bitmapdata[k++];
, _0 [; b* K% G! B+ O% u- d}
' E7 g# a1 W) n! R; n5 C6 G//检查是否将图像数据读入数组! p# x: z. k" \/ W/ j8 q, b
cout<<"********以下是内存数组数据********"<<endl;
% e7 l- y, l' m+ h& w1 {. Z+ @5 @* Ecout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;) H/ T/ O' m R6 p. [0 X7 I7 O
cout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;
+ f! B7 l) z0 s5 j/ B; W' _( w4 ^: Y! wreturn 1;3 [% M2 i6 \7 m0 |/ d4 h1 k. P |
}
) f8 b. A, D3 M4 udelete ample1;+ |5 ^3 i" P0 t" c
fclose(fp); a7 x' U9 `# M" L* g% x) A
fclose(fp1);
1 m$ X% j/ q# Z; N} |
zan
|