fixed empty image fatal error when updating objects on ROS

This commit is contained in:
matlabbe 2016-01-19 00:03:10 -05:00
parent 3476d91bb4
commit 9525a55617
3 changed files with 23 additions and 3 deletions

View File

@ -802,8 +802,24 @@ void FindObject::updateObjects(const QList<int> & ids)
QVector<ExtractFeaturesThread*> threads;
for(int k=i; k<i+threadCounts && k<objectsList.size(); ++k)
{
threads.push_back(new ExtractFeaturesThread(detector_, extractor_, objectsList.at(k)->id(), 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::KeyPoint>(), 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<threads.size(); ++j)

View File

@ -287,6 +287,10 @@ void ObjWidget::updateData(const std::vector<cv::KeyPoint> & keypoints, const QM
{
this->setupGraphicsView();
}
else
{
this->update();
}
}
void ObjWidget::updateWords(const QMultiMap<int,int> & words)

View File

@ -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