ImgUtils.cpp 1.39 KB
#include "ImgUtils.h"
#include "../dvpp/VpcUtils.h"


ImgUtils::ImgUtils(/* args */)
{
}

ImgUtils::~ImgUtils()
{
}


DeviceMemory* ImgUtils::resize(DeviceMemory* memPtr, int out_width, int out_height) {
    DvppDataMemory* dvppMemPtr = dynamic_cast<DvppDataMemory*>(memPtr);
    VpcUtils* pUtiles = VpcUtils::getInstance(dvppMemPtr->getDeviceId_i()); // 初始化工具类
    if (pUtiles)
    {
        return pUtiles->resize(dvppMemPtr, out_width, out_height);
    }
    
    return nullptr;
}

DeviceMemory* ImgUtils::crop(DeviceMemory* memPtr, AreaInfo& area_info) {
    DvppDataMemory* dvppMemPtr = dynamic_cast<DvppDataMemory*>(memPtr);
    VpcUtils* pUtiles = VpcUtils::getInstance(dvppMemPtr->getDeviceId_i()); // 初始化工具类
    if (pUtiles) {
        return pUtiles->crop(dvppMemPtr, area_info);
    }
    
    return nullptr;
}

vector< DeviceMemory* > ImgUtils::crop_batch(DeviceMemory* memPtr, vector<AreaInfo>& vec_area_info) {
    vector< DeviceMemory* > vec_mem;

    DvppDataMemory* dvppMemPtr = dynamic_cast<DvppDataMemory*>(memPtr);
    VpcUtils* pUtiles = VpcUtils::getInstance(dvppMemPtr->getDeviceId_i()); // 初始化工具类
    if (pUtiles) {
        std::vector<DvppDataMemory*> vec_dvpp_mem = pUtiles->crop_batch(dvppMemPtr, vec_area_info);
        for (size_t i = 0; i < vec_dvpp_mem.size(); i++) {
            vec_mem.push_back(vec_dvpp_mem[i]);
        }
    }
    
    return vec_mem;
}