- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。
5 ~4 o. }1 R. c8 r#include <iostream.h>) n3 f* W3 t+ @0 ?5 @7 ^3 |
#include <stdio.h>
7 m& D6 \4 H- p#include <math.h>
' q4 X8 k# V5 `) c. w# D) @& stypedef unsigned char BYTE;
$ ^7 W$ I& z+ g3 L: l' t9 ~long Ary2DW (unsigned char p[4]){! |9 j4 M& U9 ?# D
int a0,a1,a2,a3;unsigned long A;) A. [0 Z4 P- C( a' ~
a0=int (p[0]); a1=int (p[1]);2 Z* U8 E* Y5 N( H1 _; A
a2=int (p[2]); a3=int (p[3]);* {7 J ~7 e# _* k: u
A=a3*256*256*256+a2*256*256*256+a0;, i; }$ D! { z' i8 u' G
return A;};//实现数的大小正确转换,转换为WORD所代表的实际值
U. X* Y' M! wtypedef struct tagBITMAPFILEHEADER {3 N8 O8 K$ E$ f f4 T
BYTE bfType[2];BYTE bfSize[4];0 \- `8 G X% ~$ m' b' O
BYTE bfRcserved1[2];
- r. p" S. f4 x) m! z! A5 V, e: vBYTE bfRcserved2[2];
" s0 s" p9 G# L+ W' S) q7 i2 fBYTE bfoffBits[4];
, f/ d: i# t. r, ?5 Z; H}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型: `* N# `% H8 [0 e
typedef struct tagBITMAPINFOHEADER {
& Y7 F# ?8 Z1 i* U6 rBYTE biSize[4];7 E, Y1 y3 m6 C0 Y* H
BYTE biWidth[4];
P5 ~) F3 H: H# U( s) a+ q7 s) nBYTE biHeight[4];* ?* @2 h3 x- x2 m
BYTE biCompression[4];4 s* q7 E5 ?7 Q0 F# n: X* S7 B
BYTE biXPelsPerMeter[4];( J K# ^. \: c0 m# w4 X$ Q
BYTE biYPelsPerMeter[4];' @4 s% @8 M$ d" q7 e+ Y
BYTE biClrUsed[4];/ m. Y/ ?7 J1 V" T: `+ m
BYTE biClrImportant[4];7 {4 p" a9 Q7 h9 h8 V. C' `
}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型$ U7 Q; s; v% N4 |) [ u. z
typedef struct BitmapFile{ O" Z* C, P& s! N3 c. J
BITMAPFILEHEADER bmfheader;% E: m( ]8 g" B1 L9 k3 ]/ h
BITMAPINFOHEADER bminfoheader;! `, \/ ]8 o4 W7 B4 U0 p- D
BYTE bitmapdata[3275520];
9 Z" @9 }9 l: D, j. l# s' {}bitmap;//定义所处理图像文件对应BMP的文件格式
" W$ x5 z8 D3 @ b& E2 Y//主函数,将图像区数据读入B、G、R三个数组
& z8 W4 m2 T; T+ g: ]0 U) {; Yint main()
B H4 q" n9 f( z" c+ G{" P0 ?/ x; W g3 m8 I
bitmap *ample1;
7 p3 O6 }2 w1 S1 K- MFILE *fp, *fp1;
7 I) d, W X# S Z q8 uBYTE R[1280][853],G[1280][853],B[1280][853];
; g8 g/ `2 ~( \+ J% i& I9 ]long k=0;
( l% N3 q1 h; K- l Y, Mint i,j;! d. H+ f! _4 c3 H: q, {1 Y
char name[20]="try.bmp";//读到新文件的文件名
* r4 j" R) ?7 T1 A' ^fp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件( c3 X+ ?3 \" \( w8 i: `4 {
fp1=fopen(name,"wb");//为写建立一个新文件名3 O6 W. q& N6 c# C1 Z3 _1 b
if(! (ample1=new bitmap)){
$ S* G% }2 k) l) Y+ I" i/ hcout<<"error"<<endl;return 0;( n, p7 g/ s6 c
}
3 }9 l2 ?# G9 Yelse$ J" @5 O/ f) ?$ d6 Y0 [7 f$ @
{
2 E7 `6 {$ B) P. i3 A; ]1 [fread(ample1,sizeof(bitmap),1,fp);% g9 o$ ^- D8 Q1 \
fwrite(ample1,sizeof(bitmap),1,fp1);) g+ b$ o, C; S- s1 K7 e7 [* V3 i
cout<<"********位图文件头格式:********"<<endl;
, V" i/ m5 g! e, G3 I, bcout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;
. L3 ]* M2 E5 v" b& p5 U) r0 Ncout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;) _4 b& x0 z$ n0 H
cout<<"********以下是图像数据区********"<<endl;
1 Z4 Y8 G; [8 K! w//指定像素点,以16进制输出BGR值
$ f+ ^- ]. v; D7 Ocout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;3 |4 D, A5 O- n, H/ ?1 o
cout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl;
& q2 l+ I) G$ [! Rcout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;
" N: f3 M% T" k3 L/ x/ V- l* W8 f' G//将图像区数据读入 R、G、B三个数组" ^! }& n$ ]9 f
for(i=1280; i>=0; i--)0 m; V4 I% o/ \' J1 U; k
for(j=0; j<853; j++)
5 L' v; k( H( |1 [. o{
* t/ s$ {- q3 W) f$ j9 NB[i][j]=ample1 -> bitmapdata[k++];
& `& g X" I( i$ _1 K1 fG[i][j]=ample1 -> bitmapdata[k++];
& q3 _; Z7 b1 v" N" j: y* ^R[i][j]=ample1 -> bitmapdata[k++];
3 G( l9 V- }" k( S) T/ a}/ {, i4 }3 D% ]9 I0 K
//检查是否将图像数据读入数组" w- V( H$ m3 P& K( A
cout<<"********以下是内存数组数据********"<<endl;
0 f7 n8 q+ n+ u. I ucout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;1 v3 E4 {: Y' t6 }
cout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;
' ]4 z7 N x- y+ wreturn 1;
* ?) W2 K1 M1 A) F! a& J6 g}
. b& ~( N y- q# [4 kdelete ample1;: x: ~& ^. x6 w' d
fclose(fp);
, B7 V9 [6 G* b/ v' k8 W- Zfclose(fp1);+ ~$ q2 Y7 w# ~# i- n6 P1 ]
} |
zan
|