相关疑难解决方法(0)

Numpy - 阵列vs asarray

Numpy array()asarray()功能有什么区别?你什么时候应该使用一个而不是另一个?它们似乎为我能想到的所有输入产生相同的输出.

python arrays numpy

255
推荐指数
5
解决办法
9万
查看次数

使用Python/PIL比较(类似)图像

我正在尝试使用Python 2.6和PIL 计算两个图像的相似度(读取:Levenshtein距离).

我计划用python-levenshtein库进行快速比较.

主要问题:

比较图像的好策略是什么?我的想法是这样的:

  • 转换为RGB(透明 - >白色)(或者转换为单色?)
  • 将较小的一个放大到较大的一个
  • 将每个通道(=唯一通道,如果转换为单色)转换为序列(项值=像素的颜色值)
  • 计算两个序列之间的Levenshtein距离

当然,这不会处理镜像图像,裁剪图像等情况.但是对于基本比较,这应该是有用的.

在某处记录了更好的策略吗?

编辑: Aaron H对速度问题是正确的.对于大于几百乘几百像素的图像,计算Levelshtein需要永远.但是,在我的示例中缩小到100x100和200x200之后的结果之间的差异小于1%,因此将最大图像大小设置为~100px左右可能是明智的...

编辑:感谢PreludeAndFugue,这个问题就是我想要的.

顺便说一句,Levenshtein的距离似乎可以优化,但它给了我一些非常糟糕的结果,也许是因为背景中有很多冗余元素.要看一些其他算法.

EIDT:均方根偏差和峰值信噪比似乎是另外两个选项,不是很难实现,看起来不是很昂贵.但是,似乎我需要某种上下文分析来识别形状等.

无论如何,感谢所有的链接,并指出朝向NumPy/SciPy的方向.

python fuzzy-logic fuzzy-comparison python-imaging-library

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

在更大的图像内找到图像的位置

所以我有一个图像让我们说small.png和一个更大的图像big.png.小图像在较大的图像中出现2次,我希望找到它的位置.

我尝试使用numpy和Image但是出错了

'JpegImageFile' object has no attribute '__getitem__'我之前有png格式,它给出了同样的错误.

是否有任何其他模块或方法来完成这一点.我对任何人开放.

现在抛出错误的代码是

import numpy
from PIL import Image
here = Image.open(r"/Users/vks/Desktop/heren.jpg")
big = Image.open(r"/Users/vks/Desktop/Settingsn.jpg")
print here,big
herear = numpy.asarray(here)
bigar = numpy.asarray(big)
herearx = herear.shape[0]
hereary = herear.shape[1]

bigarx = bigar.shape[0]
bigary = bigar.shape[1]

print herearx , hereary , bigarx, bigary

stopx = bigarx - herearx + 1
stopy = bigary - hereary + 1

for x in range(0, stopx):
    for y in range(0, stopy): …
Run Code Online (Sandbox Code Playgroud)

python numpy image-processing

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

我如何在python中缩放二维数组?

我不知道如何扩展二维数组.鉴于下面的数组,其尺寸为8x10,说我需要将其缩放到5x6 - 我在维基百科上寻找了具体的例子,但是在矩阵数学中没有多少基础我有点迷失.如果有人能指出我正确的方向,我真的很感激!

[
 [0, 0, 1, 1, 1, 1, 0, 0],
 [0, 1, 1, 1, 1, 1, 1, 0],
 [0, 1, 0, 0, 0, 1, 1, 1],
 [0, 0, 0, 0, 0, 0, 1, 1],
 [0, 0, 1, 1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1, 1, 1, 1],
 [1, 1, 0, 0, 0, 0, 1, 1],
 [1, 1, 0, 0, 0, 1, 1, 1],
 [1, 1, 1, 1, 1, 1, 1, 1],
 [0, 1, 1, 1, …
Run Code Online (Sandbox Code Playgroud)

python matrix

4
推荐指数
1
解决办法
8917
查看次数

将PIL图像转换为numpy数组

我想将PIL图像转换为numpy数组.Numpy的asarray功能只是将图像放在一个0维数组中.

(Pdb) p img
<PIL.Image._ImageCrop image mode=RGB size=1024x0 at 0x106953560>
(Pdb) img.getdata()
<ImagingCore object at 0x104c97b10>
(Pdb) np.asarray(img.getdata())
array([], dtype=float64)
(Pdb) np.asarray(img)
array(<PIL.Image._ImageCrop image mode=RGB size=1024x0 at 0x106953560>, dtype=object)
(Pdb) np.asarray(img).shape
()
(Pdb) np.asarray(img, np.uint8)
*** SystemError: error return without exception set
Run Code Online (Sandbox Code Playgroud)

关于类似SO问题的解决方案不起作用.

python numpy python-imaging-library

0
推荐指数
1
解决办法
1717
查看次数