- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。
/ j- |8 v. t3 H3 v- m6 _. G#include <iostream.h>
1 r- F1 d# p- v* Q#include <stdio.h>
$ _$ s G& {5 ]( I- R) X#include <math.h>
3 d/ f7 d4 \* t+ q a, X. qtypedef unsigned char BYTE;
) w( W) e. ?, \4 ?long Ary2DW (unsigned char p[4]){
4 s6 W( b9 d5 T) S8 Z) }. I8 N3 Pint a0,a1,a2,a3;unsigned long A;* ~" B9 J1 D- Y4 x
a0=int (p[0]); a1=int (p[1]);; W7 x/ i9 ^: n9 E$ o) b! i
a2=int (p[2]); a3=int (p[3]);
% C# n, U3 x5 v- C- V) IA=a3*256*256*256+a2*256*256*256+a0;
% T: E, n- Y* J7 Lreturn A;};//实现数的大小正确转换,转换为WORD所代表的实际值 1 k5 J+ H( O: \) R- i3 c7 Y
typedef struct tagBITMAPFILEHEADER {
# c3 P; \8 y; |! e9 tBYTE bfType[2];BYTE bfSize[4];
+ j6 N6 s4 `: EBYTE bfRcserved1[2];) s, m( k9 @0 D8 ~9 l: D+ }; d# K5 T
BYTE bfRcserved2[2];, M3 {5 U4 [ H$ w: N* [
BYTE bfoffBits[4];
2 r/ S3 e: |7 |1 K}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型
+ R, o w6 d% u* U: a utypedef struct tagBITMAPINFOHEADER {6 x$ I. {! Q5 g* c0 S8 J
BYTE biSize[4];
8 v* C) {4 }# q9 U2 hBYTE biWidth[4];
t" X- p' M+ C8 U0 uBYTE biHeight[4];
$ C, T3 f, _" ]6 `3 a% x. F, ?" jBYTE biCompression[4]; h) C& W7 T+ W* \7 J A" A& O: `
BYTE biXPelsPerMeter[4];
8 [* m) t* O* [; a7 a& f- _" eBYTE biYPelsPerMeter[4];
5 G5 A; C" G {' b2 NBYTE biClrUsed[4];8 h3 x7 n2 b1 f' h2 O& _4 g
BYTE biClrImportant[4];9 A- z2 J: q% l4 |, Q& M
}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型
0 L! J# }( N6 o7 c5 a% Ktypedef struct BitmapFile{
- T/ k* Y Z" H! e4 Q0 p" e2 \; _+ ]BITMAPFILEHEADER bmfheader;
/ j+ ?( s O' |2 e4 {BITMAPINFOHEADER bminfoheader;
3 [5 [) a' v! c3 NBYTE bitmapdata[3275520];
2 X0 c: e, h2 g2 t; c}bitmap;//定义所处理图像文件对应BMP的文件格式8 @! Q, b; @1 K* r* I
//主函数,将图像区数据读入B、G、R三个数组
+ ~( m* ~- I4 @int main()4 K5 [" [( m# ?. I
{8 B, D1 C4 [4 R+ L D3 S0 G% C
bitmap *ample1;
8 B/ s5 n% [. hFILE *fp, *fp1;3 c. O+ S" j4 }0 z* \: d" r
BYTE R[1280][853],G[1280][853],B[1280][853];
; {/ h% ]! a0 x4 d( x4 i: Zlong k=0;; e3 Y, ^# b( A
int i,j;9 c- [: y% F V; i$ q$ z( \# [
char name[20]="try.bmp";//读到新文件的文件名* E# v# x' n A# A2 Q) {4 z" g- Q
fp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件
' R4 }1 x) G+ P1 C1 Afp1=fopen(name,"wb");//为写建立一个新文件名/ Y& z! p, a* [& {
if(! (ample1=new bitmap)){5 u3 {$ c$ K0 k( Q8 W6 j( C4 j% u
cout<<"error"<<endl;return 0;4 r6 ?% ` _( A
}- B: c5 Q1 e; b l2 p$ T
else
4 M; Z4 G! s) m" v8 s! e+ P6 |9 _{7 l a2 Z; w4 [/ D. G1 \7 m
fread(ample1,sizeof(bitmap),1,fp);
* T8 [. y" r, ^, b, Yfwrite(ample1,sizeof(bitmap),1,fp1);0 F; S& }) Y0 G' Q0 D( ^
cout<<"********位图文件头格式:********"<<endl;
7 R6 g( G1 m8 Qcout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;
$ b$ C7 k- o1 S0 H+ n9 X* p8 ocout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;
9 ] j: b0 Z+ _) b! T5 x; v! r hcout<<"********以下是图像数据区********"<<endl;* z5 t* X# \* l: \3 Y6 t
//指定像素点,以16进制输出BGR值
4 }1 ]. L. f% q+ o8 A6 ^* Hcout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;' @. @# g! g' U- b m- y
cout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl; . h; S0 L1 T3 ]4 D% W
cout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;: ]# ?& C1 `8 f
//将图像区数据读入 R、G、B三个数组
L7 m$ J: l2 U1 f6 s% u4 Rfor(i=1280; i>=0; i--)
R& M+ a4 N; B8 R" I2 yfor(j=0; j<853; j++) 0 h' i7 i# r6 i& L
{
4 x z8 d ~# d5 j, J- G. oB[i][j]=ample1 -> bitmapdata[k++]; J4 \2 w$ ?% X: Q+ L5 g* L/ a" T
G[i][j]=ample1 -> bitmapdata[k++];
- F$ B K" e6 {R[i][j]=ample1 -> bitmapdata[k++];
+ _( M) f% n) S}1 a' `& h! D8 p4 I
//检查是否将图像数据读入数组 I8 f8 f+ ^' G
cout<<"********以下是内存数组数据********"<<endl;9 y1 V! m/ n6 B; [
cout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;
5 h7 t! O$ Q/ i; [: C5 K3 @3 ccout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;: v9 ~1 W; U+ q9 K" _, ^. z
return 1;
8 B/ ?' j3 C7 V7 w' [* E& M1 w, [! A}
$ S# u5 O6 P8 C8 _3 e3 N$ G+ I( Adelete ample1;2 u5 z- U* V3 a6 y- t3 c% `; E2 J, z
fclose(fp); ; i5 d1 D' b1 ^$ l* S
fclose(fp1);
. x3 E& [) @& s7 ~0 H6 c5 ^} |
zan
|