1. 程式人生 > >3D Slicer+Qt-easy-build+VS2013

3D Slicer+Qt-easy-build+VS2013

填補3D Slicer配置步驟空白~~~

廢話:

科研菜鳥終於要走出敲程式碼這一步了,只是離心水的機器學習越來越遠,不過走進視覺化這個領域還是蠻令人激動的。

需要用到3D Slicer這個開源庫,需要自己寫一個程式來讀取醫學資料模型等來做視覺化。網上可供參考的資料太少,唯一的一個還是13年基於xp下的,但還是有一定的參考性,決定苦讀官方資料,做一個靠自己的程式媛,並且拒絕了師兄的幫助。查詢了官網針對開發者的資料。對一個大學四年都在計算機專業男生的幫助下畢業的渣渣程式媛,最近被師兄吐槽怎麼連計算機有什麼硬體,怎麼裝軟體都不會!終於要獨立了。已經自己配置好了OSG的庫,沒有任何人幫忙,感覺自己好厲害,哈哈。慢慢進步。不能廢話了,這是一個專業的部落格。

正文:

參考資料:官網資料 點選開啟連結

零、目的

編譯Slicer debug版本,所以要求qt 也是debug版的

一、準備

1、cmake-3.5.0-win32-x86點選開啟連結

2、Git-2.8.1-64點選開啟連結

3、SlikSvn

4、QT 4.8.7  支援SSL 使用qt-easy-build點選開啟連結

5、VS2013

二、安裝VS2013

不贅述

三、配置Git

使用預設的方式安裝Git。Git是一個特別強大的版本控制工具,支援很多不同的“工作流”針對獨立開發者和合作開發。安裝成功後將安裝路徑新增到Path變數中(設定環境變數)。

四、配置QT

可以直接略過前面的ABC失敗的方法,直接轉到D成功的方法。

(A)失敗方法1

GitHub上鍊接貼在上面了

是一個指令碼,該指令碼可以很簡單的build 支援openssl的qt。

首先要新增一個Visual studio command prompt 到VS2013的工具裡:方法見此點選開啟連結

開啟這個command prompt,把GitHub那個連結裡面的Visual Studio 2013 64-bit release版本的指令碼貼上到視窗中,回車,自己會開始配置QT。過程有點慢,實驗室網速太渣。

失敗了,用這個easy build 同門開玩笑說是easy build=rebuild。我思考了一下,官網給的easy build 都是Qt4了,現在都是Qt5。決定還是自己下載Qt配置吧,然後在加上SSL support。


不知道問題是什麼。

(B)失敗方法2

(1) Qt5+ssl

2.qt-vs-addin-1.2.5.exe點選開啟連結

先裝opensource,再使用addin將Qt加到VS2013中,再進行相應配置,詳見另外的文章。點選開啟連結

(2) ssl  

使用git clone openssl

cd e:

cd Openssl

$ git clone git://git.openssl.org/openssl.git


2.下面是轉載歪果仁的回覆,應該管用點選開啟連結

Assuming Windows you can download its installation from Win32 OpenSSL Installation Project page. You need to download this one for 64-bit windows developing or this one for 32-bit. Just run the stup and every thing will be done easily. The default installation directory is : C:\OpenSSL-Win32
In Qt creator if want to link a library to your project you can just add this line to your .pro file(project file ) :

LIBS +=-L/path/to -llibname

So here's what we do for this library( for example to link ubsec.lib )

LIBS +=-LC:/OpenSSL-Win32/lib -lubsec

Pay attention to -L and -l.See this question. You don't even need to specify .lib at the end of the library name.

For including .h files add this line to your .pro file :

INCLUDEPATH += C:/OpenSSL-Win32/include

after that you can include a file like this :

#include<openssl/aes.h>

(C)最後一次掙扎

使用第一次失敗的方法中下載下來的qt-everywhere-opensource-src-4.8.7.zip

然後按照網上唯一可查的中文配置指南進行一定更改點選開啟連結

3.2  安裝 QT 4.7.4 原始碼

     點選qt-everywhere-opensource-src-4.8.4.tar.gz解壓到某個目錄,如C:/Qt/4.8.4 目錄下(路徑不要包含空格,否則會編譯出錯); 
  3.3  編譯QT 4.8.4
       ① Windows2000/xp中新增一個系統環境變數QMAKESPEC,值為win32-msvc2013
        ② 在系統環境變數的path中新增C:/Qt/4.8.4/bin
       ③ 從Windows 的“開始”按鈕點選,開啟  VS2013 Command Program; 路徑如下:
     進入QT 4.7.4 原始碼目錄,如:
          > C:/
          > cd C:/Qt/4.8.4
       執行configure 目錄,引數如下:
          >configure.exe -opensource -confirm-license -debug -webkit -nomake examples -nomake demos 
 

