首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图像识别

图像识别
EN

Stack Overflow用户
提问于 2008-09-27 03:50:07
回答 10查看 7.3K关注 0票数 5

我想做一些关于计算机成像的基础知识的工作。我正在寻找一种方法来读取单像素的数据,对它们进行编程分析,并对其进行更改。最好的语言是什么(Python,c++,Java...)?最好的文件格式是什么?

我不想要任何超级花哨的软件/API。我在找最基本的东西。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2008-09-27 03:58:52

如果你需要速度(你可能总是想要图像处理的速度),你肯定必须使用原始像素数据。Java有一些真正的缺点,因为你不能直接访问内存,这使得像素访问比直接访问内存要慢得多。C++绝对是图像处理产品的首选语言。但是,例如,您也可以使用C#,因为它允许在特定区域使用不安全的代码。(看看bitmapdata类的scan0指针属性。)我已经成功地在图像处理应用程序中使用了C#,它们的速度肯定比java快得多。我不会使用任何脚本语言或java来达到这样的目的。

票数 7
EN

Stack Overflow用户

发布于 2008-09-27 04:36:00

使用、Python、等高级语言来处理大型、多维或复杂的像素信息数组是非常困难的。有一个名为PIL (the Python Imaging Library的库非常有用,它可以让你做一般的过滤和变换(改变亮度,柔化,去饱和度,裁剪等)以及操作原始像素数据。

到目前为止,它是我一直使用的easiest and simplest图像库,可以扩展它来做您感兴趣的任何事情(例如,用很少的代码编写edge detection)。

票数 4
EN

Stack Overflow用户

发布于 2012-10-30 00:11:08

我学过人工智能和计算机视觉,因此我非常了解这一领域使用的工具。

基本上:你可以使用任何你想要的东西,只要你知道它在幕后是如何工作的。

现在,根据您想要实现的目标,您可以使用:

  • C语言,但在实现算法时,您将在错误检查和内存管理方面浪费大量时间。所以从理论上讲,这是做这类工作的最快的语言,但是如果你的算法在计算上效率不高(就复杂性而言),或者如果你在but检查上浪费了太多时间,这显然是不值得的。所以我建议首先用另一种语言实现你的应用程序,然后你可以用C bindings.
  • Octave/MatLab:非常高效的语言来优化你的代码的一小部分,几乎和C一样多,而且你可以做出非常优雅和简洁的算法。如果你对向量化、矩阵和线性运算感兴趣,你应该使用它们。然而,你不能用这种语言开发一个完整的应用程序,它更专注于算法,但之后你可以随时使用另一种语言开发界面。
  • Python:一体式优雅且易于访问的语言,用于大规模应用程序,如谷歌和脸书。你几乎可以用Python做任何你想做的事情,任何类型的应用程序。如果你想创建一个完整的应用程序(包括客户端交互,而不仅仅是算法),或者你想使用现有的库快速起草一个原型,因为Python有一组非常大的高质量的库,比如OpenCV,那么它将是非常适合的。但是,如果您只想创建算法,则最好使用Octave/MatLab.

被选为解决方案的答案是非常有偏见的,你应该小心这种陈旧的评论。

如今,硬件比湿件(人类)更便宜,因此,您应该使用能够更快地产生结果的语言,即使这是以几个CPU周期或内存空间为代价的。

此外,许多人倾向于认为,只要你用C/C++实现你的软件,你就是在制造速度的圣杯:这不是真的。首先,因为算法的复杂性比你正在使用的语言重要得多(一个糟糕的算法永远不会击败一个更好的算法,即使是用世界上最慢的语言实现的),其次,因为现在高级语言正在为你做大量的缓存和速度优化,这可以使你的程序运行得比C/C++更快。

当然,您总是可以在C/C++中完成上述所有操作,但是您愿意浪费多少时间来重新发明轮子呢?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/142928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档