From: yao Date: Sat, 16 Feb 2013 10:41:43 +0000 (+0800) Subject: fix compiling errors on Linux X-Git-Tag: accepted/tizen/6.0/unified/20201030.111113~1314^2~1503^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9613135e8dad2a1beed03d190b5f9facf2f55f7f;p=platform%2Fupstream%2Fopencv.git fix compiling errors on Linux more operators use oclMatExpr --- diff --git a/modules/ocl/include/opencv2/ocl/matrix_operations.hpp b/modules/ocl/include/opencv2/ocl/matrix_operations.hpp index 13b19be..fcd847c 100644 --- a/modules/ocl/include/opencv2/ocl/matrix_operations.hpp +++ b/modules/ocl/include/opencv2/ocl/matrix_operations.hpp @@ -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. // // Redistribution and use in source and binary forms, with or without modification, @@ -51,23 +52,28 @@ namespace cv enum { - MAT_ADD, + MAT_ADD = 1, MAT_SUB, MAT_MUL, - MAT_DIV + MAT_DIV, + MAT_NOT, + MAT_AND, + MAT_OR, + MAT_XOR }; - class oclMatExpr + class CV_EXPORTS oclMatExpr { public: + oclMatExpr() : a(oclMat()), b(oclMat()), op(0) {} oclMatExpr(const oclMat& _a, const oclMat& _b, int _op) - : a(_a), b(_b), op(_op){} + : a(_a), b(_b), op(_op) {} operator oclMat() const; void assign(oclMat& m) const; protected: - int op; oclMat a, b; + int op; }; //////////////////////////////////////////////////////////////////////// //////////////////////////////// oclMat //////////////////////////////// @@ -255,7 +261,7 @@ namespace cv return *this; } - oclMat& oclMat::operator = (const oclMatExpr& expr) + inline oclMat& oclMat::operator = (const oclMatExpr& expr) { expr.assign(*this); return *this; diff --git a/modules/ocl/include/opencv2/ocl/ocl.hpp b/modules/ocl/include/opencv2/ocl/ocl.hpp index 83cfb5a2..57d18d1 100644 --- a/modules/ocl/include/opencv2/ocl/ocl.hpp +++ b/modules/ocl/include/opencv2/ocl/ocl.hpp @@ -153,7 +153,7 @@ namespace cv oclMat &operator = (const oclMat &m); //! assignment operator. Perfom blocking upload to device. oclMat &operator = (const Mat &m); - oclMat& operator = (const oclMatExpr& expr); + oclMat &operator = (const oclMatExpr& expr); //! pefroms blocking upload data to oclMat. void upload(const cv::Mat &m); @@ -463,10 +463,10 @@ namespace cv CV_EXPORTS void bitwise_xor(const oclMat &src1, const Scalar &s, oclMat &dst, const oclMat &mask = oclMat()); //! Logical operators - CV_EXPORTS oclMat operator ~ (const oclMat &src); - 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 oclMatExpr operator ~ (const oclMat &src); + CV_EXPORTS oclMatExpr operator | (const oclMat &src1, const oclMat &src2); + CV_EXPORTS oclMatExpr operator & (const oclMat &src1, const oclMat &src2); + CV_EXPORTS oclMatExpr operator ^ (const oclMat &src1, const oclMat &src2); //! Mathematics operators CV_EXPORTS oclMatExpr operator + (const oclMat &src1, const oclMat &src2); @@ -478,7 +478,7 @@ namespace cv //! support only CV_32FC1 type CV_EXPORTS void convolve(const oclMat &image, const oclMat &temp1, oclMat &result); - CV_EXPORTS void cvtColor(const oclMat &src, oclMat &dst, int code , int dcn = 0); + CV_EXPORTS void cvtColor(const oclMat &src, oclMat &dst, int code , int dcn = 0); //////////////////////////////// Filter Engine //////////////////////////////// diff --git a/modules/ocl/src/arithm.cpp b/modules/ocl/src/arithm.cpp index b9174e7..f98b143 100644 --- a/modules/ocl/src/arithm.cpp +++ b/modules/ocl/src/arithm.cpp @@ -2125,56 +2125,44 @@ void cv::ocl::bitwise_xor(const oclMat &src1, const Scalar &src2, oclMat &dst, c bitwise_scalar( src1, src2, dst, mask, kernelName, &arithm_bitwise_xor_scalar); } -cv::ocl::oclMat cv::ocl::operator ~ (const oclMat &src) +oclMatExpr cv::ocl::operator ~ (const oclMat &src) { - oclMat dst; - bitwise_not(src, dst); - return dst; + return oclMatExpr(src, oclMat(), MAT_NOT); } -cv::ocl::oclMat cv::ocl::operator | (const oclMat &src1, const oclMat &src2) +oclMatExpr cv::ocl::operator | (const oclMat &src1, const oclMat &src2) { - oclMat dst; - bitwise_or(src1, src2, dst); - return dst; + return oclMatExpr(src1, src2, MAT_OR); } -cv::ocl::oclMat cv::ocl::operator & (const oclMat &src1, const oclMat &src2) +oclMatExpr cv::ocl::operator & (const oclMat &src1, const oclMat &src2) { - oclMat dst; - bitwise_and(src1, src2, dst); - return dst; + return oclMatExpr(src1, src2, MAT_AND); } -cv::ocl::oclMat cv::ocl::operator ^ (const oclMat &src1, const oclMat &src2) +oclMatExpr cv::ocl::operator ^ (const oclMat &src1, const oclMat &src2) { - oclMat dst; - bitwise_xor(src1, src2, dst); - return dst; + return oclMatExpr(src1, src2, MAT_XOR); } cv::ocl::oclMatExpr cv::ocl::operator + (const oclMat &src1, const oclMat &src2) { - oclMatExpr dst(src1, src2, cv::ocl::MAT_ADD); - return dst; + return oclMatExpr(src1, src2, cv::ocl::MAT_ADD); } cv::ocl::oclMatExpr cv::ocl::operator - (const oclMat &src1, const oclMat &src2) { - oclMatExpr dst(src1, src2, cv::ocl::MAT_SUB); - return dst; + return oclMatExpr(src1, src2, cv::ocl::MAT_SUB); } cv::ocl::oclMatExpr cv::ocl::operator * (const oclMat &src1, const oclMat &src2) { - oclMatExpr dst(src1, src2, cv::ocl::MAT_MUL); - return dst; + return oclMatExpr(src1, src2, cv::ocl::MAT_MUL); } cv::ocl::oclMatExpr cv::ocl::operator / (const oclMat &src1, const oclMat &src2) { - oclMatExpr dst(src1, src2, cv::ocl::MAT_DIV); - return dst; + return oclMatExpr(src1, src2, cv::ocl::MAT_DIV); } void oclMatExpr::assign(oclMat& m) const @@ -2193,6 +2181,18 @@ void oclMatExpr::assign(oclMat& m) const case MAT_DIV: divide(a, b, m); break; + case MAT_NOT: + bitwise_not(a, m); + break; + case MAT_AND: + bitwise_and(a, b, m); + break; + case MAT_OR: + bitwise_or(a, b, m); + break; + case MAT_XOR: + bitwise_xor(a, b, m); + break; } }