- 在线时间
- 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删不掉。请教专家们啦,看看我这程序错哪。7 _6 i8 p5 o, d2 N. f- w% O2 r2 v
#include <iostream.h>
8 A* ^2 I; [- ^' m3 A" _#include <stdio.h>5 i; |+ U' ?" w& }% y
#include <math.h>
/ D7 Q9 n. r9 U* Htypedef unsigned char BYTE;
+ ?& o3 @' N9 T" d: k. Z8 K& nlong Ary2DW (unsigned char p[4]){
% j& H$ {, D/ {- S$ Yint a0,a1,a2,a3;unsigned long A;& v* M8 `4 ^. _5 P
a0=int (p[0]); a1=int (p[1]);1 q2 ` r* g0 ]' f
a2=int (p[2]); a3=int (p[3]);
: O5 N: I! ]+ z% e. C" ]( kA=a3*256*256*256+a2*256*256*256+a0;( x. T* X8 g, }- D9 r6 ~6 |, p
return A;};//实现数的大小正确转换,转换为WORD所代表的实际值
: x( x8 H# P* Q+ I5 K8 ntypedef struct tagBITMAPFILEHEADER {
9 O0 H2 q' B2 _0 k D7 m# o( E5 pBYTE bfType[2];BYTE bfSize[4];
' \. z) y+ d( X YBYTE bfRcserved1[2];
! a9 T2 B7 C: `0 b+ [9 E. YBYTE bfRcserved2[2];
9 r1 Y& A4 Y" v! n4 ZBYTE bfoffBits[4];
3 }/ A5 s, p8 Z' b1 e}BITMAPFILEHEADER;//定义文件头格式,用相似的数据类型代替系统定义的数据类型* I6 ^& T1 [: A9 H" ~ i
typedef struct tagBITMAPINFOHEADER {& F% \ H3 S$ y: E7 l
BYTE biSize[4];
+ ~" F! ]# f4 e! rBYTE biWidth[4];5 b1 ?4 L" R) R6 M6 ]0 h, V
BYTE biHeight[4];
" n! M' x: v: t( {3 F5 H* M2 U5 DBYTE biCompression[4];
5 x- v7 |& e! L. @1 SBYTE biXPelsPerMeter[4];" y5 |1 O4 x2 d% W' n
BYTE biYPelsPerMeter[4];9 O* K% l4 D, q; D3 O
BYTE biClrUsed[4];9 i. a# s4 s6 x% V! `5 q: P) t
BYTE biClrImportant[4];
/ Q6 M8 u+ Y& I$ J F' N# e4 b3 ]}BITMAPINFOHEADER;//定义信息头格式,用相似的数据类型代替系统定义的数据类型
3 A$ W) C& D5 u" F1 ?typedef struct BitmapFile{- D3 T+ Q( n) ^) [
BITMAPFILEHEADER bmfheader;; W$ K$ G6 j0 X( |2 b) J9 l+ u6 j, W
BITMAPINFOHEADER bminfoheader;
5 k, A' a5 b# I; } [# nBYTE bitmapdata[3275520];
- @* G1 S- j# x8 _; J}bitmap;//定义所处理图像文件对应BMP的文件格式( Q0 C3 T8 n/ O6 D2 B5 c: P$ d
//主函数,将图像区数据读入B、G、R三个数组
" e" t" B# `2 ]) `3 g# Oint main()
- q4 n. |. Q8 g) i2 u, L' x{
. H# ^# ^! S0 Y! w0 J3 M3 ~6 Pbitmap *ample1;
( F6 V( x2 k+ A& s& KFILE *fp, *fp1;6 f! y4 z! x+ @2 T; K+ ~# B" q
BYTE R[1280][853],G[1280][853],B[1280][853];9 ]# t# o0 r! H# K/ D1 `
long k=0;
1 j6 u' E' k; c7 nint i,j;8 y. ~, E( q( j2 @# L+ [
char name[20]="try.bmp";//读到新文件的文件名5 G8 G% U) u* y+ b/ V6 I- W
fp=fopen("D:\\ample1.bmp","rb");//以二进制打开读文件( H1 a- l( i1 Q& c+ U/ |( s& ^
fp1=fopen(name,"wb");//为写建立一个新文件名/ j8 D' n6 b2 r
if(! (ample1=new bitmap)){
/ O) o( E6 ^* a/ ^8 a6 M' X: Ccout<<"error"<<endl;return 0;
9 w5 R! F1 J; A; d}0 C/ U9 C0 n% H. s. J
else$ r; [4 y( F! ]3 q; _' C4 X
{
$ x3 N1 l- }7 k% W! vfread(ample1,sizeof(bitmap),1,fp);* T4 Q) f2 T- @5 a( T4 C/ X$ V
fwrite(ample1,sizeof(bitmap),1,fp1);& h5 q7 w3 }2 \. y8 L
cout<<"********位图文件头格式:********"<<endl;
; U" K9 ?$ {. a, Ccout<<"位图文件的类型"<<ample1 -> bmfheader.bfType[0]<<ample1 -> bmfheader.bfType[1]<<endl;" ]1 X' X2 v2 A' p
cout<<"位图文件的大小"<<Ary2DW(ample1 -> bmfheader.bfSize)<<"字节"<<endl;1 U* }& ~; }) P
cout<<"********以下是图像数据区********"<<endl;
% s5 Y5 v4 K4 I# ~1 a, f4 [//指定像素点,以16进制输出BGR值% ^- p5 o f2 z: g5 i
cout<<"像素点B通道的值"<<hex<<int (ample1 -> bitmapdata[0])<<endl;
2 j+ _. P( u1 J" e: P- |& Xcout<<"像素点G通道的值"<<hex<<int (ample1 -> bitmapdata[1])<<endl; 4 s8 u7 g$ l7 q' E7 u3 X
cout<<"像素点R通道的值"<<hex<<int (ample1 -> bitmapdata[2])<<endl;
3 g4 l* j# i; q+ t//将图像区数据读入 R、G、B三个数组% Z0 h1 j8 S2 k2 l" e M
for(i=1280; i>=0; i--)+ }$ _2 H$ z r4 r. E7 L5 L" U
for(j=0; j<853; j++) % w5 l" K7 M; ~6 `6 d: `
{2 q% B+ Z1 Y. z! ]% O: X( n5 k8 ~
B[i][j]=ample1 -> bitmapdata[k++];
6 R# A. a q) a. x. ?8 q8 d; AG[i][j]=ample1 -> bitmapdata[k++];
6 f y; D# p$ ?# s1 E+ ?R[i][j]=ample1 -> bitmapdata[k++];
. r& t8 H2 a, D6 A}- f' d0 H. t" P# K- [; U; E0 j
//检查是否将图像数据读入数组; ?" n2 `8 [3 C' W; g8 r
cout<<"********以下是内存数组数据********"<<endl;
: _- |: M# c2 n$ g1 m1 R9 `5 @. ncout<<"第一排第一个像素点B通道的值"<<int (B[0][0])<<endl;
) ]' k8 j# {( g$ Zcout<<"最后一排第一个像素点R通道的值"<<int (R[1280][0])<<endl;
3 c" O( ^* \. Z! u6 Kreturn 1;$ X' [3 B! B6 v- L! P
}
1 [$ B( Q1 o6 O3 ]0 r3 {delete ample1;
2 V6 i1 Q, t0 @; y* K& X2 d2 d) Ffclose(fp);
3 R6 E+ M1 ?& Z& V9 h' g3 {fclose(fp1);
- l3 n( X: ?& v$ r5 }} |
zan
|