小编Sup*_*ric的帖子

反转实值索引网格

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)

math opencv image-processing remap bilinear-interpolation

12
推荐指数
3
解决办法
1912
查看次数

面向对象程序员的方案

我对Scheme非常感兴趣,并开始使用一些玩具编程示例,并正在阅读Paul Graham的On Lisp.

我无法找到的一件事是一本书或网站,旨在向"OO人"教授Scheme,即像我这样的人,他们用c ++/Java/Python完成了99%的编码.

我看到闭包是一种对象,在某种意义上它们具有本地状态,并提供一个或多个可以访问该状态的函数.但我不想学习Scheme只是为了将我现有的习惯移植到它上面.这就是为什么我现在正在学习Scheme而不是Common Lisp; 我担心CLOS可能会成为我现有OO习惯的拐杖.

理想的是一本书或网站,提供用OO语言解决的问题的案例研究,以及以Schemey方式在Scheme中解决的问题.我想我最欣赏科学计算和/或计算机图形学问题,但任何事都可以.

任何教学领导都会非常感激.

lisp oop scheme functional-programming idioms

10
推荐指数
1
解决办法
3511
查看次数

禁止实例化作为临时对象(C++)

我喜欢在c ++中使用哨兵类,但我似乎有一种精神上的痛苦,导致反复编写如下错误:

{
  MySentryClass(arg);
  // ... other code
}
Run Code Online (Sandbox Code Playgroud)

毋庸置疑,这是失败的,因为哨兵在创作后立即死亡,而不是在预期的范围结束时死亡.有没有办法防止MySentryClass被实例化为临时代码,以便上面的代码无法编译,或者至少在运行时中止错误消息?

c++ temporary temporary-objects

10
推荐指数
1
解决办法
435
查看次数

lisp作为shebang脚本vs在SLIME中运行的lisp

我刚开始使用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脚本运行时不起作用?我该如何解决?

lisp sdl sbcl slime shebang

9
推荐指数
1
解决办法
1399
查看次数

乳胶投影机标题页中的并排机构

在我的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)

latex beamer

8
推荐指数
1
解决办法
2万
查看次数

如何将Mercurial存储库根目录移动到一个目录中?

我有一个目录结构,如:

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:

  • 将src的内容下移到新目录src/src /
  • 将project_root(src /除外)的内容向下移动到src /
  • 将src重命名为new_project_root
  • 将new_project_root移出project_root,删除project_root

有没有更好的办法?我不能成为第一个遇到这个问题的人,而上述解决方案似乎过于复杂.

version-control mercurial

8
推荐指数
2
解决办法
1565
查看次数

如何让编译缓冲区将其放在最后?

当我编译(使用Make,g ++)时,编译缓冲区在新窗口中打开,并开始填充编译器输出行.我不喜欢的是,当行数超过窗口高度时,窗口不会滚动显示底部的最新消息.相反,它只是停留在缓冲区的顶部,在窗口底部下方添加最新消息,不在视图之外.

我通过切换到编译窗口并将点移动到缓冲区的末尾来解决这个问题M-shift-'>'.一旦该点结束,即使添加了其他行,它也会保持在那里,因此最底部的行在窗口中保持可见.

如何自动执行此行为,以便编译不仅可以在新窗口中打开编译缓冲区,还可以移动(该窗口)指向结尾?

emacs elisp build

7
推荐指数
1
解决办法
192
查看次数

比较Common Lisp和Gambit以及它们的库访问和对象系统

我对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名代表的人,请你创建一个"开局"标签?:) 谢谢乔纳斯!

lisp scheme common-lisp clos gambit

6
推荐指数
2
解决办法
1700
查看次数

python 方法中的静态变量

在 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成员变量SomeClassSomeClass然而,该变量在方法之外确实没有用,所以如果可以的话,我更希望避免它弄乱命名空间。

python methods static static-variables

5
推荐指数
1
解决办法
9482
查看次数

我可以在命令行上将配置文件直接传递给 tmuxinator 吗?

我是 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 ?

tmux tmuxinator

5
推荐指数
1
解决办法
1191
查看次数