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; } }
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; } }