From 9525a556179551d2727cf091f318ef9bb4dbf0ad Mon Sep 17 00:00:00 2001 From: matlabbe Date: Tue, 19 Jan 2016 00:03:10 -0500 Subject: [PATCH] fixed empty image fatal error when updating objects on ROS --- src/FindObject.cpp | 20 ++++++++++++++++++-- src/ObjWidget.cpp | 4 ++++ src/ros/FindObjectROS.cpp | 2 +- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/FindObject.cpp b/src/FindObject.cpp index 71c1c296..42f048c1 100644 --- a/src/FindObject.cpp +++ b/src/FindObject.cpp @@ -802,8 +802,24 @@ void FindObject::updateObjects(const QList & ids) QVector threads; for(int k=i; kid(), objectsList.at(k)->image())); - threads.back()->start(); + if(!objectsList.at(k)->image().empty()) + { + threads.push_back(new ExtractFeaturesThread(detector_, extractor_, objectsList.at(k)->id(), objectsList.at(k)->image())); + threads.back()->start(); + } + else + { + objects_.value(objectsList.at(k)->id())->setData(std::vector(), cv::Mat()); + if(keepImagesInRAM_) + { + UERROR("Empty image detected for object %d!? No features can be detected.", objectsList.at(k)->id()); + + } + else + { + UWARN("Empty image detected for object %d! No features can be detected. Note that images are in not kept in RAM.", objectsList.at(k)->id()); + } + } } for(int j=0; j & keypoints, const QM { this->setupGraphicsView(); } + else + { + this->update(); + } } void ObjWidget::updateWords(const QMultiMap & words) diff --git a/src/ros/FindObjectROS.cpp b/src/ros/FindObjectROS.cpp index 36677405..22e2a386 100644 --- a/src/ros/FindObjectROS.cpp +++ b/src/ros/FindObjectROS.cpp @@ -35,7 +35,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. using namespace find_object; FindObjectROS::FindObjectROS(const std::string & objFramePrefix, QObject * parent) : - FindObject(parent), + FindObject(true, parent), objFramePrefix_("object") { ros::NodeHandle pnh("~"); // public