Category Archives: C++

Build and install 3D Slicer4 from source code in Windows

The 3D Slicer is a modern biomedical image processing and analysis software based on ITK and VTK libraries. It is an open source, and can be extended with plugins. Developing new modules, though, demands building the Slicer from the source code.

To say the truth, building Slicer in Windows (especially 64 bit Windows) is a pain. The official installation Wiki page is useful, but gives too many variants and options and jumping from one place to another with different prerequisites, prerequisites of prerequisites, etc., and finally forgets to tell you about essential Visual Studio switches. The result is: after a half day of building, you get between 1 to 5 unsuccessful builds…Who knows why…

After endless trials of installing different versions of different prerequisite softwares, here is my first successful installation list (VERY IMPORTANT to use the suggested software versions, and not newer versions):

  1. Install the newest version of Git.
  2. Install the newest version of SilkSVN.
  3. Install QT 4.7.4 (32 bit binary).
  4. Install VS 2008 Express with SP1.
  5. Install the newest version of CMake.
  6. Open the Windows file explorer and create the directory: C:\Slicer4
  7. Go to C:\ root directory, and press right mouse button. Choose Git Bash. When black terminal window opens, write and run:
    svn co http://svn.slicer.org/Slicer4/trunk Slicer4
  8. At this stage, the directory C:\Slicer4 should have all the source code of slicer.
  9. Go to Slicer4 directory, and create there Slicer4-Superbuild directory.
  10. Run CMake-GUI.
  11. Select…Where is the source code: C:\Slicer4
  12. Select…Where to build the binaries: C:\Slicer4\Slicer4-Superbuild
  13. Press Configure and select the generator Visual Studio 9 2008 (NOT Win64). If all the previous softwares were installed and configured properly, this step should run without any error messages, and give you a few selected red-background lines in the upper part of the GUI. If errors occur, this is probably because the system’s PATH is not updated properly (all binaries of all aforementioned programs should be included in the PATH variable.
  14. Press Configure once or twice until all the red disappears.
  15. Press Generate, and close CMake after the successful solution generation.
  16. Go to C:\Slicer4\Slicer4-Superbuild directory and open Slicer.sln with VS2008.
  17. When the project opens, select “Release” option instead of “Debug” on the upper toolbar (important!). Note that the built solution should be Win32 even when compiled on x64 machine and Win64.
  18. Build the solution. Hopefully, after a few hours of compiling, this should create a workable version of Slicer.

Troubleshooting:

  • Once I’ve receive error for NUMPY build, and it was resolved by manually creating an empty NUMPY directory in the Slicer4-Superbuild directory, and recompiling.

Install and Configure OpenCV2 in VS2010

OpenCV is a very useful C++ Computer Vision library. Since the pre-built superpack is available, and can be downloaded from here, the installation is rather simple. The problems begin when you’re trying to find different include/lib/bin directories and define them in Visual studio 2010.

  1. Download the latest version of the Superpack.
  2. Run the EXE file, and extract all the files to some directory, e.g., C:\OpenCV23
  3.  Find the subdirectory “build” inside your OpenCV directory. In this subdirectory, find the directory “bin” which is appropriate for your operational system and compiler, e.g., for 32bit VS2010: C:\OpenCV23\opencv\build\x86\vc10\bin
  4. Now you have to add some environmental variables. The instructions can be found here. Add the full path to the “bin” directory to the PATH variable.
  5. Add the variable: OpenCV_VER = 231     (where 231 is the full version number of your OpenCV (i.e., 2.3.1), without dots)
  6. Add the variable: OpenCV_PATH = C:\OpenCV23\opencv\build   (where the path should point to your “build” directory)
  7. Now, create the text file OpenCV_Debug.props:

<!–?xml version=”1.0″ encoding=”utf-8″?>
<Project ToolsVersion=”4.0″ xmlns=”http://schemas.microsoft.com/developer/msbuild/2003″&gt;
<ImportGroup Label=”PropertySheets” />
<PropertyGroup Label=”UserMacros” />
<PropertyGroup>
<IncludePath>$(OpenCV_PATH)\include;$(IncludePath)
</PropertyGroup>
<PropertyGroup>
<LibraryPath>$(OpenCV_PATH)\x86\vc10\lib;$(LibraryPath)
</PropertyGroup>
<ItemDefinitionGroup>
<Link>
<AdditionalDependencies>opencv_core$(OpenCV_VER)d.lib;opencv_highgui$(OpenCV_VER)d.lib;opencv_imgproc$(OpenCV_VER)d.lib;opencv_features2d$(OpenCV_VER)d.lib;opencv_calib3d$(OpenCV_VER)d.lib;opencv_video$(OpenCV_VER)d.lib;opencv_objdetect$(OpenCV_VER)d.lib;%(AdditionalDependencies)
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>

and the file OpenCV_Release.props:

<!–?xml version=”1.0″ encoding=”utf-8″?>
<Project ToolsVersion=”4.0″ xmlns=”http://schemas.microsoft.com/developer/msbuild/2003″&gt;
<ImportGroup Label=”PropertySheets” />
<PropertyGroup Label=”UserMacros” />
<PropertyGroup>
$(OpenCV_PATH)\include;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include;
</PropertyGroup>
<PropertyGroup>
$(OpenCV_PATH)\x86\vc10\lib;$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib
</PropertyGroup>
<ItemDefinitionGroup>
<Link>
<AdditionalDependencies>opencv_core$(OpenCV_VER).lib;opencv_highgui$(OpenCV_VER).lib;opencv_imgproc$(OpenCV_VER).lib;opencv_features2d$(OpenCV_VER).lib;opencv_calib3d$(OpenCV_VER).lib;opencv_video$(OpenCV_VER).lib;opencv_objdetect$(OpenCV_VER).lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>

8.   Create an empty Visual Studio console project.

9.  Add some new source file, like main.cpp

10. Copy the prop files you’ve created to the same directory.

11. In the property editor of VS (look for the property tab under the “Solution explorer” window) add the OpenCV_Debug.props property sheet to Debug | Win32, and OpenCV_Release.props to Release | Win32 (by clicking on + button).

That’s it.

Now, if you need to create a new OpenCV project, you should repeat the steps 8-11 only.

If you’d like to update your OpenCV installation to a new version, you should repeat the steps 4-6, and 8-11 only.