mirror of
https://github.com/opencv/opencv.git
synced 2025-01-18 06:03:15 +08:00
fix minor bug, minor cleaning, cv_assert with messages
This commit is contained in:
parent
69f135ec57
commit
af8a918e04
@ -61,9 +61,6 @@ namespace cv
|
||||
{
|
||||
public:
|
||||
LineWidget(const Point3f &pt1, const Point3f &pt2, const Color &color = Color::white());
|
||||
|
||||
void setLineWidth(float line_width);
|
||||
float getLineWidth();
|
||||
};
|
||||
|
||||
class CV_EXPORTS PlaneWidget : public Widget3D
|
||||
|
@ -298,7 +298,7 @@ struct cv::viz::CloudCollectionWidget::CreateCloudWidget
|
||||
}
|
||||
|
||||
vtkPolyData *data = vtkPolyData::SafeDownCast(mapper->GetInput());
|
||||
CV_Assert(data);
|
||||
CV_Assert("Cloud Widget without data" && data);
|
||||
|
||||
vtkSmartPointer<vtkAppendPolyData> appendFilter = vtkSmartPointer<vtkAppendPolyData>::New();
|
||||
appendFilter->AddInputConnection(mapper->GetInput()->GetProducerPort());
|
||||
@ -357,7 +357,7 @@ void cv::viz::CloudCollectionWidget::addCloud(InputArray _cloud, InputArray _col
|
||||
transform_filter->Update();
|
||||
|
||||
vtkLODActor *actor = vtkLODActor::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||
CV_Assert(actor);
|
||||
CV_Assert("Incompatible widget type." && actor);
|
||||
|
||||
Vec3d minmax(scalars->GetRange());
|
||||
CreateCloudWidget::createMapper(actor, transform_filter->GetOutput(), minmax);
|
||||
@ -392,7 +392,7 @@ void cv::viz::CloudCollectionWidget::addCloud(InputArray _cloud, const Color &co
|
||||
transform_filter->Update();
|
||||
|
||||
vtkLODActor *actor = vtkLODActor::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||
CV_Assert(actor);
|
||||
CV_Assert("Incompatible widget type." && actor);
|
||||
|
||||
Vec3d minmax(scalars->GetRange());
|
||||
CreateCloudWidget::createMapper(actor, transform_filter->GetOutput(), minmax);
|
||||
|
@ -152,17 +152,9 @@ void cv::viz::InteractorStyle::registerKeyboardCallback(void (*callback)(const K
|
||||
void
|
||||
cv::viz::InteractorStyle::OnKeyDown ()
|
||||
{
|
||||
if (!init_)
|
||||
{
|
||||
std::cout << "Interactor style not initialized. Please call Initialize () before continuing" << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!renderer_)
|
||||
{
|
||||
std::cout << "No renderer given! Use SetRendererCollection () before continuing." << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||
CV_Assert("Interactor style not initialized. Please call Initialize () before continuing" && init_);
|
||||
CV_Assert("No renderer given! Use SetRendererCollection () before continuing." && renderer_);
|
||||
|
||||
FindPokedRenderer (Interactor->GetEventPosition ()[0], Interactor->GetEventPosition ()[1]);
|
||||
|
||||
|
@ -27,20 +27,6 @@ cv::viz::LineWidget::LineWidget(const Point3f &pt1, const Point3f &pt2, const Co
|
||||
setColor(color);
|
||||
}
|
||||
|
||||
void cv::viz::LineWidget::setLineWidth(float line_width)
|
||||
{
|
||||
vtkActor *actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||
CV_Assert(actor);
|
||||
actor->GetProperty()->SetLineWidth(line_width);
|
||||
}
|
||||
|
||||
float cv::viz::LineWidget::getLineWidth()
|
||||
{
|
||||
vtkActor *actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||
CV_Assert(actor);
|
||||
return actor->GetProperty()->GetLineWidth();
|
||||
}
|
||||
|
||||
template<> cv::viz::LineWidget cv::viz::Widget::cast<cv::viz::LineWidget>()
|
||||
{
|
||||
Widget3D widget = this->cast<Widget3D>();
|
||||
@ -556,12 +542,12 @@ cv::viz::Text3DWidget::Text3DWidget(const String &text, const Point3f &position,
|
||||
void cv::viz::Text3DWidget::setText(const String &text)
|
||||
{
|
||||
vtkFollower *actor = vtkFollower::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||
CV_Assert(actor);
|
||||
CV_Assert("This widget does not support text." && actor);
|
||||
|
||||
// Update text source
|
||||
vtkPolyDataMapper *mapper = vtkPolyDataMapper::SafeDownCast(actor->GetMapper());
|
||||
vtkVectorText * textSource = vtkVectorText::SafeDownCast(mapper->GetInputConnection(0,0)->GetProducer());
|
||||
CV_Assert(textSource);
|
||||
CV_Assert("This widget does not support text." && textSource);
|
||||
|
||||
textSource->SetText(text.c_str());
|
||||
textSource->Update();
|
||||
@ -570,11 +556,11 @@ void cv::viz::Text3DWidget::setText(const String &text)
|
||||
cv::String cv::viz::Text3DWidget::getText() const
|
||||
{
|
||||
vtkFollower *actor = vtkFollower::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||
CV_Assert(actor);
|
||||
CV_Assert("This widget does not support text." && actor);
|
||||
|
||||
vtkPolyDataMapper *mapper = vtkPolyDataMapper::SafeDownCast(actor->GetMapper());
|
||||
vtkVectorText * textSource = vtkVectorText::SafeDownCast(mapper->GetInputConnection(0,0)->GetProducer());
|
||||
CV_Assert(textSource);
|
||||
CV_Assert("This widget does not support text." && textSource);
|
||||
|
||||
return textSource->GetText();
|
||||
}
|
||||
@ -615,14 +601,14 @@ template<> cv::viz::TextWidget cv::viz::Widget::cast<cv::viz::TextWidget>()
|
||||
void cv::viz::TextWidget::setText(const String &text)
|
||||
{
|
||||
vtkTextActor *actor = vtkTextActor::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||
CV_Assert(actor);
|
||||
CV_Assert("This widget does not support text." && actor);
|
||||
actor->SetInput(text.c_str());
|
||||
}
|
||||
|
||||
cv::String cv::viz::TextWidget::getText() const
|
||||
{
|
||||
vtkTextActor *actor = vtkTextActor::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||
CV_Assert(actor);
|
||||
CV_Assert("This widget does not support text." && actor);
|
||||
return actor->GetInput();
|
||||
}
|
||||
|
||||
@ -671,10 +657,10 @@ void cv::viz::ImageOverlayWidget::setImage(const Mat &image)
|
||||
CV_Assert(!image.empty() && image.depth() == CV_8U);
|
||||
|
||||
vtkActor2D *actor = vtkActor2D::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||
CV_Assert(actor);
|
||||
CV_Assert("This widget does not support overlay image." && actor);
|
||||
|
||||
vtkImageMapper *mapper = vtkImageMapper::SafeDownCast(actor->GetMapper());
|
||||
CV_Assert(mapper);
|
||||
CV_Assert("This widget does not support overlay image." && mapper);
|
||||
|
||||
// Create the vtk image and set its parameters based on input image
|
||||
vtkSmartPointer<vtkImageData> vtk_image = vtkSmartPointer<vtkImageData>::New();
|
||||
@ -821,7 +807,7 @@ void cv::viz::Image3DWidget::setImage(const Mat &image)
|
||||
CV_Assert(!image.empty() && image.depth() == CV_8U);
|
||||
|
||||
vtkActor *actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||
CV_Assert(actor);
|
||||
CV_Assert("This widget does not support 3D image." && actor);
|
||||
|
||||
// Create the vtk image and set its parameters based on input image
|
||||
vtkSmartPointer<vtkImageData> vtk_image = vtkSmartPointer<vtkImageData>::New();
|
||||
|
@ -74,7 +74,7 @@ struct cv::viz::Mesh3d::loadMeshImpl
|
||||
reader->Update();
|
||||
|
||||
vtkSmartPointer<vtkPolyData> poly_data = reader->GetOutput ();
|
||||
CV_Assert(poly_data);
|
||||
CV_Assert("File does not exist or file format is not supported." && poly_data);
|
||||
|
||||
vtkSmartPointer<vtkPoints> mesh_points = poly_data->GetPoints ();
|
||||
vtkIdType nr_points = mesh_points->GetNumberOfPoints ();
|
||||
|
@ -34,9 +34,6 @@ cv::viz::Viz3d::VizImpl::VizImpl (const std::string &name)
|
||||
/////////////////////////////////////////////////
|
||||
interactor_ = vtkSmartPointer <vtkRenderWindowInteractor>::Take (vtkRenderWindowInteractorFixNew ());
|
||||
|
||||
//win_->PointSmoothingOn ();
|
||||
//win_->LineSmoothingOn ();
|
||||
//win_->PolygonSmoothingOn ();
|
||||
window_->AlphaBitPlanesOff ();
|
||||
window_->PointSmoothingOff ();
|
||||
window_->LineSmoothingOff ();
|
||||
@ -46,7 +43,6 @@ cv::viz::Viz3d::VizImpl::VizImpl (const std::string &name)
|
||||
|
||||
interactor_->SetRenderWindow (window_);
|
||||
interactor_->SetInteractorStyle (style_);
|
||||
//interactor_->SetStillUpdateRate (30.0);
|
||||
interactor_->SetDesiredUpdateRate (30.0);
|
||||
|
||||
// Initialize and create timer, also create window
|
||||
@ -119,8 +115,8 @@ void cv::viz::Viz3d::VizImpl::removeWidget(const String &id)
|
||||
{
|
||||
WidgetActorMap::iterator wam_itr = widget_actor_map_->find(id);
|
||||
bool exists = wam_itr != widget_actor_map_->end();
|
||||
CV_Assert(exists);
|
||||
CV_Assert(removeActorFromRenderer (wam_itr->second));
|
||||
CV_Assert("Widget does not exist." && exists);
|
||||
CV_Assert("Widget could not be removed." && removeActorFromRenderer (wam_itr->second));
|
||||
widget_actor_map_->erase(wam_itr);
|
||||
}
|
||||
|
||||
@ -129,7 +125,7 @@ cv::viz::Widget cv::viz::Viz3d::VizImpl::getWidget(const String &id) const
|
||||
{
|
||||
WidgetActorMap::const_iterator wam_itr = widget_actor_map_->find(id);
|
||||
bool exists = wam_itr != widget_actor_map_->end();
|
||||
CV_Assert(exists);
|
||||
CV_Assert("Widget does not exist." && exists);
|
||||
|
||||
Widget widget;
|
||||
WidgetAccessor::setProp(widget, wam_itr->second);
|
||||
@ -141,10 +137,10 @@ void cv::viz::Viz3d::VizImpl::setWidgetPose(const String &id, const Affine3f &po
|
||||
{
|
||||
WidgetActorMap::iterator wam_itr = widget_actor_map_->find(id);
|
||||
bool exists = wam_itr != widget_actor_map_->end();
|
||||
CV_Assert(exists);
|
||||
CV_Assert("Widget does not exist." && exists);
|
||||
|
||||
vtkProp3D *actor = vtkProp3D::SafeDownCast(wam_itr->second);
|
||||
CV_Assert(actor);
|
||||
CV_Assert("Widget is not 3D." && actor);
|
||||
|
||||
vtkSmartPointer<vtkMatrix4x4> matrix = convertToVtkMatrix(pose.matrix);
|
||||
actor->SetUserMatrix (matrix);
|
||||
@ -156,10 +152,10 @@ void cv::viz::Viz3d::VizImpl::updateWidgetPose(const String &id, const Affine3f
|
||||
{
|
||||
WidgetActorMap::iterator wam_itr = widget_actor_map_->find(id);
|
||||
bool exists = wam_itr != widget_actor_map_->end();
|
||||
CV_Assert(exists);
|
||||
CV_Assert("Widget does not exist." && exists);
|
||||
|
||||
vtkProp3D *actor = vtkProp3D::SafeDownCast(wam_itr->second);
|
||||
CV_Assert(actor);
|
||||
CV_Assert("Widget is not 3D." && actor);
|
||||
|
||||
vtkSmartPointer<vtkMatrix4x4> matrix = actor->GetUserMatrix();
|
||||
if (!matrix)
|
||||
@ -180,10 +176,10 @@ cv::Affine3f cv::viz::Viz3d::VizImpl::getWidgetPose(const String &id) const
|
||||
{
|
||||
WidgetActorMap::const_iterator wam_itr = widget_actor_map_->find(id);
|
||||
bool exists = wam_itr != widget_actor_map_->end();
|
||||
CV_Assert(exists);
|
||||
CV_Assert("Widget does not exist." && exists);
|
||||
|
||||
vtkProp3D *actor = vtkProp3D::SafeDownCast(wam_itr->second);
|
||||
CV_Assert(actor);
|
||||
CV_Assert("Widget is not 3D." && actor);
|
||||
|
||||
vtkSmartPointer<vtkMatrix4x4> matrix = actor->GetUserMatrix();
|
||||
Matx44f matrix_cv = convertToMatx(matrix);
|
||||
@ -254,56 +250,6 @@ void cv::viz::Viz3d::VizImpl::removeAllWidgets()
|
||||
renderer_->RemoveAllViewProps();
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
bool cv::viz::Viz3d::VizImpl::removeActorFromRenderer (const vtkSmartPointer<vtkLODActor> &actor)
|
||||
{
|
||||
vtkLODActor* actor_to_remove = vtkLODActor::SafeDownCast (actor);
|
||||
|
||||
|
||||
|
||||
// Iterate over all actors in this renderer
|
||||
vtkPropCollection* actors = renderer_->GetViewProps ();
|
||||
actors->InitTraversal ();
|
||||
|
||||
vtkProp* current_actor = NULL;
|
||||
while ((current_actor = actors->GetNextProp ()) != NULL)
|
||||
{
|
||||
if (current_actor != actor_to_remove)
|
||||
continue;
|
||||
renderer_->RemoveActor (actor);
|
||||
// renderer->Render ();
|
||||
// Found the correct viewport and removed the actor
|
||||
return (true);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
bool cv::viz::Viz3d::VizImpl::removeActorFromRenderer (const vtkSmartPointer<vtkActor> &actor)
|
||||
{
|
||||
vtkActor* actor_to_remove = vtkActor::SafeDownCast (actor);
|
||||
|
||||
// Add it to all renderers
|
||||
//rens_->InitTraversal ();
|
||||
|
||||
|
||||
// Iterate over all actors in this renderer
|
||||
vtkPropCollection* actors = renderer_->GetViewProps ();
|
||||
actors->InitTraversal ();
|
||||
vtkProp* current_actor = NULL;
|
||||
while ((current_actor = actors->GetNextProp ()) != NULL)
|
||||
{
|
||||
if (current_actor != actor_to_remove)
|
||||
continue;
|
||||
renderer_->RemoveActor (actor);
|
||||
// renderer->Render ();
|
||||
// Found the correct viewport and removed the actor
|
||||
return (true);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////
|
||||
bool cv::viz::Viz3d::VizImpl::removeActorFromRenderer (const vtkSmartPointer<vtkProp> &actor)
|
||||
{
|
||||
|
@ -119,6 +119,7 @@ private:
|
||||
if (event_id == vtkCommand::ExitEvent)
|
||||
{
|
||||
viz_->stopped_ = true;
|
||||
viz_->interactor_->GetRenderWindow()->Finalize();
|
||||
viz_->interactor_->TerminateApp ();
|
||||
}
|
||||
}
|
||||
@ -142,12 +143,6 @@ private:
|
||||
|
||||
/** \brief The render window interactor style. */
|
||||
vtkSmartPointer<InteractorStyle> style_;
|
||||
|
||||
/** \brief Internal list with actor pointers and name IDs for point clouds. */
|
||||
// cv::Ptr<CloudActorMap> cloud_actor_map_;
|
||||
|
||||
/** \brief Internal list with actor pointers and name IDs for shapes. */
|
||||
// cv::Ptr<ShapeActorMap> shape_actor_map_;
|
||||
|
||||
/** \brief Internal list with actor pointers and name IDs for all widget actors */
|
||||
cv::Ptr<WidgetActorMap> widget_actor_map_;
|
||||
@ -155,13 +150,8 @@ private:
|
||||
/** \brief Boolean that holds whether or not the camera parameters were manually initialized*/
|
||||
bool camera_set_;
|
||||
|
||||
bool removeActorFromRenderer (const vtkSmartPointer<vtkLODActor> &actor);
|
||||
bool removeActorFromRenderer (const vtkSmartPointer<vtkActor> &actor);
|
||||
bool removeActorFromRenderer (const vtkSmartPointer<vtkProp> &actor);
|
||||
|
||||
//void addActorToRenderer (const vtkSmartPointer<vtkProp> &actor);
|
||||
|
||||
|
||||
/** \brief Internal method. Creates a vtk actor from a vtk polydata object.
|
||||
* \param[in] data the vtk polydata object to create an actor for
|
||||
* \param[out] actor the resultant vtk actor object
|
||||
|
@ -40,7 +40,7 @@ cv::viz::Widget cv::viz::Widget::fromPlyFile(const String &file_name)
|
||||
reader->SetFileName (file_name.c_str ());
|
||||
|
||||
vtkSmartPointer<vtkDataSet> data = reader->GetOutput();
|
||||
CV_Assert(data);
|
||||
CV_Assert("File does not exist or file format is not supported." && data);
|
||||
|
||||
vtkSmartPointer<vtkLODActor> actor = vtkSmartPointer<vtkLODActor>::New();
|
||||
|
||||
@ -77,7 +77,7 @@ cv::viz::Widget cv::viz::Widget::fromPlyFile(const String &file_name)
|
||||
void cv::viz::Widget::setRenderingProperty(int property, double value)
|
||||
{
|
||||
vtkActor *actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||
CV_Assert(actor);
|
||||
CV_Assert("Widget type is not supported." && actor);
|
||||
|
||||
switch (property)
|
||||
{
|
||||
@ -118,7 +118,7 @@ void cv::viz::Widget::setRenderingProperty(int property, double value)
|
||||
double cv::viz::Widget::getRenderingProperty(int property) const
|
||||
{
|
||||
vtkActor *actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||
CV_Assert(actor);
|
||||
CV_Assert("Widget type is not supported." && actor);
|
||||
|
||||
double value = 0.0;
|
||||
switch (property)
|
||||
@ -239,7 +239,7 @@ struct cv::viz::Widget3D::MatrixConverter
|
||||
void cv::viz::Widget3D::setPose(const Affine3f &pose)
|
||||
{
|
||||
vtkProp3D *actor = vtkProp3D::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||
CV_Assert(actor);
|
||||
CV_Assert("Widget is not 3D." && actor);
|
||||
|
||||
vtkSmartPointer<vtkMatrix4x4> matrix = convertToVtkMatrix(pose.matrix);
|
||||
actor->SetUserMatrix (matrix);
|
||||
@ -249,7 +249,7 @@ void cv::viz::Widget3D::setPose(const Affine3f &pose)
|
||||
void cv::viz::Widget3D::updatePose(const Affine3f &pose)
|
||||
{
|
||||
vtkProp3D *actor = vtkProp3D::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||
CV_Assert(actor);
|
||||
CV_Assert("Widget is not 3D." && actor);
|
||||
|
||||
vtkSmartPointer<vtkMatrix4x4> matrix = actor->GetUserMatrix();
|
||||
if (!matrix)
|
||||
@ -269,7 +269,7 @@ void cv::viz::Widget3D::updatePose(const Affine3f &pose)
|
||||
cv::Affine3f cv::viz::Widget3D::getPose() const
|
||||
{
|
||||
vtkProp3D *actor = vtkProp3D::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||
CV_Assert(actor);
|
||||
CV_Assert("Widget is not 3D." && actor);
|
||||
|
||||
vtkSmartPointer<vtkMatrix4x4> matrix = actor->GetUserMatrix();
|
||||
Matx44f matrix_cv = MatrixConverter::convertToMatx(matrix);
|
||||
@ -280,7 +280,7 @@ void cv::viz::Widget3D::setColor(const Color &color)
|
||||
{
|
||||
// Cast to actor instead of prop3d since prop3d doesn't provide getproperty
|
||||
vtkActor *actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||
CV_Assert(actor);
|
||||
CV_Assert("Widget type is not supported." && actor);
|
||||
|
||||
Color c = vtkcolor(color);
|
||||
actor->GetMapper ()->ScalarVisibilityOff ();
|
||||
@ -292,7 +292,7 @@ void cv::viz::Widget3D::setColor(const Color &color)
|
||||
template<> cv::viz::Widget3D cv::viz::Widget::cast<cv::viz::Widget3D>()
|
||||
{
|
||||
vtkProp3D *actor = vtkProp3D::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||
CV_Assert(actor);
|
||||
CV_Assert("Widget cannot be cast." && actor);
|
||||
|
||||
Widget3D widget;
|
||||
WidgetAccessor::setProp(widget, actor);
|
||||
@ -305,7 +305,7 @@ template<> cv::viz::Widget3D cv::viz::Widget::cast<cv::viz::Widget3D>()
|
||||
void cv::viz::Widget2D::setColor(const Color &color)
|
||||
{
|
||||
vtkActor2D *actor = vtkActor2D::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||
CV_Assert(actor);
|
||||
CV_Assert("Widget type is not supported." && actor);
|
||||
Color c = vtkcolor(color);
|
||||
actor->GetProperty ()->SetColor (c.val);
|
||||
actor->Modified ();
|
||||
@ -314,7 +314,7 @@ void cv::viz::Widget2D::setColor(const Color &color)
|
||||
template<> cv::viz::Widget2D cv::viz::Widget::cast<cv::viz::Widget2D>()
|
||||
{
|
||||
vtkActor2D *actor = vtkActor2D::SafeDownCast(WidgetAccessor::getProp(*this));
|
||||
CV_Assert(actor);
|
||||
CV_Assert("Widget cannot be cast." && actor);
|
||||
|
||||
Widget2D widget;
|
||||
WidgetAccessor::setProp(widget, actor);
|
||||
|
Loading…
Reference in New Issue
Block a user