Esempio n. 1
0
 void PyrUp::execute(runtime::DataProvider & provider)
 {
     switch(int(m_dataFlow))
     {
     case(MANUAL):
         {
             runtime::Id2DataPair srcInMapper(SRC);
             runtime::Id2DataPair dstInMapper(DST);
             
             provider.receiveInputData(srcInMapper && dstInMapper);
             
             const runtime::Data* srcData = 0;
             runtime::Data* dstData = 0;
             
             runtime::ReadAccess srcReadAccess;
             runtime::DataContainer inContainer = dstInMapper.data();
             runtime::WriteAccess writeAccess(inContainer);
             dstData = &writeAccess.get();
             
             if(srcInMapper.data() == inContainer)
             {
                 throw runtime::InputError(SRC, *this, "Can not operate in place.");
             }
             else
             {
                 srcReadAccess = runtime::ReadAccess(srcInMapper.data());
                 srcData = &srcReadAccess.get();
             }
             
             if(! srcData->variant().isVariant(m_srcDescription->variant()))
             {
                 throw runtime::InputError(SRC, *this, "Wrong input data variant.");
             }
             if(! dstData->variant().isVariant(m_dstDescription->variant()))
             {
                 throw runtime::InputError(DST, *this, "Wrong input data variant.");
             }
             
             const runtime::Image* srcCastedData = runtime::data_cast<runtime::Image>(srcData);
             runtime::Image * dstCastedData = runtime::data_cast<runtime::Image>(dstData);
             
             int width = 2  * srcCastedData->width();
             int height = 2 * srcCastedData->height();
             dstCastedData->initializeImage(width, height, width * srcCastedData->pixelSize(), dstCastedData->data(), srcCastedData->pixelType());
             
             cv::Mat srcCvData = cvsupport::getOpenCvMat(*srcCastedData);
             cv::Mat dstCvData = cvsupport::getOpenCvMat(*dstCastedData);
             
             cv::pyrUp(srcCvData, dstCvData);
             
             runtime::DataContainer dstOutContainer = inContainer;
             runtime::Id2DataPair dstOutMapper(DST, dstOutContainer);
             
             provider.sendOutputData(dstOutMapper);
         }
         break;
     case(ALLOCATE):
         {
             runtime::Id2DataPair srcInMapper(SRC);
             
             provider.receiveInputData(srcInMapper);
             
             const runtime::Data* srcData = 0;
             
             runtime::ReadAccess srcReadAccess;
             
             srcReadAccess = runtime::ReadAccess(srcInMapper.data());
             srcData = &srcReadAccess.get();
             
             if(! srcData->variant().isVariant(m_srcDescription->variant()))
             {
                 throw runtime::InputError(SRC, *this, "Wrong input data variant.");
             }
             
             const runtime::Image* srcCastedData = runtime::data_cast<runtime::Image>(srcData);
             
             cv::Mat srcCvData = cvsupport::getOpenCvMat(*srcCastedData);
             cv::Mat dstCvData;
             
             cv::pyrUp(srcCvData, dstCvData);
             
             runtime::Image* dstCastedData = new cvsupport::Image(dstCvData);
             runtime::DataContainer dstOutContainer = runtime::DataContainer(dstCastedData);
             runtime::Id2DataPair dstOutMapper(DST, dstOutContainer);
             
             dstCastedData->initializeImage(dstCastedData->width(), dstCastedData->height(), dstCastedData->stride(), dstCastedData->data(), srcCastedData->pixelType());
             provider.sendOutputData(dstOutMapper);
         }
         break;
     }
 }
Esempio n. 2
0
 void CornerMinEigenVal::execute(runtime::DataProvider & provider)
 {
     switch(int(m_dataFlow))
     {
     case(MANUAL):
         {
             runtime::Id2DataPair srcInMapper(INPUT_SRC);
             runtime::Id2DataPair dstInMapper(INPUT_DST);
             
             provider.receiveInputData(srcInMapper && dstInMapper);
             
             const runtime::Data* srcData = 0;
             runtime::Data* dstData = 0;
             
             runtime::ReadAccess srcReadAccess;
             runtime::DataContainer inContainer = dstInMapper.data();
             runtime::WriteAccess writeAccess(inContainer);
             dstData = &writeAccess.get();
             
             if(srcInMapper.data() == inContainer)
             {
                 throw runtime::InputError(INPUT_SRC, *this, "Can not operate in place.");
             }
             else
             {
                 srcReadAccess = runtime::ReadAccess(srcInMapper.data());
                 srcData = &srcReadAccess.get();
             }
             
             if(! srcData->variant().isVariant(m_srcDescription->variant()))
             {
                 throw runtime::InputError(INPUT_SRC, *this, "Wrong input data variant.");
             }
             if(! dstData->variant().isVariant(m_dstDescription->variant()))
             {
                 throw runtime::InputError(INPUT_DST, *this, "Wrong input data variant.");
             }
             
             const runtime::Image* srcCastedData = runtime::data_cast<runtime::Image>(srcData);
             runtime::Matrix * dstCastedData = runtime::data_cast<runtime::Matrix>(dstData);
             
             unsigned int stride = srcCastedData->cols() * runtime::Matrix::valueSize(runtime::Matrix::FLOAT_32);
             dstCastedData->initializeMatrix(srcCastedData->rows(), srcCastedData->cols(), stride, dstCastedData->data(), runtime::Matrix::FLOAT_32);
             
             cv::Mat srcCvData = cvsupport::getOpenCvMat(*srcCastedData);
             cv::Mat dstCvData = cvsupport::getOpenCvMat(*dstCastedData);
             int blockSizeCvData = int(m_blockSize);
             int ksizeCvData = int(m_ksize);
             
             cv::cornerMinEigenVal(srcCvData, dstCvData, blockSizeCvData, ksizeCvData);
             
             runtime::DataContainer dstOutContainer = inContainer;
             runtime::Id2DataPair dstOutMapper(OUTPUT_DST, dstOutContainer);
             
             provider.sendOutputData(dstOutMapper);
         }
         break;
     case(ALLOCATE):
         {
             runtime::Id2DataPair srcInMapper(INPUT_SRC);
             
             provider.receiveInputData(srcInMapper);
             
             const runtime::Data* srcData = 0;
             
             runtime::ReadAccess srcReadAccess;
             
             srcReadAccess = runtime::ReadAccess(srcInMapper.data());
             srcData = &srcReadAccess.get();
             
             if(! srcData->variant().isVariant(m_srcDescription->variant()))
             {
                 throw runtime::InputError(INPUT_SRC, *this, "Wrong input data variant.");
             }
             
             const runtime::Image* srcCastedData = runtime::data_cast<runtime::Image>(srcData);
             
             cv::Mat srcCvData = cvsupport::getOpenCvMat(*srcCastedData);
             cv::Mat dstCvData;
             int blockSizeCvData = int(m_blockSize);
             int ksizeCvData = int(m_ksize);
             
             cv::cornerMinEigenVal(srcCvData, dstCvData, blockSizeCvData, ksizeCvData);
             
             runtime::Matrix* dstCastedData = new cvsupport::Matrix(dstCvData);
             runtime::DataContainer dstOutContainer = runtime::DataContainer(dstCastedData);
             runtime::Id2DataPair dstOutMapper(OUTPUT_DST, dstOutContainer);
             
             provider.sendOutputData(dstOutMapper);
         }
         break;
     }
 }