/*******************************************************************************
* Copyright 2016-2019 Intel Corporation.
*
* This software and the related documents are Intel copyrighted materials, and
* your use of them is governed by the express license under which they were
* provided to you (License). Unless the License provides otherwise, you may not
* use, modify, copy, publish, distribute, disclose or transmit this software or
* the related documents without Intel's prior written permission.
*
* This software and the related documents are provided as is, with no express
* or implied warranties, other than those that are expressly stated in the
* License.
*******************************************************************************/
#include "iw/iw_image_transform.h"
#include "iw_owni.h"
typedef IppStatus (IPP_STDCALL *IppiResizeBorder_ptr)(const void* pSrc, IppSizeL srcStep, void* pDst, IppSizeL dstStep, IppiPointL dstOffset, IppiSizeL dstSize, IppiBorderType border, const void* pBorderValue, const IppiResizeSpec* pSpec, Ipp8u* pBuffer);
typedef IppStatus (IPP_STDCALL *IppiResize_ptr)(const void* pSrc, IppSizeL srcStep, void* pDst, IppSizeL dstStep, IppiPointL dstOffset, IppiSizeL dstSize, const IppiResizeSpec* pSpec, Ipp8u* pBuffer);
typedef IppStatus (IPP_STDCALL *IppiResizeBorder_TL_ptr)(const void* pSrc, IppSizeL srcStep, void* pDst, IppSizeL dstStep, IppiBorderType border, const void* pBorderValue, const IppiResizeSpec_LT* pSpec, Ipp8u* pBuffer);
typedef IppStatus (IPP_STDCALL *IppiResize_TL_ptr)(const void* pSrc, IppSizeL srcStep, void* pDst, IppSizeL dstStep, const IppiResizeSpec_LT* pSpec, Ipp8u* pBuffer);
struct _IwiResizeSpec
{
#if IW_ENABLE_THREADING_LAYER
IppiResizeSpec_LT *pIppSpec_TL;
IppiResize_TL_ptr ippiResize_TL;
IppiResizeBorder_TL_ptr ippiResizeBorder_TL;
#endif
IppiResizeSpec *pIppSpec;
IwiResizeParams auxParams;
IppiResize_ptr ippiResize;
IppiResizeBorder_ptr ippiResizeBorder;
OwnCastArray_ptr borderCastFun;
IwiSize srcSize;
IwiSize dstSize;
int channels;
IppDataType dataType;
IppiInterpolationType interpolation;
unsigned int initialized;
};
IW_DECL(IppStatus) llwiResize_InitAlloc(IwiSize srcSize, IwiSize dstSize, IppDataType dataType, int channels,
IppiInterpolationType interpolation, const IwiResizeParams *pAuxParams, IwiBorderType border, IwiResizeSpec *pSpec);
IW_DECL(void) llwiResize_Free(IwiResizeSpec *pSpec);
IW_DECL(IppStatus) llwiResize_ProcessWrap(const IwiImage *pSrcImage, IwiImage *pDstImage, IwiPoint dstRoiOffset, IwiBorderType border, const Ipp64f *pBorderVal, const IwiTile *pTile, const IwiResizeSpec *pSpec);
IW_DECL(IppStatus) llwiResize_Process(const void *pSrc, IppSizeL srcStep, void *pDst, IppSizeL dstStep, IppiPointL dstRoiOffset, IppiSizeL dstRoiSize,
IwiBorderType border, const Ipp64f *pBorderVal, const IwiResizeSpec *pSpec);
/* /////////////////////////////////////////////////////////////////////////////
// iwiResize
///////////////////////////////////////////////////////////////////////////// */
IW_DECL(IppStatus) iwiResize(const IwiImage *pSrcImage, IwiImage *pDstImage, IppiInterpolationType interpolation,
const IwiResizeParams *pParams, IwiBorderType border, const Ipp64f *pBorderVal, const IwiTile *pTile)
{
IppStatus status;
IwiResizeSpec spec;
IwiPoint dstRoiOffset = {0, 0};
status = owniCheckImageRead(pSrcImage);
if(status)
return status;
status = owniCheckImageWrite(pDstImage);
if(status)
return status;
if(pSrcImage->m_ptrConst == pDstImage->m_ptrConst)
return ippStsInplaceModeNotSupportedErr;
if(pSrcImage->m_dataType != pDstImage->m_dataType ||
pSrcImage->m_channels != pDstImage->m_channels)
return ippStsBadArgErr;
{
status = llwiResize_InitAlloc(pSrcImage->m_size, pDstImage->m_size, pSrcImage->m_dataType, pSrcImage->m_channels, interpolation, pParams, border, &spec);
if(status < 0)
return status;
status = llwiResize_ProcessWrap(pSrcImage, pDstImage, dstRoiOffset, border, pBorderVal, pTile, &spec);
llwiResize_Free(&spec);
}
return status;
}
IW_DECL(IppStatus) iwiResize_Free(IwiResizeSpec *pSpec)
{
if(!pSpec)
return ippStsNullPtrErr;
if(pSpec->initialized != OWN_INIT_MAGIC_NUM)
return ippStsContextMatchErr;
llwiResize_Free(pSpec);
OWN_MEM_FREE(pSpec);
return ippStsNoErr;
}
IW_DECL(IppStatus) iwiResize_InitAlloc(IwiResizeSpec **ppSpec, IwiSize srcSize, IwiSize dstSize, IppDataType dataType, int channels,
IppiInterpolationType interpolation, const IwiResizeParams *pAuxParams, IwiBorderType border)
{
IppStatus status;
IwiResizeSpec spec;
if(!ppSpec)
return ippStsNullPtrErr;
status = llwiResize_InitAlloc(srcSize, dstSize, dataType, channels, interpolation, pAuxParams, border, &spec);
if(status < 0)
return status;
*ppSpec = (IwiResizeSpec*)OWN_MEM_ALLOC(sizeof(IwiResizeSpec));
if(!*ppSpec)
return ippStsNoMemErr;
**ppSpec = spec;
return status;
}
IW_DECL(IppStatus) iwiResize_Process(const IwiResizeSpec *pSpec, const IwiImage *pSrcImage, IwiImage *pDstImage, IwiBorderType border, const Ipp64f *pBorderVal, const IwiTile *pTile)
{
IppStatus status;
IwiPoint dstRoiOffset = {0, 0};
status = owniCheckImageRead(pSrcImage);
if(status)
return status;
status = owniCheckImageWrite(pDstImage);
if(status)
return status;
if(pSrcImage->m_ptrConst == pDstImage->m_ptrConst)
return ippStsInplaceModeNotSupportedErr;
if(!pSpec)
return ippStsNullPtrErr;
if(pSpec->initialized != OWN_INIT_MAGIC_NUM)
return ippStsContextMatchErr;
if(pSpec->dataType != pSrcImage->m_dataType ||
pSpec->channels != pSrcImage->m_channels)
return ippStsBadArgErr;
if(pSpec->dataType != pDstImage->m_dataType ||
pSpec->channels != pDstImage->m_channels)
return ippStsBadArgErr;
return llwiResize_ProcessWrap(pSrcImage, pDstImage, dstRoiOffset, border, pBorderVal, pTile, pSpec);
}
IW_DECL(IppStatus) iwiResize_GetSrcRoi(const IwiResizeSpec *pSpec, IwiRoi dstRoi, IwiRoi *pSrcRoi)
{
IppStatus status;
IppiPointL srcRoiOffset = {0, 0};
IwiSize srcRoiSize = {0, 0};
IppiPointL dstRoiOffset;
IwiSize dstRoiSize;
if(!pSpec || !pSrcRoi)
return ippStsNullPtrErr;
if(pSpec->initialized != OWN_INIT_MAGIC_NUM)
return ippStsContextMatchErr;
#if IW_ENABLE_THREADING_LAYER
if(pSpec->pIppSpec_TL)
return ippStsNotSupportedModeErr;
#endif
//OWN_ROI_FIT(pSpec->dstSize, dstRoi);
dstRoiOffset.x = dstRoi.x;
dstRoiOffset.y = dstRoi.y;
dstRoiSize.width = dstRoi.width;
dstRoiSize.height = dstRoi.height;
status = ippiResizeGetSrcRoi_L(pSpec->pIppSpec, dstRoiOffset, dstRoiSize, &srcRoiOffset, &srcRoiSize);
if(status < 0)
return status;
pSrcRoi->x = srcRoiOffset.x;
pSrcRoi->y = srcRoiOffset.y;
pSrcRoi->width = srcRoiSize.width;
pSrcRoi->height = srcRoiSize.height;
return status;
}
IW_DECL(IppStatus) iwiResize_GetBorderSize(const IwiResizeSpec *pSpec, IwiBorderSize *pBorderSize)
{
IppStatus status;
IppiBorderSize borderSize;
if(!pSpec || !pBorderSize)
return ippStsNullPtrErr;
if(pSpec->initialized != OWN_INIT_MAGIC_NUM)
return ippStsContextMatchErr;
#if IW_ENABLE_THREADING_LAYER
if(pSpec->pIppSpec_TL)
status = ippiResizeGetBorderSize_LT(pSpec->pIppSpec_TL, &borderSize);
没有合适的资源?快使用搜索试试~ 我知道了~
opencv4.7+扩展库,已编译可直接使用
共3667个文件
hpp:1171个
obj:882个
lib:239个
需积分: 1 38 下载量 193 浏览量
2023-05-19
20:32:41
上传
评论 1
收藏 613.58MB RAR 举报
温馨提示
opencv4.7+扩展库,已编译可直接使用C++
资源推荐
资源详情
资源评论
收起资源包目录
opencv4.7+扩展库,已编译可直接使用 (3667个子文件)
ade-LICENSE 11KB
ade-LICENSE 11KB
ittnotify-LICENSE.BSD 1KB
ittnotify-LICENSE.BSD 1KB
iw_image_transform_resize.c 55KB
iw_image.c 49KB
iw_image_filter_morphology.c 32KB
iw_own.c 31KB
iw_image_op_copy_make_border.c 30KB
iw_image_transform_warpaffine.c 21KB
iw_image_filter_gaussian.c 20KB
iw_image_op_set.c 15KB
iw_image_op_scale.c 14KB
iw_image_filter_bilateral.c 13KB
iw_image_color_convert_all.c 12KB
iw_image_transform_mirror.c 11KB
iw_image_color_convert_rgbs.c 11KB
iw_image_filter_general.c 10KB
iw_image_filter_box.c 10KB
iw_image_op_swap_channels.c 10KB
iw_image_filter_sobel.c 10KB
iw_core.c 9KB
iw_image_op_copy.c 9KB
iw_image_filter_canny.c 9KB
iw_image_op_copy_channel.c 8KB
iw_image_filter_scharr.c 8KB
iw_image_op_copy_merge.c 7KB
iw_image_op_copy_split.c 7KB
iw_image_filter_laplacian.c 6KB
iw_image_op_set_channel.c 6KB
iw_image_transform_rotate.c 3KB
cmake.check_cache 86B
OpenCVModules-release.cmake 31KB
OpenCVModules-debug.cmake 31KB
OpenCVModules.cmake 21KB
OpenCVConfig.cmake 15KB
OpenCVConfig.cmake 15KB
OpenCVConfig.cmake 7KB
OpenCVModules.cmake 3KB
cmake_install.cmake 3KB
cmake_install.cmake 2KB
cmake_install.cmake 2KB
cmake_install.cmake 2KB
cmake_install.cmake 2KB
cmake_install.cmake 2KB
cmake_install.cmake 1KB
cmake_install.cmake 1KB
cmake_install.cmake 1KB
cmake_install.cmake 1KB
cmake_install.cmake 1KB
cmake_install.cmake 1KB
cmake_install.cmake 1KB
cmake_install.cmake 1KB
cmake_install.cmake 1KB
OpenCVModules-release.cmake 956B
OpenCVModules-debug.cmake 950B
OpenCVConfig-version.cmake 433B
OpenCVConfig-version.cmake 433B
OpenCVConfig-version.cmake 433B
CMakeSystem.cmake 395B
ffmpeg_version.cmake 362B
CTestTestfile.cmake 318B
CTestTestfile.cmake 315B
CTestTestfile.cmake 307B
CTestTestfile.cmake 303B
CTestTestfile.cmake 294B
CTestTestfile.cmake 289B
CTestTestfile.cmake 287B
CTestTestfile.cmake 285B
CTestTestfile.cmake 285B
CTestTestfile.cmake 285B
CTestTestfile.cmake 283B
CTestTestfile.cmake 281B
CTestTestfile.cmake 279B
CTestTestfile.cmake 261B
CTestTestfile.cmake 259B
manifest.cmake 57B
setup_vars_opencv4.cmd 809B
05_backend.cpp 32KB
subgraphs.cpp 28KB
execution_engine_backend.cpp 19KB
communications.cpp 18KB
communications_pass.cpp 14KB
execution_engine.cpp 11KB
md_view_tests.cpp 10KB
memory_descriptor_view.cpp 9KB
search.cpp 9KB
execution_engine.cpp 9KB
subgraphs.cpp 8KB
graph.cpp 5KB
graph.cpp 5KB
typed_graph.cpp 5KB
checkedcast_test.cpp 5KB
node.cpp 5KB
intrusive_list_tests.cpp 4KB
chain_range_tests.cpp 4KB
04_passes.cpp 4KB
topological_sort_pass.cpp 4KB
memory_accessor.cpp 4KB
memory_descriptor_ref.cpp 3KB
共 3667 条
- 1
- 2
- 3
- 4
- 5
- 6
- 37
资源评论
陨星落云
- 粉丝: 8834
- 资源: 21
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功