summaryrefslogtreecommitdiff
path: root/2005/i/robert/src/ovision/see/skittle.cc
diff options
context:
space:
mode:
Diffstat (limited to '2005/i/robert/src/ovision/see/skittle.cc')
-rw-r--r--2005/i/robert/src/ovision/see/skittle.cc20
1 files changed, 8 insertions, 12 deletions
diff --git a/2005/i/robert/src/ovision/see/skittle.cc b/2005/i/robert/src/ovision/see/skittle.cc
index 45462c1..a1b4bfd 100644
--- a/2005/i/robert/src/ovision/see/skittle.cc
+++ b/2005/i/robert/src/ovision/see/skittle.cc
@@ -27,24 +27,20 @@ Skittle::pca (Zone &zone)
{
// Agrandissement de la zone de recherche
const int grow = 30;
- int ymin = (zone.ymin - grow);
- ymin = (ymin > 0) ? ymin : 0;
- int ymax = (zone.ymax + grow);
- ymax = (ymax < img_->height_) ? ymax : img_->height_;
- int xmin = (zone.xmin - grow);
- xmin = (xmin > 0) ? xmin : 0;
- int xmax = (zone.xmax + grow);
- xmax = (xmax < img_->width_) ? xmax : img_->width_;
+ int ymin = minWithBorder (zone.ymin - grow, 0);
+ int ymax = maxWithBorder (zone.ymax + grow, img_->height_);
+ int xmin = minWithBorder (zone.xmin - grow, 0);
+ int xmax = maxWithBorder (zone.xmax + grow, img_->width_);
/// Initialisation du saut de point
int jump = oconfig_->jumpPointDist/5;
if (!jump) jump = 1;
// Parcours d'une partie des pixels de l'image
int tmpY;
std::vector<Hpoint> l;
- for (int y = zone.ymin - grow; y < zone.ymax + grow; y += jump)
+ for (int y = ymin; y < ymax; y += jump)
{
tmpY = y*img_->width_;
- for (int x=zone.xmin - grow; x < zone.xmax + grow; x += jump)
+ for (int x = xmin; x < xmax; x += jump)
if (segm_->giveColor (img_->tabData_ + ((tmpY + x) * 3), true, true) == zone.color)
{
Hpoint h (x, y);
@@ -88,8 +84,8 @@ Skittle::bend (Zone &zone)
/// Point supérieur de la quille
int upperPoint;
/// Recherche du premier et du dernier point
- int firstPoint = climb (zone.xmin + border, startY, zone.color);
- int lastPoint = climb (zone.xmax - border, startY, zone.color);
+ int firstPoint = climb (maxWithBorder (zone.xmin + border, img_->width_), startY, zone.color);
+ int lastPoint = climb (minWithBorder (zone.xmax - border, 0), startY, zone.color);
int limitPoint = firstPoint > lastPoint ? firstPoint : lastPoint;
std::cout << firstPoint << " " << lastPoint << " " << limitPoint << std::endl;
int above = 0; int below = 0;