适用于 C# 的简单 ITK 安装教程

本文关键字:安装 教程 ITK 简单 适用于 | 更新日期: 2023-09-27 18:35:54

我前段时间在 c++ 中使用了 ITK,现在我正在尝试在 c# 中使用简单的 itk。我已经看了 MICCAI 2011 教程,我正在尝试开始。我使用的是Windows 7 64位机器和Visual Studio Ultimate 2010。根据这个维基,我应该能够解压缩并将.dlls引用到我的项目中,它应该可以工作。我可以将 SimpleITKCSharpManaged.dll 添加到我的参考文献中。但是,我无法将SimpleITKCSharpNative.dll添加到我的参考资料中。它给了我错误:请确保该文件可访问,并且它是有效的程序集或 COM 组件。

然后,我尝试运行一个简单的控制台应用程序

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using itk.simple;
namespace TestSimpleItk
{
    class Program
    {
        static void Main(string[] args)
        {
            string inputFilename = "001.png";
            if (File.Exists(inputFilename))
            {
                try
                {
                    var input = SimpleITK.ReadImage(inputFilename);
                    var binary = SimpleITK.BinaryThreshold(input, 100, 255, 255, 0);
                    SimpleITK.WriteImage(binary, "cthead1-binary.png");
                }
                catch (Exception ex)
                { 
                    Console.WriteLine("{0}", ex);
                }
            }
            else
            {
                Console.WriteLine("File '{0}' does not exist", inputFilename);
            }
        }
    }
}

引发的异常是:{"'itk.simple.SimpleITKPINVOKE' 的类型初始值设定项抛出了一个异常。内部例外是:{"尝试加载格式不正确的程序。(HRESULT的例外:0x8007000B)"}

我试图将SimpleITKCSharpNative.dll复制到我的bin/debug目录中,但我仍然收到同样的错误。

关于如何解决这个问题的任何想法,或者如何让 SimpleItk 启动并运行,而无需使用 CMAKE 从源代码本地构建它?

谢谢

适用于 C# 的简单 ITK 安装教程

ITK的Dan Mueller回答了我的问题。以下是他要说的话:

嗨费德里科,

您收到的错误给出了提示: "尝试加载格式不正确的程序。"

当 .NET 程序尝试访问使用不同架构构建的 DLL;参见示例这里: http://blogs.msdn.com/b/arvindsh/archive/2009/06/21/tip-of-the-day-an-attempt-was-made-to-load-a-program-with-an-incorrect-format-net-p-invoke-issue.aspx

解决此问题的最简单方法是使用相同的建筑设置作为简单ITK。例如,如果您下载了"SimpleITK-0.4.0-CSharp-Win64-anycpu.zip"然后是你的调用程序应该使用 x64 AnyCPU 设置构建。如果您下载了"SimpleITK-0.4.0-CSharp-Win32-x86.zip"你应该使用x86 Win32设置。

要回答您的其他问题:您只需要添加"SimpleITKCSharpManaged.dll"到您的程序引用,但是"SimpleITKCSharpNative.dll"必须在探测路径中(最简单的方法实现这一点是将其放在您的二进制目录中,旁边是您的程序可执行文件和托管 DLL)。这在以下页面(此页面适用于 Linux,但相同的方法是Windows也需要): http://www.itk.org/Wiki/ITK/Release_4/SimpleITK/GettingStarted/Visual_guide_to_building_on_Linux#A_simple_C.23_program

请让我们知道您的情况。

干杯,丹