mirror of
https://github.com/opencv/opencv.git
synced 2024-11-29 05:29:54 +08:00
fixed brocken tests by classifier loger from r9027
This commit is contained in:
parent
e4e00498a8
commit
336dcbcff7
@ -97,13 +97,15 @@ void cv::gpu::CascadeClassifier_GPU_LBP::allocateBuffers(cv::Size frame)
|
||||
Ncv32u bufSize;
|
||||
ncvSafeCall( nppiStIntegralGetSize_8u32u(roiSize, &bufSize, prop) );
|
||||
integralBuffer.create(1, bufSize, CV_8UC1);
|
||||
}
|
||||
|
||||
candidates.create(1 , frame.width >> 1, CV_32SC4);
|
||||
candidates.create(1 , frame.width >> 1, CV_32SC4);
|
||||
}
|
||||
}
|
||||
|
||||
bool cv::gpu::CascadeClassifier_GPU_LBP::empty() const { return stage_mat.empty(); }
|
||||
Size cv::gpu::CascadeClassifier_GPU_LBP::getClassifierSize() const { return NxM; }
|
||||
bool cv::gpu::CascadeClassifier_GPU_LBP::empty() const
|
||||
{
|
||||
return stage_mat.empty();
|
||||
}
|
||||
|
||||
bool cv::gpu::CascadeClassifier_GPU_LBP::load(const string& classifierAsXml)
|
||||
{
|
||||
@ -301,7 +303,6 @@ int cv::gpu::CascadeClassifier_GPU_LBP::detectMultiScale(const GpuMat& image, Gp
|
||||
else
|
||||
objects.create(1 , image.cols >> 4, CV_32SC4);
|
||||
|
||||
// GpuMat candidates(1 , defaultObjSearchNum, CV_32SC4);
|
||||
// used for debug
|
||||
// candidates.setTo(cv::Scalar::all(0));
|
||||
// objects.setTo(cv::Scalar::all(0));
|
||||
@ -314,7 +315,6 @@ int cv::gpu::CascadeClassifier_GPU_LBP::detectMultiScale(const GpuMat& image, Gp
|
||||
GpuMat dclassified(1, 1, CV_32S);
|
||||
cudaSafeCall( cudaMemcpy(dclassified.ptr(), &classified, sizeof(int), cudaMemcpyHostToDevice) );
|
||||
|
||||
//int step = 2;
|
||||
// cv::gpu::device::lbp::bindIntegral(integral);
|
||||
|
||||
Size scaledImageSize(image.cols, image.rows);
|
||||
|
@ -357,14 +357,18 @@ TEST_P(LBP_classify, Accuracy)
|
||||
{
|
||||
cv::Rect r = faces[i];
|
||||
|
||||
#if defined (LOG_CASCADE_STATISTIC)
|
||||
std::cout << r.x << " " << r.y << " " << r.width << " " << r.height << std::endl;
|
||||
#endif
|
||||
cv::rectangle(markedImage, r , CV_RGB(255, 0, 0));
|
||||
}
|
||||
|
||||
#if defined (LOG_CASCADE_STATISTIC)
|
||||
cv::imshow("Res", markedImage); cv::waitKey();
|
||||
#endif
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(GPU_ObjDetect, LBP_classify,
|
||||
INSTANTIATE_TEST_CASE_P(GPU_ObjDetect, LBP_classify,
|
||||
testing::Combine(ALL_DEVICES, testing::Values<int>(0)));
|
||||
|
||||
} // namespace
|
||||
|
@ -49,64 +49,64 @@
|
||||
|
||||
struct Logger
|
||||
{
|
||||
enum { STADIES_NUM = 20 };
|
||||
enum { STADIES_NUM = 20 };
|
||||
|
||||
int gid;
|
||||
cv::Mat mask;
|
||||
cv::Size sz0;
|
||||
int step;
|
||||
|
||||
int gid;
|
||||
cv::Mat mask;
|
||||
cv::Size sz0;
|
||||
int step;
|
||||
|
||||
Logger() : gid (0), step(2) {}
|
||||
void setImage(const cv::Mat& image)
|
||||
{
|
||||
|
||||
Logger() : gid (0), step(2) {}
|
||||
void setImage(const cv::Mat& image)
|
||||
{
|
||||
if (gid == 0)
|
||||
sz0 = image.size();
|
||||
sz0 = image.size();
|
||||
|
||||
mask.create(image.rows, image.cols * (STADIES_NUM + 1) + STADIES_NUM, CV_8UC1);
|
||||
mask = cv::Scalar(0);
|
||||
cv::Mat roi = mask(cv::Rect(cv::Point(0,0), image.size()));
|
||||
image.copyTo(roi);
|
||||
mask.create(image.rows, image.cols * (STADIES_NUM + 1) + STADIES_NUM, CV_8UC1);
|
||||
mask = cv::Scalar(0);
|
||||
cv::Mat roi = mask(cv::Rect(cv::Point(0,0), image.size()));
|
||||
image.copyTo(roi);
|
||||
|
||||
printf("%d) Size = (%d, %d)\n", gid, image.cols, image.rows);
|
||||
printf("%d) Size = (%d, %d)\n", gid, image.cols, image.rows);
|
||||
|
||||
for(int i = 0; i < STADIES_NUM; ++i)
|
||||
{
|
||||
int x = image.cols + i * (image.cols + 1);
|
||||
cv::line(mask, cv::Point(x, 0), cv::Point(x, mask.rows-1), cv::Scalar(255));
|
||||
}
|
||||
for(int i = 0; i < STADIES_NUM; ++i)
|
||||
{
|
||||
int x = image.cols + i * (image.cols + 1);
|
||||
cv::line(mask, cv::Point(x, 0), cv::Point(x, mask.rows-1), cv::Scalar(255));
|
||||
}
|
||||
|
||||
if (sz0.width/image.cols > 2 && sz0.height/image.rows > 2)
|
||||
step = 1;
|
||||
}
|
||||
if (sz0.width/image.cols > 2 && sz0.height/image.rows > 2)
|
||||
step = 1;
|
||||
}
|
||||
|
||||
void setPoint(const cv::Point& p, int passed_stadies)
|
||||
{
|
||||
int cols = mask.cols / (STADIES_NUM + 1);
|
||||
void setPoint(const cv::Point& p, int passed_stadies)
|
||||
{
|
||||
int cols = mask.cols / (STADIES_NUM + 1);
|
||||
|
||||
passed_stadies = -passed_stadies;
|
||||
passed_stadies = (passed_stadies == -1) ? STADIES_NUM : passed_stadies;
|
||||
|
||||
unsigned char* ptr = mask.ptr<unsigned char>(p.y) + cols + 1 + p.x;
|
||||
for(int i = 0; i < passed_stadies; ++i, ptr += cols + 1)
|
||||
{
|
||||
*ptr = 255;
|
||||
passed_stadies = -passed_stadies;
|
||||
passed_stadies = (passed_stadies == -1) ? STADIES_NUM : passed_stadies;
|
||||
|
||||
if (step == 2)
|
||||
{
|
||||
ptr[1] = 255;
|
||||
ptr[mask.step] = 255;
|
||||
ptr[mask.step + 1] = 255;
|
||||
}
|
||||
}
|
||||
};
|
||||
unsigned char* ptr = mask.ptr<unsigned char>(p.y) + cols + 1 + p.x;
|
||||
for(int i = 0; i < passed_stadies; ++i, ptr += cols + 1)
|
||||
{
|
||||
*ptr = 255;
|
||||
|
||||
void write()
|
||||
{
|
||||
char buf[4096];
|
||||
sprintf(buf, "%04d.png", gid++);
|
||||
cv::imwrite(buf, mask);
|
||||
}
|
||||
if (step == 2)
|
||||
{
|
||||
ptr[1] = 255;
|
||||
ptr[mask.step] = 255;
|
||||
ptr[mask.step + 1] = 255;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
void write()
|
||||
{
|
||||
char buf[4096];
|
||||
sprintf(buf, "%04d.png", gid++);
|
||||
cv::imwrite(buf, mask);
|
||||
}
|
||||
|
||||
} logger;
|
||||
|
||||
@ -978,7 +978,10 @@ struct CascadeClassifierInvoker
|
||||
double gypWeight;
|
||||
int result = classifier->runAt(evaluator, Point(x, y), gypWeight);
|
||||
|
||||
logger.setPoint(Point(x, y), result);
|
||||
#if defined (LOG_CASCADE_STATISTIC)
|
||||
|
||||
logger.setPoint(Point(x, y), result);
|
||||
#endif
|
||||
if( rejectLevels )
|
||||
{
|
||||
if( result == 1 )
|
||||
@ -1019,8 +1022,9 @@ bool CascadeClassifier::detectSingleScale( const Mat& image, int stripCount, Siz
|
||||
if( !featureEvaluator->setImage( image, data.origWinSize ) )
|
||||
return false;
|
||||
|
||||
#if defined (LOG_CASCADE_STATISTIC)
|
||||
logger.setImage(image);
|
||||
|
||||
#endif
|
||||
|
||||
Mat currentMask;
|
||||
if (!maskGenerator.empty()) {
|
||||
@ -1044,8 +1048,11 @@ bool CascadeClassifier::detectSingleScale( const Mat& image, int stripCount, Siz
|
||||
}
|
||||
candidates.insert( candidates.end(), concurrentCandidates.begin(), concurrentCandidates.end() );
|
||||
|
||||
logger.write();
|
||||
return true;
|
||||
#if defined (LOG_CASCADE_STATISTIC)
|
||||
logger.write();
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CascadeClassifier::isOldFormatCascade() const
|
||||
|
Loading…
Reference in New Issue
Block a user