Пример #1
0
bool CaptureCAM_XIMEA::setProperty( int property_id, double value )
{
    int ival = (int) value;
    float fval = (float) value;

    int mvret = XI_OK;

    switch(property_id)
    {
    // OCV parameters
    case CAP_PROP_FRAME_WIDTH  : mvret = xiSetParamInt( hmv, XI_PRM_WIDTH, ival); width = ival; break;
    case CAP_PROP_FRAME_HEIGHT : mvret = xiSetParamInt( hmv, XI_PRM_HEIGHT, ival); height=ival; break;
    case CAP_PROP_FPS          : mvret = xiSetParamFloat( hmv, XI_PRM_FRAMERATE, fval); break;
    case CAP_PROP_GAIN         : mvret = xiSetParamFloat( hmv, XI_PRM_GAIN, fval); break;
    case CAP_PROP_EXPOSURE     : mvret = xiSetParamInt( hmv, XI_PRM_EXPOSURE, ival); break;
    // XIMEA camera properties
    case CAP_PROP_XI_DOWNSAMPLING  		: mvret = xiSetParamInt( hmv, XI_PRM_DOWNSAMPLING, ival); break;
    case CAP_PROP_XI_DATA_FORMAT   		: mvret = xiSetParamInt( hmv, XI_PRM_IMAGE_DATA_FORMAT, ival); break;
    case CAP_PROP_XI_OFFSET_X      		: mvret = xiSetParamInt( hmv, XI_PRM_OFFSET_X, ival); xoffset = ival; break;
    case CAP_PROP_XI_OFFSET_Y      		: mvret = xiSetParamInt( hmv, XI_PRM_OFFSET_Y, ival); yoffset = ival; break;
    case CAP_PROP_XI_TRG_SOURCE    		: xiStopAcquisition(hmv);mvret = xiSetParamInt( hmv, XI_PRM_TRG_SOURCE, ival);xiStartAcquisition(hmv); break;
    case CAP_PROP_XI_OUTPUT_DATA_BIT_DEPTH  	: xiStopAcquisition(hmv);mvret = xiSetParamInt( hmv, XI_PRM_OUTPUT_DATA_BIT_DEPTH, ival); xiStartAcquisition(hmv); break; 
    case CAP_PROP_XI_DATA_PACKING	  	: xiStopAcquisition(hmv);mvret = xiSetParamInt( hmv, XI_PRM_OUTPUT_DATA_PACKING, ival); xiStartAcquisition(hmv); break; 
    case CAP_PROP_XI_GPI_SELECTOR  		: mvret = xiSetParamInt( hmv, XI_PRM_GPI_SELECTOR, ival); break;
    case CAP_PROP_XI_TRG_SOFTWARE  		: mvret = xiSetParamInt( hmv, XI_PRM_TRG_SOURCE, 1); break;
    case CAP_PROP_XI_GPI_MODE      		: mvret = xiSetParamInt( hmv, XI_PRM_GPI_MODE, ival); break;
    case CAP_PROP_XI_GPI_LEVEL     		: mvret = xiSetParamInt( hmv, XI_PRM_GPI_LEVEL, ival); break;
    case CAP_PROP_XI_GPO_SELECTOR  		: mvret = xiSetParamInt( hmv, XI_PRM_GPO_SELECTOR, ival); break;
    case CAP_PROP_XI_GPO_MODE      		: mvret = xiSetParamInt( hmv, XI_PRM_GPO_MODE, ival); break;
    case CAP_PROP_XI_LED_SELECTOR  		: mvret = xiSetParamInt( hmv, XI_PRM_LED_SELECTOR, ival); break;
    case CAP_PROP_XI_LED_MODE      		: mvret = xiSetParamInt( hmv, XI_PRM_LED_MODE, ival); break;
    case CAP_PROP_XI_AUTO_WB       		: mvret = xiSetParamInt( hmv, XI_PRM_AUTO_WB, ival); break;
    case CAP_PROP_XI_MANUAL_WB     		: mvret = xiSetParamInt( hmv, XI_PRM_LED_MODE, ival); break;
    case CAP_PROP_XI_AEAG          		: mvret = xiSetParamInt( hmv, XI_PRM_AEAG, ival); break;
    case CAP_PROP_XI_EXP_PRIORITY  		: mvret = xiSetParamFloat( hmv, XI_PRM_EXP_PRIORITY, fval); break;
    case CAP_PROP_XI_AE_MAX_LIMIT  		: mvret = xiSetParamInt( hmv, XI_PRM_EXP_PRIORITY, ival); break;
    case CAP_PROP_XI_AG_MAX_LIMIT  		: mvret = xiSetParamFloat( hmv, XI_PRM_AG_MAX_LIMIT, fval); break;
    case CAP_PROP_XI_AEAG_LEVEL    		: mvret = xiSetParamInt( hmv, XI_PRM_AEAG_LEVEL, ival); break;
    case CAP_PROP_XI_TIMEOUT       		: timeout = ival; break;
    }

    if(mvret != XI_OK)
    {
        errMsg("Set parameter error", mvret);
        return false;
    }
    else
        return true;

}
Пример #2
0
void CaptureCAM_XIMEA::close()
{
    if(hmv)
    {
        xiStopAcquisition(hmv);
        xiCloseDevice(hmv);
        isopened=false;
    }
    hmv = NULL;
}
Пример #3
0
CameraXIMEA::~CameraXIMEA(){

    if(capturing){
        // Stop acquisition
        stat = xiStopAcquisition(camera);
        HandleResult(stat,"xiStopAcquisition");
    }

    // Close device
    xiCloseDevice(camera);
}
Пример #4
0
void CvCaptureCAM_XIMEA::close()
{
    if(frame)
        cvReleaseImage(&frame);

    if(hmv)
    {
        xiStopAcquisition(hmv);
        xiCloseDevice(hmv);
    }
    hmv = NULL;
}
Пример #5
0
void Camera::stopAcquisition() {
    if (!opened) {
        return;
    }

	running = false;

    xiStopAcquisition(device);

	running = false;
	acquisitioning = false;

	join();
}
Пример #6
0
void CaptureCAM_XIMEA::addTrigger(int timout, bool triggered)
{
    int mvret = XI_OK;
    mvret = xiStopAcquisition(hmv);
    HandleResult(mvret, "Acquisition stopped");
    isopened=false;
    if(triggered){
        // select trigger source
        mvret = xiSetParamInt(hmv, XI_PRM_TRG_SOURCE, XI_TRG_EDGE_RISING);
        HandleResult(mvret, "Error while activating external trigger source");
        // select input pin 1 mode
        mvret = xiSetParamInt(hmv, XI_PRM_GPI_SELECTOR, 1);
        HandleResult(mvret, "Error while setting input pin");
        mvret = xiSetParamInt(hmv, XI_PRM_GPI_MODE, XI_GPI_TRIGGER);
        HandleResult(mvret, "Error while setting input pin mode");
        // set digital output 1 mode
        mvret = xiSetParamInt(hmv, XI_PRM_GPO_SELECTOR, 1);
        HandleResult(mvret, "Error while setting digital ouput");
        mvret = xiSetParamInt(hmv, XI_PRM_GPO_MODE,  XI_GPO_EXPOSURE_ACTIVE);
        HandleResult(mvret, "Error while setting digital output mode");
        
        mvret = xiSetParamInt(hmv, XI_PRM_ACQ_TIMING_MODE, XI_ACQ_TIMING_MODE_FREE_RUN);
        HandleResult(mvret, "Error while setting timing mode.");

        trigger = true;
        printf("External trigger is on");
    }else{
        /* NOT WORKING IF XI_PRM_BUFFERS_QUEUE_SIZE is set to a value < 3*/
        mvret = xiSetParamInt(hmv, XI_PRM_BUFFERS_QUEUE_SIZE, 3);
        if( mvret != XI_OK)
            errMsg("Set parameter error (XI_PRM_BUFFERS_QUEUE_SIZE)", mvret);
        mvret = xiSetParamInt(hmv, XI_PRM_RECENT_FRAME, 1);
        if( mvret != XI_OK)
            errMsg("Set parameter error (XI_PRM_RECENT_FRAME)", mvret);
        mvret = xiSetParamInt(hmv, XI_PRM_TRG_SOURCE, XI_TRG_SOFTWARE);
        if( mvret != XI_OK){
            errMsg("Error while disabling external trigger source", mvret);
        }
        trigger = false;
        printf("External trigger is off");
    }
    mvret = xiStartAcquisition(hmv);
    if(mvret != XI_OK)
    {
        errMsg("StartAcquisition XI_DEVICE failed", mvret);
        close();
    }
    timeout = timout;
    isopened=true;
}
Пример #7
0
int _tmain(int argc, _TCHAR* argv[])
{
	// image buffer
	XI_IMG image;
	memset(&image,0,sizeof(image));
	image.size = sizeof(XI_IMG);

	// Sample for XIMEA API V4.05
	HANDLE xiH = NULL;
	XI_RETURN stat = XI_OK;
	
	// Retrieving a handle to the camera device 
	printf("Opening first camera...\n");
	stat = xiOpenDevice(0, &xiH);
	HandleResult(stat,"xiOpenDevice");
	
	// Setting "exposure" parameter (10ms=10000us)
	stat = xiSetParamInt(xiH, XI_PRM_EXPOSURE, 10000);
	HandleResult(stat,"xiSetParam (exposure set)");
	
	// Note:
	// The default parameters of each camera might be different in different API versions
	// In order to ensure that your application will have camera in expected state,
	// please set all parameters expected by your application to required value.
	
	printf("Starting acquisition...\n");
	stat = xiStartAcquisition(xiH);
	HandleResult(stat,"xiStartAcquisition");
	
	#define EXPECTED_IMAGES 10
	for (int images=0;images < EXPECTED_IMAGES;images++)
	{
		// getting image from camera
		stat = xiGetImage(xiH, 5000, &image);
		HandleResult(stat,"xiGetImage");
		unsigned char pixel = *(unsigned char*)image.bp;
		printf("Image %d (%dx%d) received from camera. First pixel value: %d\n", images, (int)image.width, (int)image.height, pixel);
	}
	
	printf("Stopping acquisition...\n");
	xiStopAcquisition(xiH);
	xiCloseDevice(xiH);
finish:
	printf("Done\n");
#ifdef WIN32
	Sleep(2000);
#endif
	return 0;
}
Пример #8
0
void XimeaCamera::stopAcquisition() {
    if (!opened) {
		std::cout << "- Unable to stop acquisition, open camera first" << std::endl;

        return;
    }

	if (!acquisitioning) {
		std::cout << "- Unable to stop acquisition, not started" << std::endl;

        return;
    }

    xiStopAcquisition(device);

	acquisitioning = false;
}
Пример #9
0
void CvCaptureCAM_XIMEA::close()
{
    xiStopAcquisition(hmv);
    xiCloseDevice(hmv);
    hmv = NULL;
}