void ofxffmv::initializeWithGUID(GUID cameraGuid,int cameraWidth,int cameraHeight,int cameraLeft,int cameraTop,bool useROI,unsigned char cameraDepth,int cameraFramerate,bool isPlaying) { FlyCaptureInfoEx* tempArInfo = new FlyCaptureInfoEx[_MAX_CAMERAS_]; unsigned int camNum = 0; flycaptureBusEnumerateCamerasEx( tempArInfo, &camNum ); for (int i=0;i<camNum;i++) { if ((unsigned long)tempArInfo[i].SerialNumber == cameraGuid.Data1) index = i; } arInfo = tempArInfo[index]; flycaptureCreateContext(&context); flycaptureInitialize( context, index ); guid = cameraGuid; width = cameraWidth; height = cameraHeight; framerate = cameraFramerate; left = cameraLeft; top = cameraTop; roiMode = useROI; depth = cameraDepth; flycaptureStartCustomImage(context,0,left,top,width,height,100,FLYCAPTURE_MONO8); flycaptureGrabImage2( context, &fcImage ); width = fcImage.iCols; height = fcImage.iRows; depth = (width*height!=0) ? fcImage.iRowInc/fcImage.iRows : 0; flycaptureSetColorProcessingMethod( context,FLYCAPTURE_DISABLE); isInitialized = true; delete tempArInfo; }
// capture image // for bumblebee2 bool IEEE1394Cam::CaptureImages(unsigned char* bufferL, unsigned char*bufferR) { if (!_activated){return false;} #ifdef WIN32 FlyCaptureError fe; FlyCaptureImage flycaptureImage; // Grab an image from the camera fe = flycaptureGrabImage2( _flycapture, &flycaptureImage ); if (fe != FLYCAPTURE_OK) { return false; } if (flycaptureImage.pixelFormat != FLYCAPTURE_RAW16) { if (_ptype == PIXEL_BGR) { flycaptureInplaceRGB24toBGR24(flycaptureImage.pData, flycaptureImage.iRows*flycaptureImage.iCols*flycaptureImage.iNumImages); } for (int i=0; i<flycaptureImage.iRows; ++i){ memcpy(&bufferR[flycaptureImage.iRowInc*flycaptureImage.iNumImages*i], &flycaptureImage.pData[flycaptureImage.iRowInc*flycaptureImage.iNumImages*i], flycaptureImage.iRowInc); memcpy(&bufferL[flycaptureImage.iRowInc*(flycaptureImage.iNumImages*(i-1)+1)], &flycaptureImage.pData[flycaptureImage.iRowInc*(flycaptureImage.iNumImages*(i-1)+1)], flycaptureImage.iRowInc); } } else { // convert pixel format to RGB or BGR FlyCaptureImage rgb_image; unsigned char* buf = new unsigned char[flycaptureImage.iRows*flycaptureImage.iCols*flycaptureImage.iNumImages*4]; rgb_image.pData = buf; flycaptureSetColorProcessingMethod( _flycapture, FLYCAPTURE_EDGE_SENSING ); flycaptureConvertImage( _flycapture, &flycaptureImage, &rgb_image); // �x�C���[->BGRU unsigned char* dstR = bufferR; unsigned char* dstL = bufferL; unsigned char* src = buf; if (_ptype == PIXEL_BGR) { for (int i=0; i<rgb_image.iRows; ++i) { // BGRU->BGR // right image for (int j=0; j< flycaptureImage.iCols; ++j) { dstR[0] = src[0];//b dstR[1] = src[1];//g dstR[2] = src[2];//r dstR+=3; src+=4; } // left image for (int j=0; j< flycaptureImage.iCols; ++j) { dstL[0] = src[0];//b dstL[1] = src[1];//g dstL[2] = src[2];//r dstL+=3; src+=4; } } } else { for (int i=0; i<rgb_image.iRows; ++i) { // BGRU->RGB // right image for (int j=0; j< flycaptureImage.iCols; ++j) { dstR[0] = src[2];//r dstR[1] = src[1];//g dstR[2] = src[0];//b dstR+=3; src+=4; } // left iamge for (int j=0; j< flycaptureImage.iCols; ++j) { dstL[0] = src[2];//r dstL[1] = src[1];//g dstL[2] = src[0];//b dstL+=3; src+=4; } } } delete [] buf; } return true; #else return false; #endif //WIN32 }