add +-*/ operators to oclMat
authoryao <bitwangyaoyao@gmail.com>
Fri, 8 Feb 2013 03:41:46 +0000 (11:41 +0800)
committeryao <bitwangyaoyao@gmail.com>
Fri, 8 Feb 2013 03:41:46 +0000 (11:41 +0800)
modules/ocl/include/opencv2/ocl/ocl.hpp
modules/ocl/src/arithm.cpp
modules/ocl/src/matrix_operations.cpp

index 5e4b143..e86207d 100644 (file)
@@ -219,6 +219,11 @@ namespace cv
             oclMat operator()( Range rowRange, Range colRange ) const;
             oclMat operator()( const Rect &roi ) const;
 
+            oclMat& operator+=( const oclMat& m );
+            oclMat& operator-=( const oclMat& m );
+            oclMat& operator*=( const oclMat& m );
+            oclMat& operator/=( const oclMat& m );
+
             //! returns true if the oclMatrix data is continuous
             // (i.e. when there are no gaps between successive rows).
             // similar to CV_IS_oclMat_CONT(cvoclMat->type)
@@ -468,6 +473,12 @@ namespace cv
         CV_EXPORTS oclMat operator ^ (const oclMat &src1, const oclMat &src2);
         CV_EXPORTS void cvtColor(const oclMat &src, oclMat &dst, int code , int dcn = 0);
 
+        //! Mathematics operators
+        CV_EXPORTS oclMat operator + (const oclMat &src1, const oclMat &src2);
+        CV_EXPORTS oclMat operator - (const oclMat &src1, const oclMat &src2);
+        CV_EXPORTS oclMat operator * (const oclMat &src1, const oclMat &src2);
+        CV_EXPORTS oclMat operator / (const oclMat &src1, const oclMat &src2);
+
         //////////////////////////////// Filter Engine ////////////////////////////////
 
         /*!
index de8f434..e43cf50 100644 (file)
@@ -12,6 +12,7 @@
 //
 // Copyright (C) 2010-2012, Institute Of Software Chinese Academy Of Science, all rights reserved.
 // Copyright (C) 2010-2012, Advanced Micro Devices, Inc., all rights reserved.
+// Copyright (C) 2010-2012, Multicoreware, Inc., all rights reserved.
 // Third party copyrights are property of their respective owners.
 //
 // @Authors
@@ -2152,6 +2153,34 @@ cv::ocl::oclMat cv::ocl::operator ^ (const oclMat &src1, const oclMat &src2)
     return dst;
 }
 
+cv::ocl::oclMat cv::ocl::operator + (const oclMat &src1, const oclMat &src2)
+{
+    oclMat dst;
+    add(src1, src2, dst);
+    return dst;
+}
+
+cv::ocl::oclMat cv::ocl::operator - (const oclMat &src1, const oclMat &src2)
+{
+    oclMat dst;
+    subtract(src1, src2, dst);
+    return dst;
+}
+
+cv::ocl::oclMat cv::ocl::operator * (const oclMat &src1, const oclMat &src2)
+{
+    oclMat dst;
+    multiply(src1, src2, dst);
+    return dst;
+}
+
+cv::ocl::oclMat cv::ocl::operator / (const oclMat &src1, const oclMat &src2)
+{
+    oclMat dst;
+    divide(src1, src2, dst);
+    return dst;
+}
+
 //////////////////////////////////////////////////////////////////////////////
 /////////////////////////////// transpose ////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////
index b2b8b5f..7b90218 100644 (file)
 //
 // Copyright (C) 2010-2012, Institute Of Software Chinese Academy Of Science, all rights reserved.
 // Copyright (C) 2010-2012, Advanced Micro Devices, Inc., all rights reserved.
+// Copyright (C) 2010-2012, Multicoreware, Inc., all rights reserved.
 // Third party copyrights are property of their respective owners.
 //
 // @Authors
 //    Niko Li, newlife20080214@gmail.com
+//    Yao Wang, bitwangyaoyao@gmail.com
 //
 // Redistribution and use in source and binary forms, with or without modification,
 // are permitted provided that the following conditions are met:
@@ -1020,4 +1022,27 @@ void cv::ocl::oclMat::release()
     refcount = 0;
 }
 
+oclMat& cv::ocl::oclMat::operator+=( const oclMat& m )
+{
+    add(*this, m, *this);
+    return *this;
+}
+
+oclMat& cv::ocl::oclMat::operator-=( const oclMat& m )
+{
+    subtract(*this, m, *this);
+    return *this;
+}
+
+oclMat& cv::ocl::oclMat::operator*=( const oclMat& m )
+{
+    multiply(*this, m, *this);
+    return *this;
+}
+
+oclMat& cv::ocl::oclMat::operator/=( const oclMat& m )
+{
+    divide(*this, m, *this);
+    return *this;
+}
 #endif /* !defined (HAVE_OPENCL) */