From 47e9759cf5551bb288d9d28d0c98ab8006b4cb12 Mon Sep 17 00:00:00 2001 From: Kamel Mohamed <112772763+Kamel-Mohammed@users.noreply.github.com> Date: Wed, 3 May 2023 23:01:23 +0300 Subject: [PATCH] chore: updating scene to serve the region growing --- utilities/scene.cpp | 30 ++++++++++++++++++++---------- utilities/scene.h | 8 ++++++-- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/utilities/scene.cpp b/utilities/scene.cpp index 2d0deec..00b2187 100644 --- a/utilities/scene.cpp +++ b/utilities/scene.cpp @@ -3,8 +3,9 @@ Scene::~Scene() { } -Scene::Scene() +Scene::Scene(bool multiPoints) { + this->multiPoints = multiPoints; } void Scene::setRad(double rad) @@ -30,22 +31,31 @@ QPointF Scene::getCenter() -void Scene::drawCircle() +void Scene::drawCircle(bool isFilled) { - - this->addEllipse(this->center.x()-this->rad, this->center.y()-this->rad, this->rad*2.0, this->rad*2.0, - QPen()); - + QPen pen; + if(isFilled){ + QBrush brush(Qt::red); + this->addEllipse(this->center.x()-this->rad, this->center.y()-this->rad, this->rad*2.0, this->rad*2.0, pen, brush); + }else{ + this->addEllipse(this->center.x()-this->rad, this->center.y()-this->rad, this->rad*2.0, this->rad*2.0, pen); + } + // This Line for region growing segmentation only + this->seeds.push_back(cv::Point(this->center.y(), this->center.x())); } void Scene::mousePressEvent(QGraphicsSceneMouseEvent *event) { if(!this->drawFlag){ - QPointF point = event->scenePos(); - this->center= point; - // this->drawFlag=true; - drawCircle(); + QPointF point = event->scenePos(); + this->center= point; + if(!this->multiPoints){ + this->drawFlag=true; + drawCircle(false); + }else{ + drawCircle(true); + } } } diff --git a/utilities/scene.h b/utilities/scene.h index e7bd9c2..be86e16 100644 --- a/utilities/scene.h +++ b/utilities/scene.h @@ -4,6 +4,8 @@ #include #include #include +#include +#include > @@ -12,13 +14,14 @@ class Scene : public QGraphicsScene { public: - explicit Scene(); + explicit Scene(bool multiPoints); ~Scene(); void setRad(double rad); - void drawCircle(); + void drawCircle(bool isFilled); void setDrawFlag(bool flag); double getRad(); QPointF getCenter(); + std::vector seeds; @@ -30,5 +33,6 @@ class Scene : public QGraphicsScene QPointF center; double rad; bool drawFlag=false; + bool multiPoints; }; #endif // SCENE_H