1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| int main(void)
{
IplImage* red = cvLoadImage("C:/temp/red.bmp",1); //image 128x128
IplImage* green = cvLoadImage("C:/temp/green.bmp",1);
IplImage* blue = cvLoadImage("C:/temp/blue.bmp",1);
IplImage* mosaic = cvCreateImage(cvSize(512,128),8,3);
int nWCases=8;
int nHCases=2;
CvSize mosaicSize=cvGetSize(mosaic);
int WCase=static_cast<int>(floor(static_cast<double>(mosaicSize.width/nWCases)));
int HCase=static_cast<int>(floor(static_cast<double>(mosaicSize.height/nHCases)));
std::cout<<"largeur : "<<WCase<<std::endl;
std::cout<<"hauteur : "<<HCase<<std::endl;
if (WCase>128) WCase=128;
if (HCase>128) HCase=128;
int color=0;
for (int i=0; i<nHCases; i++)
{
for (int j=0; j<nWCases; j++)
{
cvSetImageROI(mosaic,cvRect(j*WCase,i*HCase,WCase,HCase));
switch (color%3)
{
case 0:
{
cvSetImageROI(red,cvRect(0,0,WCase,HCase));
cvCopy(red,mosaic);
cvResetImageROI(red);
}break;
case 1:
{
cvSetImageROI(green,cvRect(0,0,WCase,HCase));
cvCopy(green,mosaic);
cvResetImageROI(green);
}break;
case 2:
{
cvSetImageROI(blue,cvRect(0,0,WCase,HCase));
cvCopy(blue,mosaic);
cvResetImageROI(blue);
}break;
}
cvResetImageROI(mosaic);
color++;
}
}
cvNamedWindow("mosaic",1);
cvShowImage("mosaic",mosaic);
cvWaitKey();
} |
Partager