#include <cv.h>
#include <highgui.h>
#include <stdio.h>
using namespace cv;
void *WindowHandle1;
int main()
{
IplImage *Image1;
CvSize ImageSize1 = cvSize(320, 240);
Image1 = cvCreateImage(ImageSize1, IPL_DEPTH_8U, 3);
printf("The IplImage Size is : %d\n",sizeof(IplImage));
printf("The nSize is : %d\n",Image1->nSize);
printf("The width is : %d\n",Image1->width);
printf("The height is : %d\n",Image1->height);
printf("The nChannels is : %d\n",Image1->nChannels);
printf("The depth is : %d\n",Image1->depth);
printf("The widthStep is : %d\n",Image1->widthStep);
printf("The imageSize is : %d\n",Image1->imageSize);
printf("The dataOrder is : %d\n",Image1->dataOrder);
printf("The origin is : %d\n",Image1->origin);
printf("The align is : %d\n",Image1->align);
uchar Blue[240][320]; // Blue uchar map
uchar Green[240][320]; // Green uchar map
uchar Red[240][320]; // Red uchar map
int imgH = Image1->height;
int imgW = Image1->width;
for( int i = 0 ; i < Image1->height ; ++i )
{
for( int j = 0 ; j < Image1->widthStep ; j = j+3 )
{
const int offset = i * (Image1->widthStep) + j ; // RGB offset
// i is real hight index
// j is extended width factor 3
if( i % imgH < (imgH / 2 ) &&
i % imgH >=0 &&
(j/3) % imgW < (imgW/2) &&
(j/3) % imgW >=0 )
{
Image1->imageData[ offset + 0 ]=(unsigned char)0; // for Blue
Image1->imageData[ offset + 1 ]=(unsigned char)0; // for Green
Image1->imageData[ offset + 2 ]=(unsigned char)255; // for Red
}
else if( i % imgH < (imgH / 2 ) &&
i % imgH >=0 &&
(j/3) % imgW < imgW &&
(j/3) % imgW >=(imgW/2) )
{
Image1->imageData[ offset + 0 ]=(unsigned char)237; // for Blue
Image1->imageData[ offset + 1 ]=(unsigned char)149; // for Green
Image1->imageData[ offset + 2 ]=(unsigned char)100; // for Red
}
else if( i % imgH < imgH &&
i % imgH >= (imgH / 2 ) &&
(j/3) % imgW < (imgW/2) &&
(j/3) % imgW >=0 )
{
Image1->imageData[ offset + 0 ]=(unsigned char)87; // for Blue
Image1->imageData[ offset + 1 ]=(unsigned char)139; // for Green
Image1->imageData[ offset + 2 ]=(unsigned char)46; // for Red
}else
{
Image1->imageData[ offset + 0 ]=(unsigned char)0; // for Blue
Image1->imageData[ offset + 1 ]=(unsigned char)215; // for Green
Image1->imageData[ offset + 2 ]=(unsigned char)255; // for Red
}
Blue[i][(int)j/3] = Image1->imageData[ i*Image1->widthStep + j ];
Green[i][(int)j/3] = Image1->imageData[ i*Image1->widthStep + j + 1 ];
Red[i][(int)j/3] = Image1->imageData[ i*Image1->widthStep + j + 2 ];
}//end of for j
}//end of for i
cvNamedWindow("Red",1);
cvShowImage("Red",Image1);
while( true )
{
char key = cvWaitKey(0);
if( key == 27) break;
}
cvReleaseImage(&Image1);
cvDestroyWindow("Red");
return 0;
}//end of main
openCV read write RGB value
最新推荐文章于 2022-06-09 15:23:55 发布