cxeigen.hpp
Go to the documentation of this file.
00001 /*M///////////////////////////////////////////////////////////////////////////////////////
00002 //
00003 //  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
00004 //
00005 //  By downloading, copying, installing or using the software you agree to this license.
00006 //  If you do not agree to this license, do not download, install,
00007 //  copy or use the software.
00008 //
00009 //
00010 //                          License Agreement
00011 //                For Open Source Computer Vision Library
00012 //
00013 // Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
00014 // Copyright (C) 2009, Willow Garage Inc., all rights reserved.
00015 // Third party copyrights are property of their respective owners.
00016 //
00017 // Redistribution and use in source and binary forms, with or without modification,
00018 // are permitted provided that the following conditions are met:
00019 //
00020 //   * Redistribution's of source code must retain the above copyright notice,
00021 //     this list of conditions and the following disclaimer.
00022 //
00023 //   * Redistribution's in binary form must reproduce the above copyright notice,
00024 //     this list of conditions and the following disclaimer in the documentation
00025 //     and/or other materials provided with the distribution.
00026 //
00027 //   * The name of the copyright holders may not be used to endorse or promote products
00028 //     derived from this software without specific prior written permission.
00029 //
00030 // This software is provided by the copyright holders and contributors "as is" and
00031 // any express or implied warranties, including, but not limited to, the implied
00032 // warranties of merchantability and fitness for a particular purpose are disclaimed.
00033 // In no event shall the Intel Corporation or contributors be liable for any direct,
00034 // indirect, incidental, special, exemplary, or consequential damages
00035 // (including, but not limited to, procurement of substitute goods or services;
00036 // loss of use, data, or profits; or business interruption) however caused
00037 // and on any theory of liability, whether in contract, strict liability,
00038 // or tort (including negligence or otherwise) arising in any way out of
00039 // the use of this software, even if advised of the possibility of such damage.
00040 //
00041 //M*/
00042 
00043 #ifndef __OPENCV_EIGEN_HPP__
00044 #define __OPENCV_EIGEN_HPP__
00045 
00046 #ifdef __cplusplus
00047 
00048 #include "cxcore.h"
00049 #include <Eigen/Core>
00050 
00051 namespace cv
00052 {
00053 
00054 template<typename _Tp, int _rows, int _cols, int _options, int _maxRows, int _maxCols>
00055 void eigen2cv( const Eigen::Matrix<_Tp, _rows, _cols, _options, _maxRows, _maxCols>& src,
00056                Mat& dst, bool _copyData=true )
00057 {
00058     Mat _src(src.rows(), src.cols(), DataType<_Tp>::type,
00059           (void*)src.data(), (size_t)(src.stride()*sizeof(_Tp)));
00060     if( !_copyData )
00061         dst = _src;
00062         else
00063                 _src.copyTo(dst);
00064 }
00065     
00066 template<typename _Tp, int _rows, int _cols, int _options, int _maxRows, int _maxCols>
00067 void cv2eigen( const Mat& src,
00068                Eigen::Matrix<_Tp, _rows, _cols, _options, _maxRows, _maxCols>& dst )
00069 {
00070     CV_Assert(src.rows == _rows && src.cols == _cols);
00071     Mat _dst(_rows, _cols, DataType<_Tp>::type,
00072              dst.data(), (size_t)(dst.stride()*sizeof(_Tp)));
00073     src.convertTo(_dst, _dst.type());
00074     CV_Assert(_dst.data == (uchar*)dst.data());
00075 }
00076 
00077 template<typename _Tp>
00078 void cv2eigen( const Mat& src,
00079                Eigen::Matrix<_Tp, Eigen::Dynamic, Eigen::Dynamic>& dst )
00080 {
00081     dst.resize(src.rows, src.cols);
00082     Mat _dst(src.rows, src.cols, DataType<_Tp>::type,
00083              dst.data(), (size_t)(dst.stride()*sizeof(_Tp)));
00084     src.convertTo(_dst, _dst.type());
00085     CV_Assert(_dst.data == (uchar*)dst.data());
00086 }
00087 
00088     
00089 template<typename _Tp>
00090 void cv2eigen( const Mat& src,
00091                Eigen::Matrix<_Tp, Eigen::Dynamic, 1>& dst )
00092 {
00093     CV_Assert(src.cols == 1);
00094     dst.resize(src.rows);
00095     Mat _dst(src.rows, src.cols, DataType<_Tp>::type,
00096              dst.data(), (size_t)(dst.stride()*sizeof(_Tp)));
00097     src.convertTo(_dst, _dst.type());
00098     CV_Assert(_dst.data == (uchar*)dst.data());
00099 }
00100 
00101 
00102 template<typename _Tp>
00103 void cv2eigen( const Mat& src,
00104                Eigen::Matrix<_Tp, 1, Eigen::Dynamic>& dst )
00105 {
00106     CV_Assert(src.rows == 1);
00107     dst.resize(src.cols);
00108     Mat _dst(src.rows, src.cols, DataType<_Tp>::type,
00109              (void*)dst.data(), (size_t)(dst.stride()*sizeof(_Tp)));
00110     src.convertTo(_dst, _dst.type());
00111     CV_Assert(_dst.data == (uchar*)dst.data());
00112 }                     
00113               
00114 }
00115 
00116 #endif
00117 
00118 #endif
00119 


posest
Author(s): Kurt Konolige
autogenerated on Thu Jan 2 2014 12:12:17