一个非常愚蠢的琐碎问题.规范的例子是f = open('filename'),但是
f不是很具描述性.在不查看代码之后,您可以忘记它是否意味着"文件"或"函数f(x)"或"傅里叶变换结果"或其他内容.EIBTI.file已经被一个函数占用了.你还用什么?
假设您有一组带有笛卡尔坐标系坐标的点.

您想绘制另一个点,并且您知道它在相同笛卡尔坐标系中的坐标.
但是,您绘制的图形与原始图形失真.想象一下,将原始平面打印在橡胶板上,然后在某些地方拉伸并以不对称的方式将其捏在其他地方(没有重叠或任何复杂的情况).
(来源)
您知道每组点的拉伸和未拉伸坐标,但不知道基础拉伸函数.你知道一个新点的未拉伸坐标.
如何基于附近点的拉伸位置估计在拉伸坐标中绘制新点的位置?它不需要精确,因为除非您有更多信息,否则无法从一组重映射点确定实际拉伸函数.
其他可能的关键字:扭曲的扭曲网格平面坐标unwarp
我正在寻找一种最快,更有效的方法来检测移动视频中的对象.有关此视频的注意事项:它非常颗粒感和低分辨率,背景和前景也同时移动.
注意:我正试图在移动视频中检测道路上移动的卡车.
方法我尝试过:
训练哈尔级联 - 我试图训练分类器通过拍摄所需物体的多个图像来识别物体.这被证明产生许多错误检测或根本没有检测到(期望的物体从未被检测到).我使用了大约100张正面图像和4000张底片.
SIFT和SURF关键点 - 当尝试使用基于特征的这些方法中的任何一种时,我发现我想要检测的对象的分辨率太低,因此没有足够的特征来匹配以进行准确的检测.(从未检测到期望的对象)
模板匹配 - 这可能是我尝试过的最好的方法.它是最准确的,尽管它们都是最黑的.我可以使用从视频裁剪的模板检测一个特定视频的对象.但是,没有保证准确性,因为所有已知的是每个帧的最佳匹配,没有对与帧匹配的百分比模板进行分析.基本上,它仅在对象始终在视频中时才有效,否则会产生错误检测.
所以这些是我尝试过的三大方法,都失败了.什么是最好的是模板匹配,但具有缩放和旋转不变性(这使我尝试SIFT/SURF),但我不知道如何修改模板匹配功能.
有没有人有任何建议如何最好地完成这项任务?
我过去一直在使用Audiolab导入声音文件,而且效果很好.然而:
-
In [2]: from scikits import audiolab
--------------------------------------------------------------------
ImportError Traceback (most recent call last)
C:\Python26\Scripts\<ipython console> in <module>()
C:\Python26\lib\site-packages\scikits\audiolab\__init__.py in <module>()
23 __version__ = _version
24
---> 25 from pysndfile import formatinfo, sndfile
26 from pysndfile import supported_format, supported_endianness, \
27 supported_encoding, PyaudioException, \
C:\Python26\lib\site-packages\scikits\audiolab\pysndfile\__init__.py in <module>()
----> 1 from _sndfile import Sndfile, Format, available_file_formats, available_encodings
2 from compat import formatinfo, sndfile, PyaudioException, PyaudioIOError
3 from compat import supported_format, supported_endianness, supported_encoding …Run Code Online (Sandbox Code Playgroud) 这是一个小程序:
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
print('abcd k? ? °C ?Hz µF ü ? ?')
print(u'abcd k? ? °C ?Hz µF ü ? ?')
Run Code Online (Sandbox Code Playgroud)
在Ubuntu,Gnome终端上,IPython做了我所期望的:
In [6]: run Unicodetest.py
abcd k? ? °C ?Hz µF ü ? ?
abcd k? ? °C ?Hz µF ü ? ?
Run Code Online (Sandbox Code Playgroud)
如果我在trypython.org上输入命令,我会得到相同的输出.
另一方面,codepad.org会为第二个命令生成错误:
abcd k? ? °C ?Hz µF ü ? ?
Traceback (most recent call last):
Line 6, in <module>
print(u'abcd k? ? °C ?Hz µF ü …Run Code Online (Sandbox Code Playgroud) 我正在尝试将一些MatLab代码移植到Scipy,我尝试了scipy.interpolate,interp1d和UnivariateSpline两个不同的函数.interp1d结果与interp1d MatLab函数匹配,但UnivariateSpline数字不同 - 在某些情况下非常不同.
f = interp1d(row1,row2,kind='cubic',bounds_error=False,fill_value=numpy.max(row2))
return f(interp)
f = UnivariateSpline(row1,row2,k=3,s=0)
return f(interp)
Run Code Online (Sandbox Code Playgroud)
谁能提供任何见解?我的x值不是等间隔的,虽然我不确定为什么这很重要.
通常当我在matplotlib中绘图时,我得到这样的图形:

您无法看到该功能,因为它会在绘图边缘上运行.
有没有办法在这些情况下自动添加一些边距,所以它们看起来像这样:

我正在尝试为绘图目的插入一些数据.例如,给定N个数据点,我希望能够生成"平滑"图,由10*N左右的内插数据点组成.
我的方法是生成N×10*N矩阵并计算原始向量和我生成的矩阵的内积,得到1乘10*N向量.我已经计算出我想用于插值的数学运算,但我的代码非常慢.我对Python很陌生,所以我希望这里的一些专家可以给我一些关于如何加速我的代码的想法.
我认为问题的一部分是生成矩阵需要10*N ^ 2次调用以下函数:
def sinc(x):
import math
try:
return math.sin(math.pi * x) / (math.pi * x)
except ZeroDivisionError:
return 1.0
Run Code Online (Sandbox Code Playgroud)
(这来自采样理论.基本上,我试图从其样本中重新生成信号,并将其上采样到更高的频率.)
矩阵由以下生成:
def resampleMatrix(Tso, Tsf, o, f):
from numpy import array as npar
retval = []
for i in range(f):
retval.append([sinc((Tsf*i - Tso*j)/Tso) for j in range(o)])
return npar(retval)
Run Code Online (Sandbox Code Playgroud)
我正在考虑将任务分解成更小的部分因为我不喜欢坐在内存中的N ^ 2矩阵的想法.我可以将'resampleMatrix'变成一个生成器函数并逐行执行内部产品,但我不认为这会加速我的代码,直到我开始在内存中分页内容.
提前感谢您的建议!
这不是真正的"OCR",因为它不能识别字符,但它适用于曲线.有人知道图像处理库或已建立的算法,用于从(光栅)绘图图像中检索值吗?例如,在这张图中,我很难用眼睛读取确切的值,因为网格线之间存在这样的间隙:
替代文字http://i35.tinypic.com/316airl.jpg
我可以使用直边或其他任何东西,但它仍然容易出错.如果有软件只能截取任何旧图的屏幕截图并自动将其转换为值表或可查询的函数,那将是很棒的.
似乎被称为"曲线识别"?也可用于从未发布基础数据的科学论文中的曲线中提取数据.
并且可以获得一些人为指导.例如,没有理由OCR无法读取"100"并将其与线匹配,但是在机器相对于网格线提取曲线的路径之后,让人类给出线数值是可以的.我最感兴趣的是跟踪曲线相对于网格的功能,即使网格以非仿射方式倾斜,旋转或扭曲.
更新:
现在有一篇维基百科文章称为将扫描图转换为数据,链接中有一堆软件.另外一些软件在alternativeto.net上.我想这个理论现在属于http://dsp.stackexchange.com,而软件解决方案属于http://superuser.com?
我正在尝试创建一个新的不可变类型,类似于内置Fraction但不是从它派生的.Fraction类的创建方式如下:
# We're immutable, so use __new__ not __init__
def __new__(cls, numerator=0, denominator=None):
...
self = super(Fraction, cls).__new__(cls)
self._numerator = ...
self._denominator = ...
return self
Run Code Online (Sandbox Code Playgroud)
但我不知道这有什么不同
def __init__(self, numerator=0, denominator=None):
...
self._numerator = ...
self._denominator = ...
Run Code Online (Sandbox Code Playgroud)
创建 (实际上,在注释中指出,类型执行此操作并不常见.)Fraction具有相同值的2个对象不会创建指向同一对象/内存位置的2个标签
尽管源代码注释,它们实际上并不是不可变的:
f1 = Fraction(5)
f2 = Fraction(5)
id(f1), id(f2)
Out[35]: (276745136, 276745616)
f1._numerator = 6
f1
Out[41]: Fraction(6, 1)
f2
Out[42]: Fraction(5, 1)
id(f1)
Out[59]: 276745136
Run Code Online (Sandbox Code Playgroud)
那么这样做有什么意义呢?
文档说
__new__()主要用于允许不可变类型的子类(如int,str或tuple)自定义实例创建.它也通常在自定义元类中重写,以自定义类创建.
因此,如果我不是内置类型的子类,但是我从头开始创建一个不可变类型(子类object),我还需要使用它吗?