روش خواندن تصویر bmpتوسط Borland c++
C++ بدلیل نزدیک بودن به سخت افزار سرعت عمل بالای دارد. بدین دلیل برای الگوریتمهای پردازش تصویر که هزینه محاسباتی بالایی دارد مناسب است.
تصویر bmp یک فورمت ساده تصویری است که بدون فشرده سازی تصویر را ذخیره میکند.
در بالای اطلاعات تصویر heder file قرار دارد که اطلاعات کل تصویر مورد بررسی را در 53 درایه بیان میکند. نوزده و بیست و سومین درایه ابعاد ماتریس تصویر را بیان میکند تا بتوان ماتریس لازم برای دراختیارگرفتن اطلاعات تصویر را ایجاد کرد.
بعد از آن اطلاعات اصلی تصویر قرار دارد که به ازای هرpixel سه درایه r , g , b قرار گرفته اند که ما در این برنامه از یکی از آنها استفاده مینماییم. برای جدا سازی هر سطر از سطر دیگر در پایان هر سطر یک درای صفر قرار دارد .
#include
#include
#include
#include
int www[20000],sum=0,i,j,m,n;
char picname[30]="pic3.bmp";
void main()
{
clrscr();
FILE *fp;
if ((fp= fopen(picname, "r"))== NULL)
{
cout<<"not open";
exit(1);
}
char s[54];
int ss[54];
fgets(s,53,fp);
for(i=0;i<=53;i++)
{
ss[i]=int(s[i]);
}
m=ss[22],n=ss[18];
cout<<"\npic size : m="<
FILE *fp1;
if ((fp1= fopen(picname, "r"))== NULL)
{
cout<<"not open";
exit(1);
}
char *w;
int *ww;
w=(char *) malloc(sizeof(char)*m*(3*n+1));
ww=(int *) malloc(sizeof(int)*m*n);
fgets(w,54+m*(3*n+1),fp1);
fclose(fp1);
int k=53,kk=0;
for(i=0;i<=m-1;i++)
{
for(j=0;j<=n-1;j++)
{
k=k+3;
kk++;
ww[kk]=int(-1*w[k]);
}
k++;
}
free(w);
for(i=0;i<=m*n-1;i++)
www[i]=ww[i];
free(ww);
for(i=1;i<=m-1;i++)
{
for(j=1;j<=n-1;j++)
{
cout<
cout<<"\n";
}
getch();
}

