小编Car*_*icz的帖子

在随机比例和翻译中识别相似的形状

在图形屏幕上寻找东西时,我目前对如何在图像中找到给定形状感到茫然.当然,图像中的形状可能具有不同的比例,并且将处于某个未知的x,y偏移处.

除了由不同比例产生的像素伪像之外,两个图像中也存在一点噪声,因此我需要一些容忍的搜索.

这是我要找的形象.

Farmerama框架

它应该显示在我的(双)屏幕缓冲区的屏幕转储中,大小约为3300 x 1200像素.我当然希望在浏览器窗口中找到它,但这些信息不是必需的.

这个练习的目的(到目前为止)是提出一个结果:

  • 是的,在我的屏幕上发现了木框(近似颜色和可能略微截断的形状)(或没有); 和
  • 游戏的客户区(框架内的黑色区域)从占据矩形(x1,y1)(x2,y2).

我希望能够很好地防止缩放和抖动引起的噪声.另一方面,我可以排除一些常见的CV挑战,例如旋转或非刚性.那个框架形状很容易被人类大脑辨认出来,对于一个专用的软件来说有多难?这是一个Adobe Flash应用程序,直到最近我才认为从游戏GUI中感知图像应该很容易.

我正在寻找能够找到x和y平移的算法,在该平移处,针和干草堆之间可能发生最大重叠,并且如果可能的话,不必通过一系列可能的比例因子进行迭代.理想情况下,算法可以以与尺度无关的方式抽象出图像的"形状".

我已经阅读了一些关于傅里叶变换的有趣事情来完成类似的事情:给定相同比例的目标图像,FFT和一些矩阵数学产生了较大图像中与搜索模式相对应的点.但我没有理论背景将其付诸实践,也不知道这种方法是否能够优雅地处理规模问题.帮助将不胜感激!

技术:我使用Clojure/Java进行编程,但可以使用其他语言的算法.我想我应该能够与遵循C调用约定的库接口,但我更喜欢纯Java解决方案.


你可能能够理解我为什么不回避呈现实际图像.这只是一个愚蠢的游戏,但屏幕阅读它的任务比我想象的要困难得多.

我显然能够对我的屏幕缓冲区进行详尽的搜索,以查找构成我的图像的像素(不包括黑色),甚至可以在一分钟内运行.但我的目标是使用一种与形状相匹配的技术来发现木制框架,而不管缩放和抖动可能产生的差异.

事实上,抖动是我在这个项目中遇到的许多挫折之一.我一直在努力通过边缘提取来提取一些有用的矢量,但边缘非常难以捉摸,因为任何给定区域的像素都具有广泛不一致的颜色 - 因此很难从局部抖动伪像中分辨真实边缘.我不知道这么简单的游戏会产生难以让软件感知的图形.

在开始寻找功能之前,我应该从本地平均像素开始吗?我应该通过丢弃像素颜色值的最低有效位来减少颜色深度吗?

我正在尝试使用纯Java解决方案(实际上是用Clojure/Java混合编程)所以我并不喜欢opencv(使用C代码安装.DLL或.so).请不要担心我选择的语言,学习经验对我来说比表演更有趣.

opencv fft image-processing image-recognition computer-vision

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

可以用该语言编写编程语言的第二个实现吗?

这个问题是我最近一直在思考的问题.编程语言可以用该语言编写,作为第二种实现吗?例如Java.是否可以使用java编程语言重写java编程语言?

抱歉,如果这是一个愚蠢的问题,但我需要知道!

GF

java programming-languages

7
推荐指数
4
解决办法
740
查看次数

什么是更好的性能:Jetty或Tomcat的生产需求?

我计划使用java/jsp安装在虚拟网络托管空间的Web应用程序
我非常了解tomcat,但我一直在阅读关于码头的小而快的
你从你对这两个体验的想法怎么想?
什么是更好的 ?
我将使用Nginx作为静态页面.

performance tomcat jetty

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

可以在Swing工作线程之外更改模型吗?

在"严肃"的Java GUI应用程序中,您将拥有许多GUI元素背后的模型:例如,DocumentModel支持a JEditorPaneListModel后面的JList.

我们总是被告知不要从Swing工作线程外部进行GUI更改,并给出SwingUtilities.invoke...()解决方法.好吧,我可以忍受!当直接更改GUI组件的属性时,它当然是必要的(并且运行良好).

理想情况下,我的大多数GUI可见更改都是模型,而不是JComponents.但是因为它们是GUI可见的,它们是否"算作"GUI变化?即改变事件和听众提供必要的解耦,还是需要包装模型更改invoke...()

对于Swing专业人士来说可能是老帽子,但是我无法找到任何明确说明这种或那种方式的参考文献.

java concurrency user-interface swing

6
推荐指数
1
解决办法
1100
查看次数

在Eclipse中运行我的应用程序花费了太多时间

