CV_OUT Rect* validPixROI=0);
//! converts point coordinates from normal pixel coordinates to homogeneous coordinates ((x,y)->(x,y,1))
-CV_EXPORTS void convertPointsToHomogeneous( const InputArray& src, OutputArray dst );
+CV_EXPORTS_W void convertPointsToHomogeneous( const InputArray& src, OutputArray dst );
//! converts point coordinates from homogeneous to normal pixel coordinates ((x,y,z)->(x/z, y/z))
-CV_EXPORTS void convertPointsFromHomogeneous( const InputArray& src, OutputArray dst );
+CV_EXPORTS_W void convertPointsFromHomogeneous( const InputArray& src, OutputArray dst );
+//! for backward compatibility
+CV_EXPORTS void convertPointsHomogeneous( const InputArray& src, OutputArray dst );
+
//! the algorithm for finding fundamental matrix
enum
{
return c -= b;
}
-template<typename _Tp> static inline
-Vec<_Tp, 2>& operator *= (Vec<_Tp, 2>& a, _Tp alpha)
+template<typename _Tp, int cn> static inline
+Vec<_Tp, cn>& operator *= (Vec<_Tp, cn>& a, _Tp alpha)
{
- a[0] *= alpha; a[1] *= alpha;
+ for( int i = 0; i < cn; i++ )
+ a[i] *= alpha;
return a;
}
-template<typename _Tp> static inline
-Vec<_Tp, 3>& operator *= (Vec<_Tp, 3>& a, _Tp alpha)
+template<int cn> static inline
+Vec<float, cn>& operator *= (Vec<float, cn>& a, double alpha)
{
- a[0] *= alpha; a[1] *= alpha; a[2] *= alpha;
+ for( int i = 0; i < cn; i++ )
+ a[i] *= (float)alpha;
return a;
}
-template<typename _Tp> static inline
-Vec<_Tp, 4>& operator *= (Vec<_Tp, 4>& a, _Tp alpha)
+template<int cn> static inline
+Vec<float, cn>& operator *= (Vec<float, cn>& a, int alpha)
{
- a[0] *= alpha; a[1] *= alpha; a[2] *= alpha; a[3] *= alpha;
+ for( int i = 0; i < cn; i++ )
+ a[i] *= (float)alpha;
return a;
}
-
+
template<typename _Tp, int cn> static inline Vec<_Tp, cn>
operator * (const Vec<_Tp, cn>& a, _Tp alpha)
{
template<typename _Tp, int cn> static inline Vec<_Tp, cn>
operator * (_Tp alpha, const Vec<_Tp, cn>& a)
{
- return a * alpha;
+ Vec<_Tp, cn> c = a;
+ return c *= alpha;
}
-
+template<int cn> static inline Vec<float, cn>
+operator * (double alpha, const Vec<float, cn>& a)
+{
+ Vec<float, cn> c = a;
+ return c *= (float)alpha;
+}
+
+template<int cn> static inline Vec<float, cn>
+operator * (const Vec<float, cn>& a, double alpha)
+{
+ Vec<float, cn> c = a;
+ return c *= (float)alpha;
+}
+
+template<int cn> static inline Vec<float, cn>
+operator * (int alpha, const Vec<float, cn>& a)
+{
+ Vec<float, cn> c = a;
+ return c *= (float)alpha;
+}
+
+template<int cn> static inline Vec<float, cn>
+operator * (const Vec<float, cn>& a, int alpha)
+{
+ Vec<float, cn> c = a;
+ return c *= (float)alpha;
+}
+
template<typename _Tp> static inline Vec<_Tp, 4>
operator * (const Vec<_Tp, 4>& a, const Vec<_Tp, 4>& b)
{