From: Brian G. <ge...@us...> - 2007-04-24 14:32:28
|
Update of /cvsroot/playerstage/code/player/server/drivers/camera/imageseq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8274 Modified Files: imageseq.cc Log Message: applied patch 1693778 Index: imageseq.cc =================================================================== RCS file: /cvsroot/playerstage/code/player/server/drivers/camera/imageseq/imageseq.cc,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** imageseq.cc 5 May 2006 05:43:40 -0000 1.4 --- imageseq.cc 24 Apr 2007 21:32:28 -0000 1.5 *************** *** 228,240 **** // Load image; currently forces the image to mono ! image = cvLoadImage(filename, 0); this->data.width = image->width; this->data.height = image->height; - this->data.bpp = 8; - this->data.format = PLAYER_CAMERA_FORMAT_MONO8; this->data.compression = PLAYER_CAMERA_COMPRESS_RAW; - this->data.image_count = this->data.width * this->data.height; // Check image size if (this->data.image_count > PLAYER_CAMERA_IMAGE_SIZE) --- 228,272 ---- // Load image; currently forces the image to mono ! image = cvLoadImage(filename, -1); ! if(image == NULL) ! { ! PLAYER_ERROR1("Could not load image file: %s", filename); ! return -1; ! } this->data.width = image->width; this->data.height = image->height; this->data.compression = PLAYER_CAMERA_COMPRESS_RAW; + + this->data.image_count = image->imageSize; + switch (image->depth) + { + case IPL_DEPTH_8U: + case IPL_DEPTH_8S: + if (image->nChannels == 1) + { + this->data.bpp = 8; + this->data.format = PLAYER_CAMERA_FORMAT_MONO8; + } + else if (image->nChannels == 3) + { + this->data.bpp = 24; + this->data.format = PLAYER_CAMERA_FORMAT_RGB888; + } + break; + case IPL_DEPTH_16S: + if (image->nChannels == 1) + { + this->data.bpp = 16; + this->data.format = PLAYER_CAMERA_FORMAT_MONO16; + } + break; + case IPL_DEPTH_32S: + case IPL_DEPTH_32F: + case IPL_DEPTH_64F: + default: + break; + } // Check image size if (this->data.image_count > PLAYER_CAMERA_IMAGE_SIZE) *************** *** 243,255 **** return -1; } - // Copy the pixels ! for (i = 0; i < image->height; i++) { ! src = image->imageData + i * image->widthStep; ! dst = this->data.image + i * this->data.width; ! memcpy(dst, src, this->data.width); } ! return 0; } --- 275,300 ---- return -1; } // Copy the pixels ! if (image->nChannels == 1) { ! for (i = 0; i < image->height; i++) ! { ! src = image->imageData + i * image->widthStep; ! dst = this->data.image + i * image->widthStep; ! memcpy(dst, src, this->data.width); ! } ! } ! else if (image->nChannels == 3) { ! for (int i = 0; i < image->height; i++) ! for (int j = 0; j < image->width; j++) ! { ! int index = i*image->widthStep + 3*j; ! // Convert BGR to RGB ! this->data.image[index + 0] = image->imageData[index + 2]; ! this->data.image[index + 1] = image->imageData[index + 1]; ! this->data.image[index + 2] = image->imageData[index + 0]; ! } } ! cvReleaseImage(&image); return 0; } |