- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I'm porting from Ipp 7.0.6 to Ipp 8.1.0 a function that use ippiMorphOpenBorder_32f_C1R. Code doesn't compile with this error
error C2660: 'ippiMorphOpenBorder_32f_C1R' : function does not take 7 arguments.
I've find a difference from Ipp 8.1.0 documentation and function prototype in ippcv.h
Documentation states :
IppStatus ippiMorphOpenBorder_<mod>(const Ipp<datatype>* pSrc, int srcStep, Ipp<datatype>* pDst, int dstStep, IppiSize roiSize, IppiBorderType borderType, IppiMorphAdvState* pState);
Header function definition :
IPPAPI( IppStatus, ippiMorphOpenBorder_32f_C1R,(
const Ipp32f* pSrc, int srcStep, Ipp32f* pDst, int dstStep,
IppiSize roiSize, IppiBorderType borderType, Ipp32f borderValue, const IppiMorphAdvState* pMorthSpec, Ipp8u* pBuffer ))
Assuming that the header definition is right it's not clear for me which is the size of pBuffer and which function I must call to obtain this size.
Thank's in advance
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
pls look here -- you will see the example how to make the call of this function - http://software.intel.com/en-us/forums/topic/293581
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
regard to documentation - It looks like the description is not correct - we will check it. Thanks for the issue.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The example at http://software.intel.com/en-us/forums/topic/293581 seam broken ....
// I got ippStsMemAllocErr error over here.
// I am not sure about this error (error on the pMask or pState?).
stat = ippiMorphAdvInitAlloc_32f_C1R(&pState, imgSz, pMask, maskSz, anchorPt);
and probably (year 2009) refer to Ipp version before 8.1!!
The right function prototype now is :
IPPAPI( IppStatus, ippiMorphOpenBorder_32f_C1R,(
const Ipp32f* pSrc, int srcStep, Ipp32f* pDst, int dstStep,
IppiSize roiSize, IppiBorderType borderType, Ipp32f borderValue, const IppiMorphAdvState* pMorthSpec, Ipp8u* pBuffer ))
and my problem is how to calculate pBuffer size. Now I'm using ippiMorphAdvGetSize_32f_C1R but I'm not sure.
Regards
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Is there an update on this topic? I also just ran into the upgrade error listed here, and was not able to find any useful documentation on this API change. Note that I have never run into an IPP API change before .. deprecation yes, but never a change. Is this a bug or was it intentional? Note that there also seems to be problems with the #pragmas in 8.1 which identify how to link with the different libraries (static vs. dynamic, and sequential vs. threaded).
Thanks,
Peter
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi pvonkaenel.
I am so sorry about inconvinience for you. But we are trying to do IPP library as best as possible.
In one recent version of IPP libray the some new advanced mophology functions were added. For example
IPPAPI( IppStatus, ippiMorphOpenBorder_16u_C1R,(
const Ipp16u* pSrc, int srcStep, Ipp16u* pDst, int dstStep,
IppiSize roiSize, IppiBorderType borderType, Ipp16u borderValue, const IppiMorphAdvState* pMorthSpec, Ipp8u* pBuffer ))
It supports InMemory,Replicate and Const border types and allows processing images in parallel mode.
To add the same support of borders the API of already presented functions was changed too.
To call ippiMorphOpenBorder_32f_C1R please use pipeline below
{
IppStatus status;
int specSize = 0, bufferSize = 0;
IppiMorphAdvState* pState;
Ipp8u* pBuffer;
status = ippiMorphAdvGetSize_32f_C1R( roiSize, maskSize, &specSize, &bufferSize );
pState = (IppiMorphAdvState*)ippsMalloc_8u(specSize);
pBuffer = (Ipp8u*)ippsMalloc_8u(bufferSize);
status = ippiMorphAdvInit_32f_C1R( roiSize, pMask, maskSize, pState, pBuffer );
status = ippiMorphOpenBorder_32f_C1R (pSrc, srcStep, pDst, dstStep, roiSize, border, borderValue, pState, pBuffer);
return status;
}
In nearest release, the documentation will be aligned with headers.
Thank you for using IPP.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Andrey,
Thanks for the response - it does help a bit in figuring out how to change my existing call. Is it fair to say that the parameters for the new 16u_C1R call should match the functionality for the changed parameters in the 8u_C1R call I have been using?
Thanks again,
Peter
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi pvonkaenel.
For ippiMorphOpenBorder_8u_C1R and ippiMorphOpenBorder_16u_C1R uses the same pipeline as for 32f.
The difference is pMorthSpec instead of pState and borderType allowed to be one of ippBorderConst / ippBorderRepl / ippBorderInMem[Left
| Right | Top | Bottom]
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks. I've been able to change my call.
Peter
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page