2018年6月22日金曜日

OpenCV Viz の Widgetのサンプル(その2)

OpenCVのVizにはどんなWidgetがあるのか?確認してみる。

全3回

WImage3D(画像)


cv::imreadで読み出しが画像を描画する。
vizの座標系はx軸が下なので、画像を180度回転して上げる必要がある(キャプチャはしていない)。

  1. auto im = cv::imread("./lena.jpg");
  2. auto image_3d = cv::viz::WImage3D(im, cv::Size2d(40, 40));
  3. myWindow.showWidget("Image3D", image_3d);




WImageOverlay(画像のオーバーレイ)

画像を3次元空間描画するのでなく、2次元の平面に描画。
視点をグリグリしても、位置は変わらない。
座標をcv::Rectで指定する(左下が原点になるので注意!)。

  1. auto im = cv::imread("./lena.jpg");
  2. auto image_overlay = cv::viz::WImageOverlay(im, cv::Rect(0, 0, 250, 250));
  3. myWindow.showWidget("ImageOverlay", image_overlay);



WPlane(パネル)

中心座標、平面の法線、Y軸の方向、サイズを指定する。
(色はネイビーなんだけど、ちょっと見た目が違う???)


  1. auto plane = cv::viz::WPlane(cv::Point3d(0.0, 0.0, 0.0), // 中心座標
  2. cv::Vec3d(1.0, 0.0, 0.0), // 平面の法線
  3. cv::Vec3d(1.0, 1.0, 0.0), // Y軸の方向
  4. cv::Size2d(3.0, 3.0), // サイズ
  5. cv::viz::Color::navy()); // 色
  6. myWindow.showWidget("Plane", plane);


WPolyLine(多角形)

頂点の座標の配列を指定する。
ぐるぐる

  1. cv::Mat polyline(1, 32, CV_64FC3);
  2. for (auto i = 0; i < (int)polyline.total(); i++)
  3. {
  4. polyline.at(i) = cv::Vec3d(i / 16.0, cos(i * CV_PI / 6), sin(i * CV_PI / 6));
  5. }
  6. myWindow.showWidget("Polyline", cv::viz::WPolyLine(polyline));



0 件のコメント:

コメントを投稿