};
//! interpolation algorithm
-enum { INTER_NEAREST = 0, //!< nearest neighbor interpolation
- INTER_LINEAR = 1, //!< bilinear interpolation
- INTER_CUBIC = 2, //!< bicubic interpolation
- INTER_AREA = 3, //!< area-based (or super) interpolation
- INTER_LANCZOS4 = 4, //!< Lanczos interpolation over 8x8 neighborhood
-
- INTER_MAX = 7, //!< mask for interpolation codes
- WARP_INVERSE_MAP = 16
+enum { INTER_NEAREST = 0, //!< nearest neighbor interpolation
+ INTER_LINEAR = 1, //!< bilinear interpolation
+ INTER_CUBIC = 2, //!< bicubic interpolation
+ INTER_AREA = 3, //!< area-based (or super) interpolation
+ INTER_LANCZOS4 = 4, //!< Lanczos interpolation over 8x8 neighborhood
+
+ INTER_MAX = 7, //!< mask for interpolation codes
+ WARP_FILL_OUTLIERS = 8,
+ WARP_INVERSE_MAP = 16
};
enum { INTER_BITS = 5,
CV_EXPORTS_W void getRectSubPix( InputArray image, Size patchSize,
Point2f center, OutputArray patch, int patchType = -1 );
+//! computes the log polar transform
+CV_EXPORTS_W void logPolar( InputArray src, OutputArray dst,
+ Point2f center, double M, int flags );
+
+//! computes the linear polar transform
+CV_EXPORTS_W void linearPolar( InputArray src, OutputArray dst,
+ Point2f center, double maxRadius, int flags );
+
//! computes the integral image
CV_EXPORTS_W void integral( InputArray src, OutputArray sum, int sdepth = -1 );
cvRemap( src, dst, mapx, mapy, flags, cvScalarAll(0) );
}
+void cv::logPolar( InputArray _src, OutputArray _dst,
+ Point2f center, double M, int flags )
+{
+ Mat src = _src.getMat();
+ _dst.create( src.size(), src.type() );
+ CvMat c_src = src, c_dst = _dst.getMat();
+ cvLogPolar( &c_src, &c_dst, center, M, flags );
+}
/****************************************************************************************
Linear-Polar Transform
cvRemap( src, dst, mapx, mapy, flags, cvScalarAll(0) );
}
+void cv::linearPolar( InputArray _src, OutputArray _dst,
+ Point2f center, double maxRadius, int flags )
+{
+ Mat src = _src.getMat();
+ _dst.create( src.size(), src.type() );
+ CvMat c_src = src, c_dst = _dst.getMat();
+ cvLinearPolar( &c_src, &c_dst, center, maxRadius, flags );
+}
/* End of file. */
--- /dev/null
+#!/usr/bin/env python
+import cv2
+
+if __name__ == '__main__':
+ import sys
+ try:
+ fn = sys.argv[1]
+ except:
+ fn = '../cpp/fruits.jpg'
+
+ img = cv2.imread(fn)
+ if img is None:
+ print 'Failed to load image file:', fn
+ sys.exit(1)
+
+ img2 = cv2.logPolar(img, (img.shape[0]/2, img.shape[1]/2), 40, cv2.WARP_FILL_OUTLIERS)
+ img3 = cv2.linearPolar(img, (img.shape[0]/2, img.shape[1]/2), 40, cv2.WARP_FILL_OUTLIERS)
+
+ cv2.imshow('before', img)
+ cv2.imshow('logpolar', img2)
+ cv2.imshow('linearpolar', img3)
+
+ cv2.waitKey(0)