小编en_*_*ght的帖子

如何使用openCV对模糊数字进行分类

我想从这种图片中捕捉数字.

在此输入图像描述

我尝试从以下链接进行多尺度匹配.

http://www.pyimagesearch.com/2015/01/26/multi-scale-template-matching-using-python-opencv/

我想知道的只是红色数字.但问题是,openCV识别/匹配模板的红色数字模糊.是否有其他可能的方法来检测黑色背景上的这个红色数字?

python opencv edge-detection number-recognition

21
推荐指数
1
解决办法
1786
查看次数

在没有If-Statements的情况下在Java中将Boolean转换为Integer

我想知道是否有办法将布尔值转换为int而不使用if语句(以免破坏管道).例如,我可以写

int boolToInt( boolean b ){
  if ( b )
    return 1
  return 0
Run Code Online (Sandbox Code Playgroud)

但是我想知道是否有办法在没有if语句的情况下完成它,就像Python一样

bool = True 
num = 1 * ( bool )
Run Code Online (Sandbox Code Playgroud)

我也认为你可以做到

boolean bool = True;
int myint = Boolean.valueOf( bool ).compareTo( false );
Run Code Online (Sandbox Code Playgroud)

但是这会创建一个额外的对象,所以它真的很浪费,我发现它甚至比if语句方式更慢(这不一定是低效的,只有一个弱点).

java integer casting if-statement boolean

19
推荐指数
3
解决办法
6万
查看次数

为什么 plus-equals 对列表和字典有效?

使用__iadd__符号将字典添加到列表似乎将字典的键添加为列表中的元素。为什么?例如

a = []
b = {'hello':'world'}
a += b
>> a now stores ['hello']
Run Code Online (Sandbox Code Playgroud)

集合上的plus-equals 文档对我来说并不意味着这应该发生:

例如,要执行语句 x += y,其中 x 是具有__iadd__() 方法的类的实例,x.__iadd__(y)被调用。如果 x 是一个没有定义__iadd__()方法的类的实例,x.__add__(y)并且y.__radd__(x)被考虑,就像评估x + y

但是,从逻辑上讲,两者

a + b # 类型错误异常

b + a # 类型错误异常

没有定义。此外,b+=a也会引发 TypeError。我在源代码中没有看到任何可以解释事物的特殊实现,但我不能 100% 确定在哪里查看。

我发现的关于 SO 的最接近的问题是this one,询问字典上的 += ,但这只是询问自身的数据结构。这个有一个关于列表自添加的有希望的标题,但它声称“ __add__”是在幕后应用的,不应该在列表和字典之间定义。

我最好的猜测是__iadd__调用了在此处定义的 …

python dictionary list operator-overloading

13
推荐指数
1
解决办法
1115
查看次数

最大化Java堆空间

我试图在Java中使用非常大的方形矩阵,大约n = 1e6或更多.矩阵不是稀疏的,所以我没有看到很多方法将它们表示为2D数组,这需要n ^ 2*sizeof(int)位的内存.显然,即使添加编译器标志以用作我的机器允许的大堆,我也会遇到堆溢出错误.

我愿意为了这个问题而假设我拥有完美的计算机(无限制的RAM等),尽管实际上我在64位机器上有16 GB的RAM.似乎我的机器只是如此相关,因为我受JVM的限制而不是我的实际硬件(因为JVM不能拥有比我的物理机更多的内存).

我理解(并且引用,例如,在这里制作一个非常大的Java数组),Java阵列甚至在理论上也不能比用于索引的MAX_INT大.

我的问题是:有没有办法从JVM堆中哄骗额外的内存

据我所知,如果有,他们可能不会给我更多信息.

例如

在C中,我可以声明静态常量变量,并将它们移动到代码的数据部分,这将比堆有更多的空间,远远超过堆栈(存储的静态变量在哪里(在C/C++中)?) .

在Java中,似乎即使我将变量复制到"数据"部分,该值也会进入java中的主堆 静态分配 - 堆,堆栈和永久生成,这意味着我已成功移动一个完整的字节堆(耶!)

我的解决方案

我的"解决方案"并不是真正的解决方案.我创建了一个简单的数据结构,它使用RandomFileAccess io过程来替换对外部文件的读写的数组访问.它仍然是恒定时间访问,但我们从Java最快的操作之一转到非常非常慢的过程(尽管我们可以同时从文件中提取"缓存"行,这使得该过程非常快速).好主意?

不是我的问题

我不是问如何在java的最大数组大小之上创建一个数组.这是不可能的.这些是嵌套数组 - 单个n大小的数组很好,其中n个引起问题.

我不是问这个如何处理"java.lang.OutOfMemoryError:Java堆空间"错误(64MB堆大小).垃圾收集是不相关的 - 我甚至无法让阵列更加担心何时被删除.

我也不能使用迭代器(我认为),否则这将是一种可能性; 像矩阵乘法这样的函数需要能够直接索引

注意:Java不是在非常大的矩阵上进行操作的正确语言.我最好使用算盘.但我在这里,这是我无法控制的.

java memory-management

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

Python 2,在简单的情况下映射不等同于列表推导; 长度依赖

在python 2中,内置函数map似乎调用__len__时长度被覆盖.这是否正确 - 如果是这样,为什么我们计算迭代的长度来映射?Iterables不需要覆盖长度(例如),并且即使长度没有被iterable预定义,map函数也能工作.

地图在这里定义; 它确实指定在传递多个iterables的情况下存在与长度相关的功能.然而,

  • 我对只传递一个iterable的情况感兴趣
  • 即使传递了多个迭代(不是我的问题),显然检查长度似乎是一个奇怪的设计选择,而不是只是迭代直到你用完然后返回 None

我因为根据几个很关注1 2极高upvoted的问题,

map(f, iterable)

基本上相当于:

[f(x) for x in iterable]

但我遇到了一些简单的例子.

例如

class Iterable:

    def __iter__(self):
        self.iterable = [1,2,3,4,5].__iter__()
        return self

    def next(self):
        return self.iterable.next()

   #def __len__(self):
   #     self.iterable = None
   #    return 5


def foo(x): return x

print( [foo(x) for x in Iterable()] )
print( map(foo,Iterable()) )
Run Code Online (Sandbox Code Playgroud)

表现得如此,但如果你取消超载的话len,它就不会.

在这种情况下,它会引发AttributeError,因为iterable是None.虽然单位行为是愚蠢的,但我认为在len的规范中没有要求不变性 …

python python-2.x

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

将String转换为Number,Java

编辑:澄清将任何有效数字编码从字符串转换为数字

对于所有可接受的整数格式,特别是在Integer.parseInt下抛出NumberFormatException的整数格式,如何将字符串转换为数字(例如仅为整数).例如,代码

...
int i = 0xff;
System.out.println(i);
String s = "0xff";
System.out.println( Integer.parseInt(s) );
....
Run Code Online (Sandbox Code Playgroud)

将在第四行抛出NumberFormatException,即使该字符串显然是十六进制整数的有效编码.我们可以假设我们已经知道编码是一个有效数字,比如通过对正则表达式进行检查.检查溢出会很好(比如Integer.parseInt会这样做),但如果必须将其作为一个单独的步骤完成,那也没关系.

我可以遍历每个数字并手动计算复合数,但这很难.有没有更好的办法?

编辑:很多人都在回答十六进制,这很好,但并不完全是我所要求的(这是我的错,我以十六进制为例).我想知道是否有办法解码所有有效的java数字.Long.decode绝对非常适合捕捉十六进制,但它失败了

222222L
Run Code Online (Sandbox Code Playgroud)

这是一个完全有效的长期.我是否必须分别捕捉每种不同的数字格式?我假设你使用正则表达式来判断它是什么类型的数字,即区分浮点数,整数等.

java string numbers

5
推荐指数
2
解决办法
2781
查看次数

在运行时Java中更改枚举

有什么方法可以向Java中的内置枚举类添加元素?

我的问题类似于Java能否在运行时添加和删除枚举元素,但该问题似乎旨在构建自己的枚举,然后对其进行修改。我假设存在无法更改的现有枚举,例如

enum Days{ MONDAY, TUESDAY, WEDNESDAY }
Run Code Online (Sandbox Code Playgroud)

我想在此添加星期四,星期五等。因此,不幸的是,关于如何使用接口来实现我的目标的建议,或比枚举更有效的其他方法的建议,在这里不适用。

据我了解,枚举是隐式最终的,因此无法扩展它并向其中添加更多元素。它具有专用字段,但看来我可以使用反射来访问这些字段-即使我不能添加一个新的专用字段,也可以更改一个专用字段,例如,将星期一更改为星期四?

编辑:澄清情况

人们建议在将代码编译到程序中之前先对其进行更改。我的代码是我无法更改的更大项目的一部分;包含枚举的类由较大的程序加载,然后我的类才能访问它。到那时,我想将缺少的元素添加到枚举中。字节码操作仍然是要走的路吗?

java enums runtime

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

带有条目的 Tkinter 列表框

有没有办法让 Tkinter 列表框的项目成为条目小部件?结果是您可以动态修改列表框条目中的文本。如果您的列表框看起来像:

 --------
| Apples  |
| Pears   |
| Oranges |
 ---------
Run Code Online (Sandbox Code Playgroud)

那么您可能希望能够点击苹果并编写一些任意文本 - 然后您可以绑定 Enter 键,例如,根据新文本触发功能。

python listbox tkinter tkinter-entry

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