Commit 1e2fb6de authored by perping's avatar perping

fix match_template and haar

parent d6e0ef27
...@@ -800,7 +800,7 @@ CvSeq *cv::ocl::OclCascadeClassifier::oclHaarDetectObjects( oclMat &gimg, CvMemS ...@@ -800,7 +800,7 @@ CvSeq *cv::ocl::OclCascadeClassifier::oclHaarDetectObjects( oclMat &gimg, CvMemS
indexy += sz.height; indexy += sz.height;
} }
if(Context::getContext()->supportsFeature(FEATURE_CL_DOUBLE)) if(gsqsum_t.depth() == CV_64F)
gsqsum_t.convertTo(gsqsum, CV_32FC1); gsqsum_t.convertTo(gsqsum, CV_32FC1);
else else
gsqsum = gsqsum_t; gsqsum = gsqsum_t;
...@@ -1294,7 +1294,7 @@ void cv::ocl::OclCascadeClassifierBuf::detectMultiScale(oclMat &gimg, CV_OUT std ...@@ -1294,7 +1294,7 @@ void cv::ocl::OclCascadeClassifierBuf::detectMultiScale(oclMat &gimg, CV_OUT std
cv::ocl::integral(resizeroi, gimgroi, gimgroisq); cv::ocl::integral(resizeroi, gimgroi, gimgroisq);
indexy += sz.height; indexy += sz.height;
} }
if(Context::getContext()->supportsFeature(FEATURE_CL_DOUBLE)) if(gsqsum_t.depth() == CV_64F)
gsqsum_t.convertTo(gsqsum, CV_32FC1); gsqsum_t.convertTo(gsqsum, CV_32FC1);
else else
gsqsum = gsqsum_t; gsqsum = gsqsum_t;
...@@ -1360,7 +1360,7 @@ void cv::ocl::OclCascadeClassifierBuf::detectMultiScale(oclMat &gimg, CV_OUT std ...@@ -1360,7 +1360,7 @@ void cv::ocl::OclCascadeClassifierBuf::detectMultiScale(oclMat &gimg, CV_OUT std
else else
{ {
cv::ocl::integral(gimg, gsum, gsqsum_t); cv::ocl::integral(gimg, gsum, gsqsum_t);
if(Context::getContext()->supportsFeature(FEATURE_CL_DOUBLE)) if(gsqsum_t.depth() == CV_64F)
gsqsum_t.convertTo(gsqsum, CV_32FC1); gsqsum_t.convertTo(gsqsum, CV_32FC1);
else else
gsqsum = gsqsum_t; gsqsum = gsqsum_t;
......
...@@ -250,7 +250,10 @@ namespace cv ...@@ -250,7 +250,10 @@ namespace cv
buf.image_sums.resize(1); buf.image_sums.resize(1);
buf.image_sqsums.resize(1); buf.image_sqsums.resize(1);
integral(image.reshape(1), buf.image_sums[0], temp); integral(image.reshape(1), buf.image_sums[0], temp);
if(temp.depth() == CV_64F)
temp.convertTo(buf.image_sqsums[0], CV_32FC1); temp.convertTo(buf.image_sqsums[0], CV_32FC1);
else
buf.image_sqsums[0] = temp;
unsigned long long templ_sqsum = (unsigned long long)sqrSum(templ.reshape(1))[0]; unsigned long long templ_sqsum = (unsigned long long)sqrSum(templ.reshape(1))[0];
Context *clCxt = image.clCxt; Context *clCxt = image.clCxt;
...@@ -416,7 +419,12 @@ namespace cv ...@@ -416,7 +419,12 @@ namespace cv
{ {
buf.image_sums.resize(1); buf.image_sums.resize(1);
buf.image_sqsums.resize(1); buf.image_sqsums.resize(1);
integral(image, buf.image_sums[0], buf.image_sqsums[0]); cv::ocl::oclMat temp;
integral(image, buf.image_sums[0], temp);
if(temp.depth() == CV_64F)
temp.convertTo(buf.image_sqsums[0], CV_32FC1);
else
buf.image_sqsums[0] = temp;
templ_sum[0] = (float)sum(templ)[0]; templ_sum[0] = (float)sum(templ)[0];
...@@ -452,10 +460,14 @@ namespace cv ...@@ -452,10 +460,14 @@ namespace cv
templ_sum *= scale; templ_sum *= scale;
buf.image_sums.resize(buf.images.size()); buf.image_sums.resize(buf.images.size());
buf.image_sqsums.resize(buf.images.size()); buf.image_sqsums.resize(buf.images.size());
cv::ocl::oclMat temp;
for(int i = 0; i < image.oclchannels(); i ++) for(int i = 0; i < image.oclchannels(); i ++)
{ {
integral(buf.images[i], buf.image_sums[i], buf.image_sqsums[i]); integral(buf.images[i], buf.image_sums[i], temp);
if(temp.depth() == CV_64F)
temp.convertTo(buf.image_sqsums[i], CV_32FC1);
else
buf.image_sqsums[i] = temp;
} }
switch(image.oclchannels()) switch(image.oclchannels())
......
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