mirror of https://github.com/opencv/opencv.git
Open Source Computer Vision Library
https://opencv.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.9 KiB
71 lines
1.9 KiB
#include "precomp.hpp" |
|
#include <iomanip> |
|
|
|
#ifdef HAVE_OPENCL |
|
|
|
using namespace cv; |
|
using namespace cv::ocl; |
|
using namespace cvtest; |
|
using namespace testing; |
|
using namespace std; |
|
extern string workdir; |
|
PARAM_TEST_CASE(MomentsTest, MatType, bool) |
|
{ |
|
int type; |
|
cv::Mat mat1; |
|
bool test_contours; |
|
|
|
virtual void SetUp() |
|
{ |
|
type = GET_PARAM(0); |
|
test_contours = GET_PARAM(1); |
|
cv::RNG &rng = TS::ptr()->get_rng(); |
|
cv::Size size(10*MWIDTH, 10*MHEIGHT); |
|
mat1 = randomMat(rng, size, type, 5, 16, false); |
|
} |
|
|
|
void Compare(Moments& cpu, Moments& gpu) |
|
{ |
|
Mat gpu_dst, cpu_dst; |
|
HuMoments(cpu, cpu_dst); |
|
HuMoments(gpu, gpu_dst); |
|
EXPECT_MAT_NEAR(gpu_dst,cpu_dst, .5); |
|
} |
|
|
|
}; |
|
|
|
|
|
TEST_P(MomentsTest, Mat) |
|
{ |
|
bool binaryImage = 0; |
|
SetUp(); |
|
|
|
for(int j = 0; j < LOOP_TIMES; j++) |
|
{ |
|
if(test_contours) |
|
{ |
|
Mat src = imread( workdir + "../cpp/pic3.png", 1 ); |
|
Mat src_gray, canny_output; |
|
cvtColor( src, src_gray, COLOR_BGR2GRAY ); |
|
vector<vector<Point> > contours; |
|
vector<Vec4i> hierarchy; |
|
Canny( src_gray, canny_output, 100, 200, 3 ); |
|
findContours( canny_output, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(0, 0) ); |
|
for( size_t i = 0; i < contours.size(); i++ ) |
|
{ |
|
Moments m = moments( contours[i], false ); |
|
Moments dm = ocl::ocl_moments( contours[i], false ); |
|
Compare(m, dm); |
|
} |
|
} |
|
cv::_InputArray _array(mat1); |
|
cv::Moments CvMom = cv::moments(_array, binaryImage); |
|
cv::Moments oclMom = cv::ocl::ocl_moments(_array, binaryImage); |
|
|
|
Compare(CvMom, oclMom); |
|
|
|
} |
|
} |
|
INSTANTIATE_TEST_CASE_P(OCL_ImgProc, MomentsTest, Combine( |
|
Values(CV_8UC1, CV_16UC1, CV_16SC1, CV_64FC1), Values(true,false))); |
|
#endif // HAVE_OPENCL
|
|
|