- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。
; E, ]8 s0 } z) J$ z# ^' q#include <iostream.h>
, V" n `0 m+ u#include <stdio.h>0 d5 J' S% r& f( R( X! T
#include <math.h>* ~# I/ r# C8 I0 Z
typedef unsigned char BYTE;
- n3 s ^4 j( z4 _) N% |long Ary2DW (unsigned char p[4]){
8 x1 M- e' u* X3 k5 Zint a0,a1,a2,a3;unsigned long A;
0 O" b) R8 p5 t8 B- Ja0=int (p[0]); a1=int (p[1]);
- N: Q) S9 n M6 r# sa2=int (p[2]); a3=int (p[3]);9 f6 z _* G% o2 Z/ ^
A=a3*256*256*256+a2*256*256*256+a0;- Q7 C! N) O/ R3 k' K
return A;};//实现数的大小正确转换,转换为WORD所代表的实际值 9 ?% N* Q( ]1 ]4 w+ p4 x# s
typedef struct tagBITMAPFILEHEADER {
% U! G3 u0 E8 d3 u( |BYTE bfType[2];BYTE bfSize[4];: v8 {; @6 @; W; J" G6 [, A" ?- h' S2 |4 n
BYTE bfRcserved1[2];
$ X5 Z4 s$ f% c& _1 \) vBYTE bfRcserved2[2];
2 L m x* i; yBYTE bfoffBits[4];
; O5 N6 a( q% Z2 I}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型) ^! G2 ~9 a! k Z; [
typedef struct tagBITMAPINFOHEADER {( ^1 s! L; O# p9 [* M& c; q8 e1 ?3 [
BYTE biSize[4];
! `/ c7 n1 K8 A5 m3 f6 N' }. c% A$ MBYTE biWidth[4];- |3 C3 p# G+ O" b* T1 O8 S
BYTE biHeight[4];) M7 \2 H, g* Z3 V9 F+ a
BYTE biCompression[4];0 i9 x1 V9 A% ^6 A
BYTE biXPelsPerMeter[4];/ F7 |. J$ @& n( g
BYTE biYPelsPerMeter[4];
, v1 z% z2 U/ E2 m2 @BYTE biClrUsed[4];1 m4 M: L' g! L/ S& k. Y
BYTE biClrImportant[4];$ @6 i2 U& a4 |; ~4 ^3 S _
}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型
1 z: Q" }6 w1 B! q2 \# jtypedef struct BitmapFile{! A3 q, i# u5 _6 i
BITMAPFILEHEADER bmfheader;1 l8 J6 u$ B! F2 ]( {
BITMAPINFOHEADER bminfoheader;
) v1 h. b# |$ L- M$ vBYTE bitmapdata[3275520];6 M& Q% m' @) J* W3 ?) H
}bitmap;//定义所处理图像文件对应BMP的文件格式& d/ C. L9 [% X3 t& `
//主函数,将图像区数据读入B、G、R三个数组
+ {1 a) \$ I/ \/ s: l( Iint main()
$ M# l9 i- `/ p5 L! D6 z% V{9 n* [$ f& ?. ]
bitmap *ample1;1 k7 P5 H- J2 O Z
FILE *fp, *fp1;
7 J. N! k! _4 t3 |0 _' f H# [BYTE R[1280][853],G[1280][853],B[1280][853];" G% h/ n, z, ^, w
long k=0;; C6 O. p0 q1 q- b/ W/ f1 i4 L
int i,j;, o3 N ^2 E, Y6 T4 f, o5 J
char name[20]="try.bmp";//读到新文件的文件名; n( E% Z5 g! i2 G
fp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件 e1 u, O; r+ L- P) D
fp1=fopen(name,"wb");//为写建立一个新文件名
0 ?+ G' N# g7 xif(! (ample1=new bitmap)){' k( t( O9 D6 R( `' i& J
cout<<"error"<<endl;return 0;, T$ V8 P. @5 a3 F3 e
}! h" Z/ e: e" X
else: W v: J/ q6 h5 k
{) P R" f7 r6 V% s& R3 N
fread(ample1,sizeof(bitmap),1,fp);5 j b; I5 e6 U; E, w
fwrite(ample1,sizeof(bitmap),1,fp1);
" L$ [: |: _0 k- n, Y$ y- A" m7 I6 ecout<<"********位图文件头格式:********"<<endl;
+ e" I) j2 e6 }1 m4 I, U( Bcout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;2 `2 a0 |# k5 U) Y* I
cout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;2 S8 @# T! V# Q/ ?
cout<<"********以下是图像数据区********"<<endl;
$ O: U/ ?4 N$ J3 F$ j9 H w( i//指定像素点,以16进制输出BGR值
7 |4 i. X1 _6 k2 G# D/ u/ Zcout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;
, B1 L! g8 g" t% acout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl; h5 }" `2 Y8 Y# e9 ~( J& Y
cout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;. f" h( ^ q/ b& U" Y
//将图像区数据读入 R、G、B三个数组+ H4 ^1 y; E, t9 V" N
for(i=1280; i>=0; i--)" z) P6 E8 n& U6 z- C
for(j=0; j<853; j++)
+ h7 @2 z/ M5 R. B. O: U{
2 O% D- h9 y: b8 \3 bB[i][j]=ample1 -> bitmapdata[k++];
7 C a5 h1 A( M- N iG[i][j]=ample1 -> bitmapdata[k++];
( l8 ~3 _" u- _0 Z! jR[i][j]=ample1 -> bitmapdata[k++];
! g! y. ^! z5 a1 v0 r! O3 \}
+ u. {8 n5 P3 b' {! X& y//检查是否将图像数据读入数组% I4 X* |7 G, {
cout<<"********以下是内存数组数据********"<<endl;
6 g" P& Y0 c2 Y( I1 e3 I1 c- pcout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;
6 r8 b7 G: w) O% S5 k8 ycout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;2 x Y$ I+ W+ r/ L `: M0 w( F
return 1;' c: W6 y. Q! i' Z/ s( y1 i- ?
}8 u$ B D7 O0 @* U0 i
delete ample1;
! S$ D6 I) S S/ m- V4 rfclose(fp);
: o9 ^! ]8 n9 u- T3 tfclose(fp1);3 o _; I7 }$ R$ B D
} |
zan
|