哪个是最适合我使用的.NET图像捕获API?

6
我被委派将图像采集整合到.NET应用程序中,并正在寻找可用于执行此功能的API。我已经找到了几个“标准”API,有些存在已久,有些则不久。我查看了ISIS、TWAIN、WIA和SANE(据说主要是*nix)的参考资料。它们都似乎是Win32库,除了SANE外,我想知道与图像采集设备(扫描仪)通信的当前建议是什么?
如果您觉得有更好的选择,请随意推荐其他内容。我正在寻找免费选项,因此使用WIA或TWAIN是可以接受的,因为它们是专有接口但是免费的。
4个回答

4
如果您的应用程序使用高端扫描仪,并且需要编写一个可以最大化扫描仪吞吐量并利用这些扫描仪的所有高级功能的应用程序,则需要查看基于ISIS的API。我个人曾经使用Captiva/EMC的PixTools SDK非常成功地为一家大型扫描公司构建了一个应用程序。该工具包使得使用各种图像处理滤镜和软件即时清理扫描图像变得相当容易。我还能够轻松集成条形码和贴片识别。该工具包价格昂贵-四年前约为6,000美元。
但我猜想您的应用程序不需要高端解决方案。在这种情况下,我认为您应该看看TWAIN。我自己从未尝试过,但我了解到TWAIN很难使用。一段时间以前,我在CodeProject上找到了一篇文章,作者介绍了.NET的TWAIN封装器: .NET TWAIN image scanner

我稍微试了一下,似乎可以工作。在这里,我找到了一个线程,Luke Quinane引用了他的Google Code项目,该项目基于同一篇文章。以下是链接:

Twain Dot Net


3

如果你只限于使用开源软件,那么你将局限于SANE。我怀疑在设备支持和兼容性方面,没有其他开源库能够与SANE相媲美。但是需要提到的是,与TWAIN和WIA等专有API相比,SANE在设备支持方面仍然相当差劲...

如果开源不是必须的话,选择取决于操作系统。对于Windows XP及更高版本,WIA是最佳解决方案;如果需要支持Windows 2000或9x,则TWAIN可能更好(我认为TWAIN也应该是跨平台的,尽管我现在没有证据)。但与WIA相比,TWAIN API已经非常过时(在我看来),而且WIA对于支持批量扫描之类的东西有更严格的要求(TWAIN则由设备制造商决定是否支持)。


哦,考虑到你需要 .NET API - 图像采集 API 都是使用本地代码编写的,所以你肯定需要一个托管包装器。 - Alexander Frost
你应该考虑使用Open CV。它是一个非常完整的工具包,可能对于你目前的需求来说有些过度,但它确实很棒。Emgu是它的.NET封装。 - Mikos
据我所知,OpenCV不是一个图像采集/捕获API... - Alexander Frost
我也是这么认为的,从最初的看法来看,它似乎是计算机视觉,但很可能其中包括了图像捕获。 - BlackICE

1
我建议您在大多数情况下选择TWAIN驱动程序,因为它提供了与扫描仪的最大兼容性,并且可以根据扫描仪型号自由定制扫描。如果您正在构建简单的扫描应用程序,则WIA也可能适合。对于ISIS,除非您有特定要求,否则最好先检查其他选项。SANE可在网络扫描和没有Windows系统的系统上提供最佳支持。

0

如果你可以接受Sane的设备支持,那就选择它吧,因为它更加明智、自由(开放)、灵活。其他选项总是会强加任意限制。


1
那完全无法阅读。你能用ASCII字符吗? - Alexander
1
þ和ð = th(冰岛语),ſ = s(古德语) - ygoe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接