|
#include "AtlImage.h"
cImage m;
m.Load(_T("C:\\1.jpg"));
m.BitBlt(0,0,640,480);
Of one Essence is the human race
thus has Creation put the base
One Limb impacted is sufficient
For all Others to feel the Mace
(Saadi )
|
|
|
|
|
Thanks for ur reply. I hv a query
is it a standard lib?? Can i hv cod using std. lib. only?
|
|
|
|
|
shyampasari wrote: Can i hv cod using std. lib. only?
Do you pay for each keystroke?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
what about CImage (and related stuff) ?
This signature was proudly tested on animals.
|
|
|
|
|
How to include it on MS Visual C++??
|
|
|
|
|
More information would have been very useful. What type of image is this (bmp, jpg, ...) ? How do you need to display this image ?
|
|
|
|
|
I need to display a grayscale image as i m working on eigenfaces for face recognition
|
|
|
|
|
Great, but what about the questions I actually asked ?
|
|
|
|
|
It depends below.
1) what type is that image
2) what is the display device
3) what platform or os do you use
4) what do you plan to use library for image processing
fro example,
1') windows 24 colored bitmap
2') windows crt screen
3') win32 platform
4') use simply win32 GDI api
You can write codes with above condition. It is very ordinary image processing but coding is a bit messy. MSDN tells you some sample codes kindly.
And also
4'') you can buy some image processing library
Paying usually makes you easier to write codes.
|
|
|
|
|
I was developing a simple program to read an 24-bit BMP image, convert it into 8-bit intensity map and then display it as a grayscale image. Please review this code and tell me where I am getting an error...
#include<stdio.h>
#include<conio.h>
#pragma pack(2)
typedef struct
{
unsigned short int type;
unsigned int size;
unsigned short int reserved1,reserved2;
unsigned int offset;
}HEADER;
typedef struct
{
unsigned int size;
int width,height;
unsigned short int bits;
unsigned int compression;
unsigned int imagesize;
int xresolution,yresolution;
unsigned int ncolors;
unsigned int impcolors;
}INFOHEADER;
typedef struct
{
unsigned int R,G,B;
}PIXEL;
void main()
{
HEADER headfirst;
INFOHEADER headsecond;
PIXEL pix;
FILE *fin,*fout,*f1;
char *read;
int ch=0,i,j,mat[768],R[256],G[256],B[256],Gray[256];
float Y[256];
fin=fopen("C:/Dev-Cpp/1.bmp","rb+");
if(fin==NULL)
{
printf("Error");
exit(0);
}
fread(&headfirst,sizeof(headfirst),1,fin);
if(headfirst.type!=19778)
{
printf("Not BMP");
getch();
return(0);
}
printf("Header %x ",headfirst.type);
printf("%u ",headfirst.size);
printf("%u %u ",headfirst.reserved1,headfirst.reserved2);
printf("%u\n",headfirst.offset);
fin=fopen("C:/Dev-Cpp/1.bmp","rb+");
fread(&headsecond,sizeof(headsecond),1,fin);
printf("IFD %u",headsecond.size);
printf("%d %d %u %u %u %d %d %u %u\n",headsecond.width,headsecond.height,headsecond.height,headsecond.bits,headsecond.compression,headsecond.imagesize,headsecond.xresolution,headsecond.yresolution,headsecond.ncolors,headsecond.impcolors);
fin=fopen("C:/Dev-Cpp/1.bmp","rb+");
if(fin==0)
{return(0);
}
for(i=0;i<headfirst.offset;i++)
{
ch=getc(fin);
}
i=0;
while ((ch=fgetc(fin))!=EOF)
{
mat[i]=(int)ch;
i++;
}
fclose(fin);
printf("Blue Plane\n");
i=0,j=0;
while(i<768)
{
B[j]=mat[i];
printf("%3d ",mat[i]);
i=i+3;
j++;
}
printf("\n\n");
printf("Green Plane\n");
i=1,j=0;
while(i<768)
{
G[j]=mat[i];
printf("%3d ",mat[i]);
i=i+3;
j++;
}
printf("\n\n");
printf("Red Plane\n");
i=2,j=0;
while(i<768)
{
R[j]=mat[i];
printf("%3d ",mat[i]);
i=i+3;
j++;
}
printf("\n\n Gray Scale Image\n");
for(i=0;i<256;i++)
{
Y[i]=0.2989 * R[i] + 0.5870 * G[i] + 0.1140 * B[i] ;
G[i]=(int)Y[i];
printf("%3d ",G[i]);
}
fout=fopen("C:/Dev-Cpp/1.bmp","wb+");
fwrite(&headfirst,sizeof(headfirst),1,fout);
fout=fopen("C:/Dev-Cpp/1.bmp","wb+");
fwrite(&headsecond,sizeof(headsecond),1,fout);
fout=fopen("C:/Dev-Cpp/1.bmp","wb+");
for(i=0;i<255;i++)
{
read[i]=(char)G[i];
}
read[i]='\0';
for(i=0;i<255;i++)
{
fwrite (read,sizeof(G),1,fout);
}
getch();
}
|
|
|
|
|
What is the misbehaviour?
Please be specific in your posts.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
The code does not execute... The image is read right to left i believe, not left to right
|
|
|
|
|
Mitesh Karwa wrote: The code does not execute...
Mitesh Karwa wrote: The image is read right to left i believe, not left to right
The above behaviours looks quite incompatible...
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
I'm afraid I did not get you...
Actually, I could not get the image written on the file I meant to. So, the code does not execute.
And I am also doing the same thing in MATLAB. I got the pixel values there using imread command. On comparing, i found that the image is being read right to left. That was also my question... does imread read the image from right to left...
Hope I am being clearer now. Please help me
|
|
|
|
|
There is a not of stuff on the web showing how to load a bitmap file, see, for instance [^].
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
I am not working on Windows Programming. In fact I have no idea about it. Still anyways, thanks for your help. It's very helpful.
I'll try to fix it from here on.
But what about my problem reading the image back after I have done manipulations on it... How do I write it back to another file?
|
|
|
|
|
Actually the problem is that when i write to the image file, nothing gets written on the image. Do I need to include the image header and all again. If yes, how will I know the address it will point to and all that.
What I have done is, in the target directory, right click and go to new -> Bitmap Image. Renamed it as 1.bmp I'm trying to write the array that contains my grayscale image to that file 1.bmp... But the code does not work. Somehow nothing gets written on it
|
|
|
|
|
And your question we need to use of your code or it doesnt work ?
Of one Essence is the human race
thus has Creation put the base
One Limb impacted is sufficient
For all Others to feel the Mace
(Saadi )
|
|
|
|
|
The code does not execute
|
|
|
|
|
|
...Since, you are trying to read a Bitmap (presumably stored on disk), I'm assuming that you are attempting to write Windows code. Your posted code example has numerous errors. You should start by reading up on the: Bitmap Storage Format, MSDN[^].
This will explain the overall data structure of a bitmap file stored on your computer. You should become familiar with the Bitmap header structure, so that you can read the bitmap file correctly. Here is the reference for the Bitmap Header Types[^]. You should read the headers first to be sure that the image is, in fact, a 24-bit bitmap type (there are numerous variations).
The preferred method is to open the bitmap file with, CreateFile. Then you can read the byte arrays in whatever way is appropriate to your applicatrion.
|
|
|
|
|
The preferred method is to open the bitmap file with, CreateFile.
I am not doing Windows Programming. I am doing a project on face recognition on C++. How do I use CreateFile on C++? Any useful links for that might be helpful
|
|
|
|
|
I'm actually building a BMP Reader in C
And I came accross your code.
I'm only in the beginning and already changed some stuff.
First when you put if(headfirst.type!=19778)
I see that you're not taking ENDIAN in account.
I made some functions to reorder the bytes.
|
|
|
|
|
iges,a usual model in 3D CAD.
I want to show it in my Dialog.
Thanks.
===========================
http://blog.csdn.net/begtostudy
MSN/email:begtostudy@gmail.com
|
|
|
|
|
Have you seen this [^]?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|