等待一段時間後,執行 nmake 命令,如:
         >  nmake 
       等待數小時後(視機器條件而定),編譯成功即可;

希望成功啊!!兩天了!!我寶貴的時間啊!!

(D)絕對最後一次掙扎,已經過去6天了

經歷了n次重灌,我這暴脾氣。用一個嶄新的系統迎接3D Slicer,希望他能夠進入姐姐的懷抱。

VS2013+Update5安裝

還是使用的官網給的easy-build,不過要做一些改動。

先用那一行命令,在VS2013的Command Prompt裡執行,下載那些必要的東西。

@powershell -Command "$destDir='C:\D\Support';$buildType='Debug';$qtPlatform='win32-msvc2013';$bits='64';iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/jcfr/qt-easy-build/4.8.7/windows_build_qt.ps1'))"

肯定會編譯失敗的,哈哈哈,已經試了無數次和無數臺機子了。

(1)修改C:\D\Support\qt..\src\3rdparty\webkit\source\webcore\platform\DefaultLocalizationStrategy.cpp,定位到327行,修改那些看起來奇怪的引號。

不過我現在在思考,既然我都不配置這個webkit功能,也不需要修改webkit裡面的原始碼了吧。

(2)修改cmake檔案,包含configure qt這部分的,把-webkit刪掉,意思是不要這個webkit功能,因為總是這裡出錯,查資料說webkit是不支援靜態編譯的,所以肯定會出錯,不知道為啥,哈哈。

(3)修改qt-easy-build-4.8.7.zip中的ps1檔案,刪掉function always-download-file裡面的三個cross-platform script的下載,也就是不讓他每次都重新下載那個cmake檔案。

然後,寶寶用了個很蠢的方法,把自己修改好的這個ps1檔案傳到github上面,然後修改上面那一行命令的下載路徑,這樣下載的ps1檔案就是寶寶修改過的了,哈哈,因為實在不懂這個指令碼命令。


(D)終於成功編譯Qt了!完成了一大步!

上面的方法都驗證失敗,其實還是用的easybuild,因為作者回復了,在作者的幫助下編譯成功了,現在分享一下github上面的過程。切記!一定要使用VS2013 64bit 的console啊!不然會衝突的。

@powershell -Command "$destDir='C:\D\Support';$buildType='Debug';$qtPlatform='win32-msvc2013';$bits='64';iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/jcfr/qt-easy-build/4.8.7-update-to-cmake-3.4.3/windows_build_qt.ps1'))"

First error

platform\DefaultLocalizationStrategy.cpp(327) : error C2065: “selection”: 未宣告的識別符號(undeclared identifier)

platform\DefaultLocalizationStrategy.cpp(327) : error C2228: “.replace”的左邊必須有類/結構/聯合(on the left of ‘replace’ must have a class / structure / joint)j

om: C:\D\Support\qt-4.8.7-64-vs2013-deb\src\3rdparty\webkit\Source\WebCore\Makefile.WebKit.Debug [tmp\obj\debug_shared\DefaultLocalizationStrategy.obj] Error 2

jom: C:\D\Support\qt-4.8.7-64-vs2013-deb\src\3rdparty\webkit\Source\WebCore\Makefile.WebKit [debug] Error 2

jom: C:\D\Support\qt-4.8.7-64-vs2013-deb\src\3rdparty\webkit\Source\Makefile.WebKit [sub-WebCore-make_default-ordered] Error 2

jom: C:\D\Support\qt-4.8.7-64-vs2013-deb\Makefile [sub-webkit-make_default-ordered] Error 2

Solution:

change the code in line 327 in DefaultLocalizationStrategy.cpp. There are some strange quotation mark, change it ,and add “\” before quotation mark.
change to the following:
return WEB_UI_STRING("Look Up \"<selection>\"", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));

Second error

GraphicsLayerQt.cpp lib /NOLOGO /OUT:debug\webcore.lib @C:\Users\GJC\AppData\Local\Temp\webcore.lib.4228.196593.jomtmp\obj\debug_shared\DefaultLocalizationStrat

jom: C:\D\Support\qt-4.8.7-64-vs2013-deb\src\3rdparty\webkit\Source\WebCore\Makefile.WebKit.Debug [debug\webcore.lib] Error 1112