每当我在eclipse中运行我的应用程序时,它就会开始构建,然后运行。由于我要进行数千个课程,因此每次构建都花费太多时间。我能知道原因吗,我该怎么做才能避免它?

java eclipse

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

用于XML验证的Eclipse代理设置

在(K)Ubuntu Linux 9.10下运行Eclipse 3.5(= Galileo).具有HTTP代理的企业环境.

我有我的Preferences | General | Network Connections所有设置HTTP,主机,端口Authentication required和凭据.

Eclipse在Eclipse启动时要求我输入主密码.所以我提供了我能想到的所有授权,但似乎还不够.

代理访问正常工作(并且没有烦恼),例如来自Internet的软件更新和SVN更新,但显然无法进行XML DTD验证.Eclipse会弹出一个对话框,显示我的代理主机并询问代理密码.我希望它能从我设置的代理凭证中获取此信息.这种情况经常发生,因此对我来说非常烦人.有什么办法可以减轻这种情况吗?

eclipse authentication proxy

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

在Clojure中执行动态绑定函数

我想在数据结构中预先存储一堆函数调用,然后在另一个函数中评估/执行它们.

这对于在命名空间级别定义的函数按计划工作defn(即使函数定义在我创建数据结构之后),但不适用于函数定义的函数let [name (fnletfn函数内部的函数.

这是我的小型自包含示例:

(def todoA '(funcA))
(def todoB '(funcB))
(def todoC '(funcC))
(def todoD '(funcD)) ; unused

(defn funcA [] (println "hello funcA!"))

(declare funcB funcC)

(defn runit []
    (let [funcB (fn [] (println "hello funcB"))]
    (letfn [(funcC [] (println "hello funcC!"))]
        (funcA)       ; OK
        (eval todoA)  ; OK
        (funcB)       ; OK
        (eval todoB)  ; "Unable to resolve symbol: funcB in this context" at line 2
        (funcC)       ; OK
        (eval todoC)  ; …
Run Code Online (Sandbox Code Playgroud)

binding eval clojure

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

皮条客我的Perl代码

我是一位经验丰富的开发人员,但不是Perl.我通常学习Perl来破解脚本,然后我再次忘记它直到下一次.因此,我正在寻找专业人士的建议.

这一次,我正在构建一系列数据分析脚本.大致简化,程序结构如下:

01 my $config_var = 999;

03 my $result_var = 0;

05 foreach my $file (@files) {
06   open(my $fh, $file);
07   while (<$fh>) {
08     &analyzeLine($_);
09   }
10 }

12 print "$result_var\n";

14 sub analyzeLine ($) {
15   my $line = shift(@_);
16   $result_var = $result_var + calculatedStuff;
17 }
Run Code Online (Sandbox Code Playgroud)

在现实生活中,有大约六个不同的config_vars和result_vars.

这些脚本主要区别于分配给config_vars 的值.主循环在每种情况下analyzeLine()都是相同的,并且将大致相同但可能有一些小的变化.

我可以通过制作此代码的N份副本来实现我的目的,并且在这里和那里进行小的改动; 但这严重违反了各种良好设计规则.理想情况下,我想编写一系列脚本,其中只包含一组config var初始化,然后是

do theCommonStuff;
Run Code Online (Sandbox Code Playgroud)

请注意,config_var(和它的兄弟姐妹)必须可用于公共代码,必须result_var和它的外观相似,在其analyzeLine()上进行一些计算.

我应该将"常用"代码打包到模块中吗?创建一个类?使用全局变量?

虽然不完全是代码高尔夫,但我正在寻找一个简单,紧凑的解决方案,这将允许我干,只为差异编写代码.我想我宁愿不从包含所有配置的巨大表中驱动代码,当然也不会使它适应使用数据库.

期待您的建议,谢谢!


更新 …

perl refactoring coding-style

4
推荐指数
2
解决办法
363
查看次数

从Java中的Calendar解析日期

我有以下功能

public static Date parseDate(String date, String format) throws ParseException
 {
         SimpleDateFormat formatter = new SimpleDateFormat(format);
         return formatter.parse(date);
 }
Run Code Online (Sandbox Code Playgroud)

我在我的代码中使用如下

Calendar eDate = Calendar.getInstance();
eDate.add(Calendar.DAY_OF_MONTH,10);
Date date = null;
  try {
   date = parseDate(eDate.getTime().toString(),"yyyy-MM-dd hh-mm-ss");
  } catch (ParseException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
Run Code Online (Sandbox Code Playgroud)

但它正在投掷 -

 java.text.ParseException: Unparseable date
Run Code Online (Sandbox Code Playgroud)

这里有什么问题?

java parsing calendar date

4
推荐指数
2
解决办法
3万
查看次数

打开带有相关程序的文件

我的表单上有SpeedButton,我希望它打开带有相关程序的avi文件.我试过Windows.winexec,但它似乎没有用.

delphi winapi

3
推荐指数
1
解决办法
5750
查看次数