使用抠图缩放接口前,用户需准备好被抠图缩放的图片,并转换到Tensor对象中。
关键步骤说明如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
//初始化 MxBase::MxInit(); { // 读取图片 std::string imgPath = "./test.jpg"; cv::Mat imgData = cv::imread(imgPath, cv::IMREAD_UNCHANGED); std::vector<uint32_t> shape{600, 600, 3}; // 构造输入tensor MxBase::Tensor input(imgData.data, shape, MxBase::TensorDType::UINT8, -1); input.ToDvpp(0); // 设置抠图区域及缩放宽高 MxBase::Rect rect(0, 0, 320, 320); std::vector<MxBase::Rect> cropRectVec = {rect}; MxBase::Size size(480, 480); std::vector<MxBase::Size>sizeVec = {size}; // 构造输出tensor std::vector<uint32_t> dstShape = {480, 480, 3}; MxBase::Tensor dst(dstShape, MxBase::TensorDType::UINT8, -1); dst.Malloc(); dst.ToDvpp(0); std::vector<MxBase::Tensor> outputTensorVec = {dst}; // 执行抠图缩放操作 APP_ERROR ret = MxBase::CropResize(input, cropRectVec, sizeVec, outputTensorVec, MxBase::Interpolation::BILINEAR_SIMILAR_OPENCV, true); if (ret != APP_ERR_OK) { std::cout << "CropResize failed." << std::endl; } } //去初始化 MxBase::MxDeInit(); |