egy.obj : fatal error LNK1112: 模組計算機型別“x64”與目標jom: C:\D\Support\qt-4.8.7-64-vs2013-deb\src\3rdparty\webkit\Source\WebCore\Makefile.WebKit [debug] Error 2計算機型別“X86”衝突(linking problem: fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86')

jom: C:\D\Support\qt-4.8.7-64-vs2013-deb\src\3rdparty\webkit\Source\Makefile.WebKit [sub-WebCore-make_default-ordered] Error 2jom: C:\D\Support\qt-4.8.7-64-vs2013-deb\Makefile [sub-webkit-make_default-ordered] Error 2CMake Error at QEBQt4ExternalProjectCommand.cmake:123 (message): Problem building Qt

Solution

No exact solution, I think maybe some times before, I used wrong console(32bit) to compile and then I changed to 64bit console which may cause conflicts. So my solution is to delete all the files I downloaded and compiled before.
Then success.
Good luck for all confused.

五、CHECKOUT slicer source files檢查slicer 資原始檔

以下命令都在git bash裡面輸入。

開啟Git Bash,選一個盤,建一個MyProjects的資料夾E:\MyProjects

在Git Bash命令視窗中輸入

1.clone github repository

自己選一個路徑我的是E:\MyProjects

cd MyProjects
git clone git://github.com/Slicer/Slicer.git
2.設定開發環境Setup the development environment:
cd Slicer
./Utilities/SetupForDevelopment.sh
3.Configure the git svn bridge to ensure the mapping with svn revision.配置git svn
cd Slicer
git svn init http://svn.slicer.org/Slicer4/trunk
git update-ref refs/remotes/git-svn refs/remotes/origin/master
git checkout master
git svn rebase
If you plan to compile Slicer to develop your own extensions and test these extensions on Slicer releases, it is convenient to download the source code directly from SVN and specify the revision number corresponding to the release you want.如果準備編譯Slicer來建立自己的程式,通過SVN下載原始碼會比較方便。
svn co http://svn.slicer.org/Slicer4/trunk Slicer-r23774 -r 23774
這個下載還是配置過程還是有點久

不太懂整個過程,總之按照步驟來吧,每一步我都做了。

六、CONFIGURE and generate Slicer solution files使用Cmake配置和產生sln檔案

注意,這裡build 路徑必須是這樣簡單的名字,太複雜會出錯。


多點幾次configure,修改QT_QMAKE_EXECUTABLE 的路徑到 qmake.exe, 通常在路徑bin(例如, C:/path/to/qt-everywhere-opensource-build-4.8.6/bin/qmake.exe我的是在C:/D/Support/qt-4.8.7-64-vs2013-deb/bin/qmake.exe。

然後再把Slicer_USE_SimpleITK 這個選項取消掉。再configure,直到沒有紅色的。然後點generate。生成的Slicer.sln在C:\S4D中。

然後用VS2013進行debug版本的編譯。該過程需聯網,感覺在下載東西。


相關推薦

3D Slicer+Qt-easy-build+VS2013

填補3D Slicer配置步驟空白~~~ 廢話: 科研菜鳥終於要走出敲程式碼這一步了,只是離心水的機器學習越來越遠,不過走進視覺化這個領域還是蠻令人激動的。 需要用到3D Slicer這個開源庫,需要自己寫一個程式來讀取醫學資料模型等來做視覺化。網上可供參考的資料太少,唯一

3D-slicer環境搭建之】vs2013 + qt5.3.2 環境搭建

開啟http://download.qt.io/archive/網址 下載qt及外掛,具體詳見 http://blog.csdn.net/haodemei2010/article/details/45484389

3D Slicer Programmatically Set Slice Offset and Intersections 用代碼修改Slicer中的切片偏移和交叉點顯示

cnblogs 們的 int mod call eof col all mha 在3D Slicer中,當我們導入.mha/.mhd等格式的volume文件後,那麽我們就可以在Axial, Sagittal, Coronal三個方向來觀察我們的MRI或者CT的圖像了。

3D Slicer中文教程(四)—圖像分割

細節 這樣的 切片 present complete 加載 surf photos 初始化 1.數據獲取 (1)下載3D Slicer自帶的樣本數據 (2)選擇自由的數據 (3)網上數據庫等其他方式下載數據 2.分割工具 Segment Editor是一個用於

3D Slicer中文教程(八)—導出STL文件

制作 執行 文件中 wiki 沒有 wikipedia 而且 模型 mat 一、STL文件簡介   STL(立體平版印刷術的縮寫)是由3D Systems創建的立體平版印刷CAD軟件原生的文件格式STL有“標準三角語言”和“標準鑲嵌語言

3D Slicer Hide 3D Cube and Axis Labels Programmatically 使用程式碼隱藏三維檢視中的方框和座標軸標籤

  在3D Slicer中,我們如果想在自己寫的外掛中來修改三維檢視中的預設設定的話,那麼首先就需要獲得三維檢視的結點,其型別為vtkMRMLViewNode,獲得了這個結點後,我們就可以用程式碼來修改一系列屬性了,比如隱藏方框和座標軸標籤等。這裡我們通過使用系統函式getNode()來獲得三維檢

3D slicer

    3D Slicer: (1)一個軟體平臺,用以影象分析(包括配準和實時編輯),影象視覺化以及影象引導治療;(2)是一個免費、開源軟體,並適用於Linux、MacOSX和windows作業系統; (3)擁有強大的可擴充套件性,可以通過模組嵌入方式來增加新的功能和應用。3D

【python3】leetcode 883. Projection Area of 3D Shapes(easy

883. Projection Area of 3D Shapes(easy)  On a N * N grid, we place some 1 * 1 * 1 cubes that are axis-align

基於3d slicer開發醫學影象標註外掛

是一款開源的醫學影象處理軟體,它基本上集成了醫學影象處理的所有功能,包括重建、分割、配置、分析、實時導航等功能。3d slicer是基於ITK、VTK、DCMTK、CTK、QT等開發的,以外掛的方式實現醫學影象的處理分析功能,提供了C++、Paython、CLI的程式開發介面。我們通過編譯原始碼,採用C++

3D Slicer 學習筆記一

1. Welcome tutorial 下載一個例子(MRHead),然後顯示,學會基本的滑鼠操作 包含100+個模組用來醫學影象分割、配準、視覺化 3D slicer 以模組為基礎,主要的application GUI分成六部分:選單欄,工具欄,module gui pa

使用3D Slicer對圖像進行配準

雙向 編輯 教程 通過 down 開源 運行 平臺 www. 在進行深度學習之前,我們需要圖像進行一些預處理操作,其中配準是很重要的一環,以下將介紹使用軟件3D Slicer來進行圖像配準 3D Slicer是(1)一個軟件平臺,用以圖像分析(包括配準和實時編輯),圖像可視

Qt音樂播放器制作(二)Easy Player

滾動 支持 是個 blog 音樂 音樂播放器 div iss size 兩天沒有公布新的動態。主要原因還是個人的生活和工作時間限制,如今趕晚貼出第二版。先放個圖: 自上次公布第一個版本號以來,又進行了多次改動,主要變化在於: (1)依照上次的計劃又一次設計了界面

VS2013平臺安裝Qt插件過程

china htm pla release n-1 路徑 nbsp 自己的 開發環境 1、下載所需安裝包: Qt5.3、Qt插件下載地址:http://qt-project.org/downloads. qt-vs-addin-1.1.11-opensource.exe

Qt 3D教程(二)初步顯示3D的內容

初始 應用 frame 通過 net settings mod rgba bsp Qt3D教程(二)初步顯示3D的內容 前一篇很easy,全然就沒有牽涉到3D的內容,它僅僅是我們搭建3D應用的基本框架而已,而這一篇。我們將要利用它來初步地顯示3D

build-qt.sh(Cross compile in Linux for Windows)

-i cdir pla sse install osi branch config break #!/bin/bash set -e MINGW=${MINGW:-${ARCH:-x86_64}-w64-mingw32} PREFIX=${PREFIX:-

Qt & VS2013 報錯:There's no Qt version assigned to this project for platform Win32

log 路徑 ont vs2013 ima 版本選擇 配置 pan 了解 如果你想了解關於Qt與VS2013開發環境搭建,可以至此翻頁。 這裏主要分享環境已搭建成功,在構建項目時遇到的報錯解決方案。 【1】Qt 與 VS2013開發環境構建時報錯 報錯界面如下:

win10環境下VTK7.1的編譯和Qt調用VTK的詳細教程二(VS2013編譯支持Qt的VTK庫)

span ble 導致 解決方法 log 發現 ear files 沒有 本文主要用於編譯支持Qt的VTK庫,重點在於編譯VTK庫,供Qt調用。 第1步:新建一個文件夾:vtkDir 第2步:在該文件夾下新建兩個文件夾vtk_bin、vtk_src 第3步:將下載好的V

qt的應用層主要是大型3d,vr,管理軟件和器械嵌入軟件(有上千個下一代軟件黑科技項目是qt的,美國宇航局,歐洲宇航局,超級戰艦DDG1000)

高級 研發 eclips 人在 但是 tel engine ack 運行 作者:Nebula.Trek鏈接:https://www.zhihu.com/question/24316868/answer/118944490來源:知乎著作權歸作者所有。商業轉載請聯系作者獲得授權

VS2013+QT寫的Action或按鈕明明沒有按下,卻會調用

相同 感悟 需要 如果 最好 vs2013 span copy 。。 我今天調了一天的bug,已知不懂為什麽其它都可以,但是一直這裏輸出不行,換了多種思路,一直調試; 。。。 終於,在一次次重新看代碼的時候註意到,有一處地方,我認為是不會錯的代碼的地方,實際上是有錯誤的:

QT designer+ VS2013 】獲取網路時間

使用qt函式獲取網路時間 現在Qt Project Setting中的Qt Modules勾選NetWork,再匯入標頭檔案我也忘了叫什麼了   1 QStringList net_time; 2 QTcpSocket *socket = new QTcpSocket();