日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

2 vtk 编译_OpenCV4.2使用viz模块显示3D图像

發布時間:2023/11/27 生活经验 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2 vtk 编译_OpenCV4.2使用viz模块显示3D图像 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????在OpenCV 3D視覺中如果需要顯示三維數據或圖像就需要用到viz模塊,viz是OpenCV的3D顯示模塊,OpenCV官方release版本不包含此模塊,需要我們自己cmake編譯。

? ? Cmake步驟這里不做詳細介紹,主要介紹一下過程中可能遇到的問題:

? ? 一、contrib模塊路徑OPENCV_EXTRA_MODULES_PATH一律用反斜杠‘/’

????二、viz模塊依賴VTK(Visualization Toolkit),需要下載https://vtk.org/download/并cmake編譯,步驟使用默認即可,相對較簡單,這里使用最新的8.2.0版本,cmake后生成如下Install文件:

然后在cmake選項中勾選WITH_VTK(OpenCV4.2默認勾選),同時設置VTK_DIR為lib\cmake\vtk-8.2,如下圖所示:

????三、其他步驟相對簡單,先config,在generate,然后生成ALL_BUILD,生成僅用于項目的Install,得到如bin、etc、include、x64文件夾,其中可以看到OpenCV2文件夾下有了viz.hpp,然后看下其他文件如lib/dll是否生成成功,我這里統一封裝為opencv_world420.dll/lib

????接下來就可以寫個demo來測試是否編譯成功了,可以自己新建一個工程,配置包含目錄、庫目錄、附加依賴項,然后添加如下測試代碼:

// Viz3D.cpp : 此文件包含 "main" 函數。程序執行將在此處開始并結束。//#include "pch.h"#include #include #include #include using namespace cv;using namespace std;int main(){  /// Create a window  viz::Viz3d myWindow("Coordinate Frame");  /// Add coordinate axes  myWindow.showWidget("Coordinate Widget", viz::WCoordinateSystem());  /// Add line to represent (1,1,1) axis  viz::WLine axis(Point3f(-1.0f, -1.0f, -1.0f), Point3f(1.0f, 1.0f, 1.0f));  axis.setRenderingProperty(viz::LINE_WIDTH, 4.0);  myWindow.showWidget("Line Widget", axis);  /// Construct a cube widget  viz::WCube cube_widget(Point3f(0.5, 0.5, 0.0), Point3f(0.0, 0.0, -0.5), true, viz::Color::blue());  cube_widget.setRenderingProperty(viz::LINE_WIDTH, 4.0);  /// Display widget (update if already displayed)  myWindow.showWidget("Cube Widget", cube_widget);  /// Rodrigues vector  Mat rot_vec = Mat::zeros(1, 3, CV_32F);  float translation_phase = 0.0, translation = 0.0;  while (!myWindow.wasStopped())  {    //* Rotation using rodrigues     /// Rotate around (1,1,1)    rot_vec.at(0, 0) += CV_PI * 0.01f;    rot_vec.at(0, 1) += CV_PI * 0.01f;    rot_vec.at(0, 2) += CV_PI * 0.01f;    /// Shift on (1,1,1)    translation_phase += CV_PI * 0.01f;    translation = sin(translation_phase);    Mat rot_mat;    Rodrigues(rot_vec, rot_mat);    /// Construct pose    Affine3f pose(rot_mat, Vec3f(translation, translation, translation));    myWindow.setWidgetPose("Cube Widget", pose);    myWindow.spinOnce(1, true);  }  return 0;}

????運行時注意除了將opencv_world420.dll放到工程目錄或加到環境變量,還需要將vtk的bin目錄(D:\VTK_Install\bin)加入環境變量才能得到運行結果,上面代碼運行結果如下:

????動畫效果:

????當然你也可以顯示三維圖形類似如下效果:

總結

以上是生活随笔為你收集整理的2 vtk 编译_OpenCV4.2使用viz模块显示3D图像的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。