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图像的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 心跳实现_真强啊!建议每一位Java程序
- 下一篇: gnome硬盘分析_三款基于GUI和终端