- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。
* f9 I/ J! h9 V& p' g& b#include <iostream.h>, D/ E! n/ T) u5 ?. g
#include <stdio.h>
- B6 R4 ^7 f6 o, H N9 U- Y% E6 V#include <math.h>
6 Q$ k4 @' W( I/ o9 L" G" ptypedef unsigned char BYTE;; ^4 x3 ~3 C# @) U, z
long Ary2DW (unsigned char p[4]){
2 F% l; o% `" c! j9 Yint a0,a1,a2,a3;unsigned long A;
, N7 x, E2 g5 c9 ?( C; Y( ?a0=int (p[0]); a1=int (p[1]);# n# x2 I; ~3 f: ~
a2=int (p[2]); a3=int (p[3]);' Y7 o, P6 j$ h4 e) F5 X5 d3 v
A=a3*256*256*256+a2*256*256*256+a0;* f5 g0 w+ ^2 ]5 O# s" k
return A;};//实现数的大小正确转换,转换为WORD所代表的实际值
8 D! P* T8 l- ?4 l( ktypedef struct tagBITMAPFILEHEADER {
3 k' Q+ K+ R; l9 |BYTE bfType[2];BYTE bfSize[4];4 l1 B- g8 U% v
BYTE bfRcserved1[2];
; U/ l3 N$ W" @% ?" ABYTE bfRcserved2[2];
5 E% }9 L1 A; U6 X) DBYTE bfoffBits[4];
- A7 i7 U; t5 X& N( K}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型
7 w5 k# [+ y; c- v3 Y$ E) |typedef struct tagBITMAPINFOHEADER {
" m; o: h5 }. X" U2 GBYTE biSize[4];2 Y* G8 j z* p, u( f
BYTE biWidth[4];! i% C' w# \: N3 s5 _9 J
BYTE biHeight[4];
; ?: H2 B4 R( t& ?' p% SBYTE biCompression[4];
; T4 _) g7 G8 {; m1 y2 y. l) A% jBYTE biXPelsPerMeter[4];. _( b5 b7 N4 t" o+ n9 l+ q
BYTE biYPelsPerMeter[4];
6 Y5 A) \5 c! o1 Q& Q7 ]8 `/ tBYTE biClrUsed[4];
5 B h* ` l, ~ ]- c' |BYTE biClrImportant[4];
8 k3 [& D5 t7 M3 N; S}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型
0 q. b! _% K) D' S& c, rtypedef struct BitmapFile{
" v8 E) `0 F9 E& BBITMAPFILEHEADER bmfheader;3 j: Y D$ ?9 a! r5 R" O1 \8 h
BITMAPINFOHEADER bminfoheader;2 k% d. }; ~" V- _/ u
BYTE bitmapdata[3275520];
% x% N0 i" G. D5 ?- t$ o}bitmap;//定义所处理图像文件对应BMP的文件格式
4 J$ n5 q: I0 o* Z( g4 M//主函数,将图像区数据读入B、G、R三个数组
7 j' `6 X3 r# R: w+ m+ Q+ Q) eint main()) p8 T2 ` d" _4 {. { D& Q# n7 V
{
9 L/ j& w* o7 _8 O R' Cbitmap *ample1;
# b+ d* S* l9 i9 f' w; g0 `4 uFILE *fp, *fp1;7 x) h. D/ R. a7 Q( c, b
BYTE R[1280][853],G[1280][853],B[1280][853];
/ p5 ~ i6 q3 d ulong k=0;
8 _' y$ H3 Q$ m+ g4 d9 Pint i,j;
S- ^( P! c& P7 X; d' Gchar name[20]="try.bmp";//读到新文件的文件名5 @ j, @5 }$ e% j+ S
fp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件8 O* x- E" n: |5 x- k' d, p+ X- N
fp1=fopen(name,"wb");//为写建立一个新文件名0 e1 {+ Z! p1 ^" b4 |* c
if(! (ample1=new bitmap)){
# s s5 w" }5 r1 B( p( ?cout<<"error"<<endl;return 0;
) }3 E! M& U8 d; ^}
* K9 `5 ]: e) k# U+ o6 l' `else7 d+ I. D: W+ [$ {7 o& w i( g1 ]
{' L$ F! ]# u9 Y& |
fread(ample1,sizeof(bitmap),1,fp);- S( z* q( B2 {& @
fwrite(ample1,sizeof(bitmap),1,fp1);
( F* ` g" b, Qcout<<"********位图文件头格式:********"<<endl;
, }% A+ R9 D" F% acout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;
l0 f3 S6 M/ f2 {, Acout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;* E" W5 q4 Q( m+ j0 r
cout<<"********以下是图像数据区********"<<endl;
+ X" K" A( K" {" `//指定像素点,以16进制输出BGR值 v: o' _7 w7 D3 y; ~
cout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;
5 i! F2 [8 n' T1 N7 Ecout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl; % q2 [7 V6 i2 E4 |0 R6 [" F
cout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;: d0 I9 g1 n' }9 V3 b
//将图像区数据读入 R、G、B三个数组
$ j$ l! E4 N& o9 k! j( W- I! Jfor(i=1280; i>=0; i--)
& ?$ |- ^- _: J5 ]( Efor(j=0; j<853; j++)
: L0 d7 S8 u- I {, @* ^ a; V{
2 ~ k$ F& n# i6 d( TB[i][j]=ample1 -> bitmapdata[k++]; ) z0 s% C& q, y. G
G[i][j]=ample1 -> bitmapdata[k++]; 7 ~9 _3 _8 |1 \- _8 i3 H. l' c
R[i][j]=ample1 -> bitmapdata[k++];2 {" d. O" B4 C4 ^- G
}0 N! z9 S( }) ^# G' M
//检查是否将图像数据读入数组
2 e; A" ]7 R1 W! z1 s' E: Qcout<<"********以下是内存数组数据********"<<endl;( S) f: i! L% Q3 m6 I5 x% `
cout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;
+ e. N8 z9 B0 pcout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;& G8 T% @* g/ t. `7 x
return 1;
$ y! P2 _2 T( M7 a}0 K( g3 @( y0 o' e$ s( H7 l! ^
delete ample1;% c( K1 G6 ~2 u5 n/ D3 S
fclose(fp); ' ]+ I5 J4 S9 }' E2 `6 Z h# R. X$ L
fclose(fp1);: v# I8 p" a1 A7 ^
} |
zan
|