From 2d63f60d435d7a7db0b79479b68c8051216ab8f6 Mon Sep 17 00:00:00 2001 From: Anatoly Baksheev Date: Sat, 30 Nov 2013 17:57:53 +0400 Subject: [PATCH] minor changes, opencv cross-branch code --- modules/viz/include/opencv2/viz/viz3d.hpp | 1 + modules/viz/include/opencv2/viz/widgets.hpp | 2 +- modules/viz/src/cloud_widgets.cpp | 12 ++++---- modules/viz/src/interactor_style.cpp | 47 +++++++---------------------- 4 files changed, 19 insertions(+), 43 deletions(-) diff --git a/modules/viz/include/opencv2/viz/viz3d.hpp b/modules/viz/include/opencv2/viz/viz3d.hpp index f19709e..f572059 100644 --- a/modules/viz/include/opencv2/viz/viz3d.hpp +++ b/modules/viz/include/opencv2/viz/viz3d.hpp @@ -64,6 +64,7 @@ namespace cv class CV_EXPORTS Viz3d { public: + typedef cv::viz::Color Color; typedef void (*KeyboardCallback)(const KeyboardEvent&, void*); typedef void (*MouseCallback)(const MouseEvent&, void*); diff --git a/modules/viz/include/opencv2/viz/widgets.hpp b/modules/viz/include/opencv2/viz/widgets.hpp index 07b3358..f333c1d 100644 --- a/modules/viz/include/opencv2/viz/widgets.hpp +++ b/modules/viz/include/opencv2/viz/widgets.hpp @@ -219,7 +219,7 @@ namespace cv class CV_EXPORTS WText : public Widget2D { public: - WText(const String &text, const Point2i &pos, int font_size = 10, const Color &color = Color::white()); + WText(const String &text, const Point2i &pos, int font_size = 20, const Color &color = Color::white()); void setText(const String &text); String getText() const; diff --git a/modules/viz/src/cloud_widgets.cpp b/modules/viz/src/cloud_widgets.cpp index ab4d0c3..0f36ef9 100644 --- a/modules/viz/src/cloud_widgets.cpp +++ b/modules/viz/src/cloud_widgets.cpp @@ -124,7 +124,7 @@ struct cv::viz::WCloud::CreateCloudWidget cells->SetNumberOfTuples(nr_points); vtkIdType *cell = cells->GetPointer(0); // Fill it with 1s - std::fill_n(cell, nr_points * 2, 1); + std::fill(cell, cell + nr_points * 2, 1); cell++; for (vtkIdType i = 0; i < nr_points; ++i, cell += 2) *cell = i; @@ -155,8 +155,8 @@ cv::viz::WCloud::WCloud(InputArray _cloud, InputArray _colors) if (cloud.isContinuous() && colors.isContinuous()) { - cloud.reshape(cloud.channels(), 1); - colors.reshape(colors.channels(), 1); + cloud = cloud.reshape(cloud.channels(), 1); + colors = colors.reshape(colors.channels(), 1); } vtkIdType nr_points; @@ -307,7 +307,7 @@ struct cv::viz::WCloudCollection::CreateCloudWidget cells->SetNumberOfTuples(nr_points); vtkIdType *cell = cells->GetPointer(0); // Fill it with 1s - std::fill_n(cell, nr_points * 2, 1); + std::fill(cell, cell + nr_points * 2, 1); cell++; for (vtkIdType i = 0; i < nr_points; ++i, cell += 2) *cell = i; @@ -392,8 +392,8 @@ void cv::viz::WCloudCollection::addCloud(InputArray _cloud, InputArray _colors, if (cloud.isContinuous() && colors.isContinuous()) { - cloud.reshape(cloud.channels(), 1); - colors.reshape(colors.channels(), 1); + cloud = cloud.reshape(cloud.channels(), 1); + colors = colors.reshape(colors.channels(), 1); } vtkIdType nr_points; diff --git a/modules/viz/src/interactor_style.cpp b/modules/viz/src/interactor_style.cpp index ccf188d..78f2ac6 100644 --- a/modules/viz/src/interactor_style.cpp +++ b/modules/viz/src/interactor_style.cpp @@ -236,7 +236,7 @@ cv::viz::InteractorStyle::OnKeyDown() "\n" " j, J : take a .PNG snapshot of the current window view\n" " c, C : display current camera/window parameters\n" - " f, F : fly to point mode\n" + " f, F : fly to point mode, hold the key and move mouse where to fly\n" "\n" " e, E : exit the interactor\n" " q, Q : stop and call VTK's TerminateApp\n" @@ -271,28 +271,8 @@ cv::viz::InteractorStyle::OnKeyDown() { unsigned int t = static_cast(time(0)); String png_file = cv::format("screenshot-%d.png", t); - String cam_file = cv::format("screenshot-%d.cam", t); - - vtkSmartPointer cam = Interactor->GetRenderWindow()->GetRenderers()->GetFirstRenderer()->GetActiveCamera(); - Vec2d clip; - Vec3d focal, pos, view; - cam->GetClippingRange(clip.val); - cam->GetFocalPoint(focal.val); - cam->GetPosition(pos.val); - cam->GetViewUp(view.val); - Vec2i win_pos(Interactor->GetRenderWindow()->GetPosition()); - Vec2i win_size(Interactor->GetRenderWindow()->GetSize()); - double angle = cam->GetViewAngle() / 180.0 * CV_PI; - - String data = cv::format("%f,%f/%f,%f,%f/%f,%f,%f/%f,%f,%f/%f/%d,%d/%d,%d", clip[0],clip[1], focal[0],focal[1],focal[2], - pos[0],pos[1],pos[2], view[0],view[1], view[2], angle , win_size[0],win_size[1], win_pos[0], win_pos[1]); - saveScreenshot(png_file); - ofstream ofs_cam(cam_file.c_str()); - ofs_cam << data.c_str() << endl; - ofs_cam.close(); - - cout << "Screenshot (" << png_file.c_str() << ") and camera information (" << cam_file.c_str() << ") successfully captured." << endl; + cout << "Screenshot (" << png_file.c_str() << ") successfully captured." << endl; break; } // display current camera settings/parameters @@ -301,26 +281,21 @@ cv::viz::InteractorStyle::OnKeyDown() vtkSmartPointer cam = Interactor->GetRenderWindow()->GetRenderers()->GetFirstRenderer()->GetActiveCamera(); Vec2d clip; - Vec3d focal, pose, view; + Vec3d focal, pos, view; cam->GetClippingRange(clip.val); cam->GetFocalPoint(focal.val); - cam->GetPosition(pose.val); + cam->GetPosition(pos.val); cam->GetViewUp(view.val); Vec2i win_pos(Interactor->GetRenderWindow()->GetPosition()); Vec2i win_size(Interactor->GetRenderWindow()->GetSize()); + double angle = cam->GetViewAngle () / 180.0 * CV_PI; + + String data = cv::format("clip(%f,%f) focal(%f,%f,%f) pos(%f,%f,%f) view(%f,%f,%f) angle(%f) winsz(%d,%d) winpos(%d,%d)", + clip[0], clip[1], focal[0], focal[1], focal[2], pos[0], pos[1], pos[2], view[0], view[1], view[2], + angle, win_size[0], win_size[1], win_pos[0], win_pos[1]); + + std::cout << data.c_str() << std::endl; - cv::print(Mat(clip, false).reshape(1, 1)); - std::cout << "/"; - cv::print(Mat(focal, false).reshape(1, 1)); - std::cout << "/"; - cv::print(Mat(pose, false).reshape(1, 1)); - std::cout << "/"; - cv::print(Mat(view, false).reshape(1, 1)); - std::cout << "/" << cam->GetViewAngle () / 180.0 * CV_PI; - cv::print(Mat(win_size, false).reshape(1, 1)); - std::cout << "/"; - cv::print(Mat(win_pos, false).reshape(1, 1)); - std::cout << std::endl; break; } case '=': -- 2.7.4