- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。9 c! D7 Q+ v) u! a
#include <iostream.h>9 A2 x5 X8 j: v! r$ g7 U
#include <stdio.h>
9 V) s: G' T2 }& x9 K5 e- ?#include <math.h>/ i3 O( d F, K, ]
typedef unsigned char BYTE;
' @ W V" Q, [long Ary2DW (unsigned char p[4]){- y0 o5 p" ^9 ^
int a0,a1,a2,a3;unsigned long A;" }- a* p B8 E- {! h: H
a0=int (p[0]); a1=int (p[1]);! o! }8 G3 h4 ]* r) g
a2=int (p[2]); a3=int (p[3]);
" I0 P0 w2 Y% ~& Y& f5 K# w5 n' HA=a3*256*256*256+a2*256*256*256+a0;; r4 C- h |# o/ \+ V, g- F! m
return A;};//实现数的大小正确转换,转换为WORD所代表的实际值
1 O0 o; b' S' N3 ]typedef struct tagBITMAPFILEHEADER {& `9 c# B7 g0 m# Q: a, `. e: E% T
BYTE bfType[2];BYTE bfSize[4];
' _( F/ f/ Z# [% R% ]# h2 UBYTE bfRcserved1[2];
/ j$ f0 ?2 h" d& H' _( GBYTE bfRcserved2[2];2 }" u X! ]$ u+ H6 P4 F4 W2 c! I2 l
BYTE bfoffBits[4];6 w$ R8 y- D+ `" ?1 g& U
}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型
, H7 m- Q! F0 r) g Z( g7 }6 b+ w8 rtypedef struct tagBITMAPINFOHEADER {) I" F- {& K. ~6 g6 h/ {7 c
BYTE biSize[4];
6 [8 G& ^3 f& _0 l+ S, R' aBYTE biWidth[4];
6 B& f6 q6 M7 u# v o3 |* {BYTE biHeight[4];1 A! d* D; W* |' u
BYTE biCompression[4];
+ ?/ G2 ]3 T% w" W, K$ m& iBYTE biXPelsPerMeter[4];
) V, f2 j5 t$ h n X$ JBYTE biYPelsPerMeter[4];' H |) v V- f7 G' s9 S
BYTE biClrUsed[4];
' j: D) I/ V# Z1 _BYTE biClrImportant[4];
" ~) [& ~: L7 O. X: I; h* z6 n}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型+ \: r6 u6 X; X, I% A# B
typedef struct BitmapFile{+ k/ t9 t5 @% `4 g2 c, ^- W
BITMAPFILEHEADER bmfheader;
$ ?( A2 z9 Y. D$ aBITMAPINFOHEADER bminfoheader;2 Q: J7 d' H) X# F# [
BYTE bitmapdata[3275520];
. M9 I) G0 Y, q6 r}bitmap;//定义所处理图像文件对应BMP的文件格式
% t% i1 B' q2 S1 E: p! Y//主函数,将图像区数据读入B、G、R三个数组1 Q- u0 Z% c) H3 `) l, X( r
int main()! `7 J1 ^: O0 J3 ]+ p# O2 j2 [
{& s/ I8 |' P U" P
bitmap *ample1;6 N# m" D7 d9 r$ d
FILE *fp, *fp1;& u9 O. X2 E& G
BYTE R[1280][853],G[1280][853],B[1280][853];
# {" c6 F ]% R5 N A3 l8 tlong k=0;
( {0 ?, R: g# B' _: [& \int i,j;& u6 H5 y" T( B; P8 H
char name[20]="try.bmp";//读到新文件的文件名0 t) u* u0 o% [- ?7 F& r( k
fp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件# _$ ~7 t1 I; Z2 P# _( X
fp1=fopen(name,"wb");//为写建立一个新文件名 O) F4 Z/ B* Q8 @7 G, ?# K
if(! (ample1=new bitmap)){. r( j, `( h! o6 ]3 _* A
cout<<"error"<<endl;return 0;/ K" g0 j0 R1 H* t9 y0 U) G+ t
}
: I; ~, L% j0 `9 R* o0 f# W# aelse
0 F; P; z; E7 i- j{- V3 ~) b; x& n* o8 e( U! J. B
fread(ample1,sizeof(bitmap),1,fp);' U. V0 l# M: g G
fwrite(ample1,sizeof(bitmap),1,fp1);
9 g" p' q$ w8 f9 K7 E6 pcout<<"********位图文件头格式:********"<<endl; 4 M; D- e" s( p" @* X; m: q, b
cout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;. M( \& u4 F6 u& ]8 p
cout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;
0 O' e; ~' q+ n5 [$ W3 f/ H7 Q3 Qcout<<"********以下是图像数据区********"<<endl;8 A) q% R0 ~3 e! j
//指定像素点,以16进制输出BGR值
2 g I( U5 e2 ocout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;. f$ h' j" s! s9 a3 d3 d9 H
cout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl;
( B% P( j5 T) t& pcout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;
! c3 Q8 v2 C. t) p9 ^% ^/ |//将图像区数据读入 R、G、B三个数组
' u, o; o$ ~: H0 Mfor(i=1280; i>=0; i--) E; d d. Q2 M- m
for(j=0; j<853; j++) 5 ?1 Q. N7 F0 M5 G7 b
{
" c9 A8 H1 p6 d1 m) D# J: OB[i][j]=ample1 -> bitmapdata[k++];
8 d8 k8 H& j9 `" [ W0 l. xG[i][j]=ample1 -> bitmapdata[k++]; : E7 h' v! _* U s
R[i][j]=ample1 -> bitmapdata[k++];
0 ]/ q& X8 [0 s% m4 b- M, _ w0 [7 {}
' a& w* B& Y+ w3 ]# H//检查是否将图像数据读入数组' S4 R+ F7 U! t& f& B
cout<<"********以下是内存数组数据********"<<endl; V& U6 H' A2 f6 ?! k( I3 H( X2 C
cout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;
+ V1 X6 k4 y o. s- Bcout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;
4 s* Z A% Y* w _ C5 Zreturn 1;: F9 I8 o* h a$ ~) \+ ^+ B1 G
}+ w1 `( b8 F* e# v: C/ x% o0 y+ }
delete ample1;: w" R; g1 D/ R" A5 ^8 ?9 {
fclose(fp);
9 V7 o- }# P1 C! \fclose(fp1);) D" `( `, t9 {' c8 g5 h' w
} |
zan
|