OpenCV remap()使用实值索引网格使用双线性插值从图像中采样值网格,并将样本网格作为新图像返回.
确切地说,让:
A = an image
X = a grid of real-valued X coords into the image.
Y = a grid of real-valued Y coords into the image.
B = remap(A, X, Y)
Run Code Online (Sandbox Code Playgroud)
那么对于所有像素坐标i,j,
B[i, j] = A(X[i, j], Y[i, j])
Run Code Online (Sandbox Code Playgroud)
其中圆括号A(x, y)表示使用双线性插值来求解使用浮点数x和和的图像A的像素值y.
我的问题是:给定索引网格X,Y我如何生成"逆网格" X^-1,Y^-1这样:
X(X^-1[i, j], Y^-1[i, j]) = i
Y(X^-1[i, j], Y^-1[i, j]) = j
Run Code Online (Sandbox Code Playgroud)
和
X^-1(X[i, j], Y[i, j]) = i
Y^-1(X[i, …Run Code Online (Sandbox Code Playgroud) 我对Scheme非常感兴趣,并开始使用一些玩具编程示例,并正在阅读Paul Graham的On Lisp.
我无法找到的一件事是一本书或网站,旨在向"OO人"教授Scheme,即像我这样的人,他们用c ++/Java/Python完成了99%的编码.
我看到闭包是一种对象,在某种意义上它们具有本地状态,并提供一个或多个可以访问该状态的函数.但我不想学习Scheme只是为了将我现有的习惯移植到它上面.这就是为什么我现在正在学习Scheme而不是Common Lisp; 我担心CLOS可能会成为我现有OO习惯的拐杖.
理想的是一本书或网站,提供用OO语言解决的问题的案例研究,以及以Schemey方式在Scheme中解决的问题.我想我最欣赏科学计算和/或计算机图形学问题,但任何事都可以.
任何教学领导都会非常感激.
我喜欢在c ++中使用哨兵类,但我似乎有一种精神上的痛苦,导致反复编写如下错误:
{
MySentryClass(arg);
// ... other code
}
Run Code Online (Sandbox Code Playgroud)
毋庸置疑,这是失败的,因为哨兵在创作后立即死亡,而不是在预期的范围结束时死亡.有没有办法防止MySentryClass被实例化为临时代码,以便上面的代码无法编译,或者至少在运行时中止错误消息?
我刚开始使用common-lisp,它来自C++和Python.我正在尝试运行一个简单的SDL程序,除了在屏幕上显示图像之外什么都不做.我可以在SLIME中使用它.问题是,从shell作为脚本运行时它将无法工作.
我的程序看起来像这样:
#!/usr/bin/sbcl --script
(asdf:operate 'asdf:load-op :lispbuilder-sdl)
(defun main ()
(sdl:with-init ()
(sdl:window 320 240)
(sdl:draw-surface (sdl:load-image "image.png"))
(sdl:update-display)
(sdl:with-events ()
(:quit-event () t)
(:video-expose-event () (sdl:update-display)))))
(main)
Run Code Online (Sandbox Code Playgroud)
当我将其作为脚本运行时,我收到以下错误:
mkg@chisel:~/projects/common-lisp/sandbox$ ./hello-world.lisp
unhandled ASDF:MISSING-COMPONENT in thread #<SB-THREAD:THREAD "initial thread" RUNNING {AA5E849}>:
component "lispbuilder-sdl" not found
0: (SB-DEBUG::MAP-BACKTRACE #<CLOSURE (LAMBDA #) {AAF1EF5}>)[:EXTERNAL]
Run Code Online (Sandbox Code Playgroud)
(...长回溯省略)
奇怪的是,如果我执行以下操作,此程序可以正常工作.我在Emacs中打开程序,在另一个窗口中启动SLIME,在SLIME窗口中,我输入程序的第一行:
(asdf:operate 'asdf:load-op :lispbuilder-sdl)
Run Code Online (Sandbox Code Playgroud)
然后,在编辑器窗口中,我点击了Cc Ck(编译/加载文件).这会弹出一个显示image.png的窗口,如预期的那样.
为什么在作为shebang脚本运行时不起作用?我该如何解决?
在我的Beamer演示文稿的标题页上,我有三位作者,来自两个研究所.作者并列列出,这很好.不太好的是,研究所在中心的一个奇怪的笨重的专栏中被列为另一个.换句话说,我明白了:
My Talk Title
John Foo (1) Sarah Bar (2) Isaac Foo (1)
Foo University
Foo, MA, 02134
Bar Institute
Bar, CA, 90210
Run Code Online (Sandbox Code Playgroud)
而我喜欢这样做:
My Talk Title
John Foo (1) Sarah Bar (2) Isaac Foo (1)
Foo University Bar Institute
Foo, MA, 02134 Bar, CA, 90210
Run Code Online (Sandbox Code Playgroud)
任何建议将不胜感激.
编辑:这是我正在使用的代码:
\documentclass{beamer}
\usetheme{Warsaw}
institute[Foo and Bar]{
Foo University\\
Foo, MA, 02134
\and
Bar Institute\\
Bar, CA, 90210
}
\author{John Foo\inst{1} \and Sarah Bar\inst{2} \and Isaac Foo\inst{1}}
\title[My Title]{My Talk Title}
\begin{document}
\begin{frame}[plain] % …Run Code Online (Sandbox Code Playgroud) 我有一个目录结构,如:
project_root
data/
src/
.hg/
utils/
math/
graphics/
...
README.txt
LICENCE.txt
Run Code Online (Sandbox Code Playgroud)
从.hg /的位置可以看出,只有src /处于Hg控制之下.我想将存储库根目录从src /移动到其父目录project_root,因此我也可以跟踪data /,README.txt和LICENCE.txt.
一个hacky方法是将所有内容移动到目录而不是移动.hg:
有没有更好的办法?我不能成为第一个遇到这个问题的人,而上述解决方案似乎过于复杂.
当我编译(使用Make,g ++)时,编译缓冲区在新窗口中打开,并开始填充编译器输出行.我不喜欢的是,当行数超过窗口高度时,窗口不会滚动显示底部的最新消息.相反,它只是停留在缓冲区的顶部,在窗口底部下方添加最新消息,不在视图之外.
我通过切换到编译窗口并将点移动到缓冲区的末尾来解决这个问题M-shift-'>'.一旦该点结束,即使添加了其他行,它也会保持在那里,因此最底部的行在窗口中保持可见.
如何自动执行此行为,以便编译不仅可以在新窗口中打开编译缓冲区,还可以移动(该窗口)指向结尾?
我对Gambit Scheme非常感兴趣,特别是它广泛支持的平台,以及在需要时将C代码放在Scheme源代码中的能力.也就是说,它是一个Scheme,与Common Lisp相比,它包含更少的"电池".有些人喜欢从头开始编写很多东西(又名顽皮的牦牛皮),但不是我!
这让我想到了两个问题,面向那些既使用了Gambit又使用了一些Common Lisp的人:
1)哪些有效地更好地访问图书馆?Scheme比Common Lisp拥有更少的库.但是,Gambit Scheme可以更顺畅地访问C/C++代码和库,远远超过Common Lisp的库.在您看来,Gambit FFI的平稳性是否超过其本土图书馆的缺乏?
2)Scheme的对象系统(例如TinyCLOS,Meroon)与Common Lisp的CLOS相比如何?如果你发现它们缺乏,你最想念的是什么功能?最后,Lisp/Scheme中的对象系统首先有多重要?我听说过整个基于lisp的公司(例如ITA软件公司)完全放弃了CLOS.对象在Lisp/Scheme中是否真的可选?我担心如果Gambit没有好的对象系统,我可能会想念它们(我的编程背景纯粹是面向对象的).
感谢您帮助C++/Python进行有抱负的转换,
- 马特
PS:有超过1500名代表的人,请你创建一个"开局"标签?:) 谢谢乔纳斯!
在 Python 方法中,我希望有一个局部变量,其值在方法调用之间保持不变。
这个问题展示了如何在函数内声明此类“静态变量”(C++ 术语)。我尝试在实例方法中执行相同的操作,但失败了。
这是一个重现该问题的最小工作示例。您可以将其复制粘贴到解释器中。
class SomeClass(object):
def some_method(self):
if not hasattr(SomeClass.some_method, 'some_static_var'):
SomeClass.some_method.some_static_var = 1 # breaks here
for i in range(3):
print SomeClass.some_method.some_static_var
SomeClass.some_method.some_static_var += 1
if __name__ == '__main__':
some_instance = SomeClass()
some_instance.some_method()
Run Code Online (Sandbox Code Playgroud)
在标有“#在此中断”的行上,我得到:
AttributeError: 'instancemethod' object has no attribute 'some_static_var'
我意识到有一个简单的解决方法,我可以在其中创建 的some_static_var成员变量SomeClass。SomeClass然而,该变量在方法之外确实没有用,所以如果可以的话,我更希望避免它弄乱命名空间。
我是 tmuxinator 的新手,所以如果这是一个天真的问题,请原谅我。
我有一个 tmuxinator 配置文件(例如my_config.yaml,)存储在共享项目的源代码树中。
对于其他人来说,要使用它,AFAICT 他们首先必须从配置文件到他们的主目录建立一个软链接,然后单独启动 tmuxinator:
$ ln -rs my_config.yaml ~/.tmuxinator/
$ tmuxinator my_config
Run Code Online (Sandbox Code Playgroud)
这很不方便,并且还要求所有配置文件都具有唯一的文件名,以免它们在~/.tmuxinator/.
我宁愿能够做类似的事情:
$ tmuxinator my_config.yaml
Run Code Online (Sandbox Code Playgroud)
有没有办法在命令行上将配置文件传递给 tmuxinator ?