paella/Code/include/Extern/Camera.hpp

83 lines
2.5 KiB
C++

////////////////////////////////////////////////////////////////////////////////
//
// Paella
// Copyright (C) 2015 - Thomas FORGIONE, Emilie JALRAS, Marion LENFANT, Thierry MALON, Amandine PAILLOUX
// Authors :
// Thomas FORGIONE
// Emilie JALRAS
// Marion LENFANT
// Thierry MALON
// Amandine PAILLOUX
// Simone GASPARINI
//
// This file is part of the project Paella
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it freely,
// subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented;
// you must not claim that you wrote the original software.
// If you use this software in a product, an acknowledgment
// in the product documentation would be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such,
// and must not be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source distribution.
////////////////////////////////////////////////////////////////////////////////
#ifndef _CAMERA_HPP_
#define _CAMERA_HPP_
#include <opencv2/core/core.hpp>
/**
* \ingroup calibration
* \brief Class that wraps the intrinsic parameters of a camera
*/
class Camera
{
public:
/**
* Default constructor
*/
Camera() {}
/**
* Initialize the camera loading the internal parameters from the given file
*
* @param[in] calibFilename the calibration file
* @return true if success
*/
bool init( std::string calibFilename );
/**
* Default destructor
*/
virtual ~Camera( ) {}
/**
* Return the OpenGL projection matrix for the camera
* @param[out] proj the OGL projection matrix (ready to be passed, ie in col major format)
* @param znear near clipping plane
* @param zfar far clipping plane
* \note using http://strawlab.org/2011/11/05/augmented-reality-with-OpenGL/
*/
void getOGLProjectionMatrix( float *proj, const float znear, const float zfar ) const;
public:
cv::Mat matK; ///< Calibration matrix, with intrinsic parameters
cv::Mat distCoeff; ///< Distortion coefficients
cv::Size imageSize; ///< Size of the image
};
#endif /* _CAMERA_HPP_ */