Commit 98c8ecf8 authored by Andrey Morozov's avatar Andrey Morozov

modified kernel setto(), added double type, code has been improved

parent 3f5dd5f1
...@@ -61,8 +61,8 @@ namespace cv ...@@ -61,8 +61,8 @@ namespace cv
{ {
static inline int divUp(int a, int b) { return (a % b == 0) ? a/b : a/b + 1; } static inline int divUp(int a, int b) { return (a % b == 0) ? a/b : a/b + 1; }
extern "C" void set_to_without_mask (const DevMem2D& mat, const double * scalar, int depth, int channels); extern "C" void set_to_without_mask (const DevMem2D& mat, int depth, const double * scalar, int channels);
extern "C" void set_to_with_mask (const DevMem2D& mat, const double * scalar, const DevMem2D& mask, int depth, int channels); extern "C" void set_to_with_mask (const DevMem2D& mat, int depth, const double * scalar, const DevMem2D& mask, int channels);
extern "C" void convert_to(const DevMem2D& src, int sdepth, DevMem2D dst, int ddepth, size_t width, size_t height, double alpha, double beta); extern "C" void convert_to(const DevMem2D& src, int sdepth, DevMem2D dst, int ddepth, size_t width, size_t height, double alpha, double beta);
} }
......
This diff is collapsed.
...@@ -126,14 +126,14 @@ void cv::gpu::GpuMat::convertTo( GpuMat& dst, int rtype, double alpha, double be ...@@ -126,14 +126,14 @@ void cv::gpu::GpuMat::convertTo( GpuMat& dst, int rtype, double alpha, double be
const GpuMat* psrc = this; const GpuMat* psrc = this;
if( sdepth != ddepth && psrc == &dst ) if( sdepth != ddepth && psrc == &dst )
psrc = &(temp = *this); psrc = &(temp = *this);
dst.create( size(), rtype ); dst.create( size(), rtype );
impl::convert_to(*psrc, sdepth, dst, ddepth, psrc->cols * psrc->channels(), psrc->rows, alpha, beta); impl::convert_to(*psrc, sdepth, dst, ddepth, psrc->cols * psrc->channels(), psrc->rows, alpha, beta);
} }
GpuMat& GpuMat::operator = (const Scalar& s) GpuMat& GpuMat::operator = (const Scalar& s)
{ {
cv::gpu::impl::set_to_without_mask(*this, s.val, this->elemSize1(), this->channels()); cv::gpu::impl::set_to_without_mask( *this, this->depth(), s.val, this->channels());
return *this; return *this;
} }
...@@ -145,11 +145,11 @@ GpuMat& GpuMat::setTo(const Scalar& s, const GpuMat& mask) ...@@ -145,11 +145,11 @@ GpuMat& GpuMat::setTo(const Scalar& s, const GpuMat& mask)
if (mask.empty()) if (mask.empty())
{ {
cv::gpu::impl::set_to_without_mask(*this, s.val, this->elemSize1(), this->channels()); cv::gpu::impl::set_to_without_mask( *this, this->depth(), s.val, this->channels());
} }
else else
{ {
cv::gpu::impl::set_to_with_mask(*this, s.val, mask, this->elemSize1(), this->channels()); cv::gpu::impl::set_to_with_mask( *this, this->depth(), s.val, mask, this->channels());
} }
return *this; return *this;
......
...@@ -24,19 +24,6 @@ class CV_GpuMatOpSetTo : public CvTest ...@@ -24,19 +24,6 @@ class CV_GpuMatOpSetTo : public CvTest
bool compare_matrix(cv::Mat & cpumat, gpu::GpuMat & gpumat); bool compare_matrix(cv::Mat & cpumat, gpu::GpuMat & gpumat);
bool test_cv_8u_c1();
bool test_cv_8u_c2();
bool test_cv_8u_c3();
bool test_cv_8u_c4();
bool test_cv_16u_c4();
bool test_cv_32f_c1();
bool test_cv_32f_c2();
bool test_cv_32f_c3();
bool test_cv_32f_c4();
private: private:
int rows; int rows;
int cols; int cols;
...@@ -45,13 +32,13 @@ class CV_GpuMatOpSetTo : public CvTest ...@@ -45,13 +32,13 @@ class CV_GpuMatOpSetTo : public CvTest
CV_GpuMatOpSetTo::CV_GpuMatOpSetTo(): CvTest( "GpuMatOperatorSetTo", "setTo" ) CV_GpuMatOpSetTo::CV_GpuMatOpSetTo(): CvTest( "GpuMatOperatorSetTo", "setTo" )
{ {
rows = 129; rows = 256;
cols = 127; cols = 124;
s.val[0] = 128.0; s.val[0] = 127.0;
s.val[1] = 128.0; s.val[1] = 127.0;
s.val[2] = 128.0; s.val[2] = 127.0;
s.val[3] = 128.0; s.val[3] = 127.0;
//#define PRINT_MATRIX //#define PRINT_MATRIX
} }
...@@ -99,95 +86,16 @@ bool CV_GpuMatOpSetTo::compare_matrix(cv::Mat & cpumat, gpu::GpuMat & gpumat) ...@@ -99,95 +86,16 @@ bool CV_GpuMatOpSetTo::compare_matrix(cv::Mat & cpumat, gpu::GpuMat & gpumat)
} }
} }
bool CV_GpuMatOpSetTo::test_cv_8u_c1()
{
Mat cpumat(rows, cols, CV_8U, Scalar::all(0));
GpuMat gpumat(cpumat);
return compare_matrix(cpumat, gpumat);
}
bool CV_GpuMatOpSetTo::test_cv_8u_c2()
{
Mat cpumat(rows, cols, CV_8UC2, Scalar::all(0));
GpuMat gpumat(cpumat);
return compare_matrix(cpumat, gpumat);
}
bool CV_GpuMatOpSetTo::test_cv_8u_c3()
{
Mat cpumat(rows, cols, CV_8UC3, Scalar::all(0));
GpuMat gpumat(cpumat);
return compare_matrix(cpumat, gpumat);
}
bool CV_GpuMatOpSetTo::test_cv_8u_c4()
{
Mat cpumat(rows, cols, CV_8UC4, Scalar::all(0));
GpuMat gpumat(cpumat);
return compare_matrix(cpumat, gpumat);
}
bool CV_GpuMatOpSetTo::test_cv_16u_c4()
{
Mat cpumat(rows, cols, CV_16UC4, Scalar::all(0));
GpuMat gpumat(cpumat);
return compare_matrix(cpumat, gpumat);
}
bool CV_GpuMatOpSetTo::test_cv_32f_c1()
{
Mat cpumat(rows, cols, CV_32F, Scalar::all(0));
GpuMat gpumat(cpumat);
return compare_matrix(cpumat, gpumat);
}
bool CV_GpuMatOpSetTo::test_cv_32f_c2()
{
Mat cpumat(rows, cols, CV_32FC2, Scalar::all(0));
GpuMat gpumat(cpumat);
return compare_matrix(cpumat, gpumat);
}
bool CV_GpuMatOpSetTo::test_cv_32f_c3()
{
Mat cpumat(rows, cols, CV_32FC3, Scalar::all(0));
GpuMat gpumat(cpumat);
return compare_matrix(cpumat, gpumat);
}
bool CV_GpuMatOpSetTo::test_cv_32f_c4()
{
Mat cpumat(rows, cols, CV_32FC4, Scalar::all(0));
GpuMat gpumat(cpumat);
return compare_matrix(cpumat, gpumat);
}
void CV_GpuMatOpSetTo::run( int /* start_from */) void CV_GpuMatOpSetTo::run( int /* start_from */)
{ {
bool is_test_good = true; bool is_test_good = true;
is_test_good &= test_cv_8u_c1(); for (int i = 0; i < 7; i++)
is_test_good &= test_cv_8u_c2(); {
is_test_good &= test_cv_8u_c3(); Mat cpumat(rows, cols, i, Scalar::all(0));
is_test_good &= test_cv_8u_c4(); GpuMat gpumat(cpumat);
is_test_good &= compare_matrix(cpumat, gpumat);
is_test_good &= test_cv_16u_c4(); }
is_test_good &= test_cv_32f_c1();
is_test_good &= test_cv_32f_c2();
is_test_good &= test_cv_32f_c3();
is_test_good &= test_cv_32f_c4();
if (is_test_good == true) if (is_test_good == true)
ts->set_failed_test_info(CvTS::OK); ts->set_failed_test_info(CvTS::OK);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment