Let CLAHE_OCL reuse cv::CLAHE abstract class.
authorpeng xiao <hisenxpress@gmail.com>
Wed, 26 Jun 2013 02:50:51 +0000 (10:50 +0800)
committerpeng xiao <hisenxpress@gmail.com>
Wed, 26 Jun 2013 02:50:51 +0000 (10:50 +0800)
modules/ocl/include/opencv2/ocl/ocl.hpp
modules/ocl/src/imgproc.cpp

index 7395c7b..35350f0 100644 (file)
@@ -516,20 +516,8 @@ namespace cv
         CV_EXPORTS void equalizeHist(const oclMat &mat_src, oclMat &mat_dst);
         
         //! only 8UC1 is supported now
-        class CV_EXPORTS CLAHE
+        class CV_EXPORTS CLAHE : public cv::CLAHE
         {
-        public:
-            virtual void apply(const oclMat &src, oclMat &dst) = 0;
-
-            virtual void setClipLimit(double clipLimit) = 0;
-            virtual double getClipLimit() const = 0;
-
-            virtual void setTilesGridSize(Size tileGridSize) = 0;
-            virtual Size getTilesGridSize() const = 0;
-
-            virtual void collectGarbage() = 0;
-
-            virtual ~CLAHE() {}
         };
         CV_EXPORTS Ptr<cv::ocl::CLAHE> createCLAHE(double clipLimit = 40.0, Size tileGridSize = Size(8, 8));
         
index 3dbd68d..9d67cd8 100644 (file)
@@ -1598,7 +1598,7 @@ namespace cv
 
                 cv::AlgorithmInfo* info() const;
 
-                void apply(const oclMat &src, oclMat &dst);
+                void apply(cv::InputArray src, cv::OutputArray dst);
 
                 void setClipLimit(double clipLimit);
                 double getClipLimit() const;
@@ -1616,14 +1616,19 @@ namespace cv
                 oclMat srcExt_;
                 oclMat lut_;
             };
-
             CLAHE_Impl::CLAHE_Impl(double clipLimit, int tilesX, int tilesY) :
             clipLimit_(clipLimit), tilesX_(tilesX), tilesY_(tilesY)
             {
             }
 
-            void CLAHE_Impl::apply(const oclMat &src, oclMat &dst)
+            CV_INIT_ALGORITHM(CLAHE_Impl, "CLAHE_OCL",
+                obj.info()->addParam(obj, "clipLimit", obj.clipLimit_);
+                obj.info()->addParam(obj, "tilesX", obj.tilesX_);
+                obj.info()->addParam(obj, "tilesY", obj.tilesY_))
+            void CLAHE_Impl::apply(cv::InputArray src_raw, cv::OutputArray dst_raw)
             {
+                oclMat& src = getOclMatRef(src_raw);
+                oclMat& dst = getOclMatRef(dst_raw);
                 CV_Assert( src.type() == CV_8UC1 );
 
                 dst.create( src.size(), src.type() );