diff --git a/src/utils/CropUtil.cpp b/src/utils/CropUtil.cpp index b3a6d53..d723333 100644 --- a/src/utils/CropUtil.cpp +++ b/src/utils/CropUtil.cpp @@ -46,6 +46,28 @@ int CropUtil::release(){ aclrtDestroyContext(m_ctx); } +static void adj_position(ImageData& src, uint32_t& xmin, uint32_t& ymin, uint32_t& xmax, uint32_t& ymax) { + if (xmin < 0) + { + xmin = 0; + } + + if (ymin < 0) + { + ymin = 0; + } + + if (xmax > src.width) + { + xmax = src.width; + } + + if (ymax > src.height) + { + ymax = src.height; + } +} + ImageData* CropUtil::crop(ImageData& src, uint32_t xmin, uint32_t ymin, uint32_t xmax, uint32_t ymax) { int ret = aclrtSetCurrentContext(m_ctx); if (ACL_SUCCESS != ret) @@ -53,6 +75,8 @@ ImageData* CropUtil::crop(ImageData& src, uint32_t xmin, uint32_t ymin, uint32_t return nullptr; } + adj_position(src, xmin, ymin, xmax, ymax); + int width = xmax - xmin; int height = ymax - ymin; uint32_t alignWidth = (width + 127) / 128 * 128;