Ejemplo n.º 1
0
INT LoadSettings(HIDS* m_hCam, const wchar_t* settingsFile) {
	INT result = IS_SUCCESS;
	if (settingsFile != NULL && *settingsFile != '\0') {
		TRACE("Loading settings from %s\n", settingsFile);
		result = is_ParameterSet(*m_hCam, IS_PARAMETERSET_CMD_LOAD_FILE, (void*) settingsFile, NULL);
		if (result == IS_SUCCESS) {
			// realloc image mem with actual sizes and depth.
			is_FreeImageMem( *m_hCam, m_pcImageMemory, m_lMemoryId );
			GetImageSize( *m_hCam, m_nSizeX, m_nSizeY); 
			switch( is_SetColorMode( *m_hCam, IS_GET_COLOR_MODE ) )
            {
                case IS_CM_BGRA8_PACKED:
					m_nBitsPerPixel = 32;
					break;
				case IS_CM_BGR8_PACKED:
					m_nBitsPerPixel = 24;
					break;
				case IS_CM_BGR565_PACKED:
				case IS_CM_UYVY_PACKED:
					m_nBitsPerPixel = 16;
					break;
				case IS_CM_BGR5_PACKED:
					m_nBitsPerPixel = 15;
					break;
				case IS_CM_MONO8:
				case IS_CM_SENSOR_RAW8:
				default:
					m_nBitsPerPixel = 8;
					break;
            }  
		}
	}
	return result;
}
INT UEyeCamDriver::loadCamConfig(string filename) {
    if (!isConnected())
        return IS_INVALID_CAMERA_HANDLE;

    INT is_err = IS_SUCCESS;

    // Convert filename to unicode, as requested by UEye API
    const wstring filenameU(filename.begin(), filename.end());
    if ((is_err = is_ParameterSet(cam_handle_, IS_PARAMETERSET_CMD_LOAD_FILE,
                                  (void*) filenameU.c_str(), 0))
        != IS_SUCCESS) {
        std::cerr << "Could not load UEye camera '" << cam_name_
                  << "' sensor parameters file " << filename << " ("
                  << err2str(is_err) << ")" << std::endl;
        return is_err;
    } else {
        // Update the AOI and bits per pixel
        if ((is_err = is_AOI(cam_handle_, IS_AOI_IMAGE_GET_AOI,
                             (void*) &cam_aoi_, sizeof(cam_aoi_)))
            != IS_SUCCESS) {
            std::cerr
                    << "Could not retrieve Area Of Interest from UEye camera '"
                    << cam_name_ << "' (" << err2str(is_err) << ")" << std::endl;
            return is_err;
        }
        INT colorMode = is_SetColorMode(cam_handle_, IS_GET_COLOR_MODE);
        if (colorMode == IS_CM_BGR8_PACKED || colorMode == IS_CM_RGB8_PACKED) {
            bits_per_pixel_ = 24;
        } else if (colorMode == IS_CM_MONO8 || colorMode == IS_CM_SENSOR_RAW8) {
            bits_per_pixel_ = 8;
        } else {
            std::cerr
                    << "Current camera color mode is not supported by this wrapper;"
                    << "supported modes: {MONO8 | RGB8 | BAYER_RGGB8}; switching to RGB8 (24-bit)"
                    << std::endl;
            if ((is_err = setColorMode("rgb8", false)) != IS_SUCCESS)
                return is_err;
        }

        reallocateCamBuffer();

        std::cout << "Successfully loaded UEye camera '" << cam_name_
                  << "'s sensor parameter file: " << filename << std::endl;
    }

    return is_err;
}