小编tie*_*iDE的帖子

图像为numpy-array:JPG与PNG

我的系统:Mac OS X 10.7
Python 2.7.1
NumPy 1.5.1版

我的代码:

image = openImage(fileDir)  
print image  
image = np.asarray(image)  
print image
Run Code Online (Sandbox Code Playgroud)

如果我运行这个:

python main.py 1010.png
Run Code Online (Sandbox Code Playgroud)

输出是:

<PIL.PngImagePlugin.PngImageFile image mode=RGB size=10x10 at 0x10A835368>  
[[[226 226 226] ...    `
Run Code Online (Sandbox Code Playgroud)

如果我运行这个:

python main.py google.jpg 
Run Code Online (Sandbox Code Playgroud)

输出是:

<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=488x640 at 0x10140B368>  
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=488x640 at 0x10140B368>
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚为什么numpy可以转换png但不能在jpg上做,为什么?我怎么解决这个问题?

编辑:

好的尝试过

image.show()
Run Code Online (Sandbox Code Playgroud)

并得到以下错误消息:

IOError: decoder jpeg not available
Run Code Online (Sandbox Code Playgroud)

我用这个页面提供的信息解决了这个问题:http:
//mariz.org/blog/2007/01/26/mac-os-x-decoder-jpeg-not-available/

python png jpeg numpy python-imaging-library

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

Python scipy.numpy.convolve和scipy.signal.fft包含不同的结果

我有2个阵列(G和G_).它们具有相同的形状和大小,我想对它们进行卷积.我找到了numpy.convolve和fftconvolve.我的代码就像:

foldedX = getFoldGradientsFFT(G, G_)
foldedY = getFoldGradientsNumpy(G, G_)

def getFoldGradientsFFT(G, G_):
    # convolve via scipy fast fourier transform  
    X =signal.fftconvolve(G,G_, "same)
    X*=255.0/numpy.max(X);
    return X

def getFoldGradientsNumpy(G, G_):
    # convolve via numpy.convolve
    Y = ndimage.convolve(G, G_)
    Y*=255.0/numpy.max(Y);
    return Y
Run Code Online (Sandbox Code Playgroud)

但结果却不尽相同.结果如:Numpy.concolve()

[  11.60287582    3.28262652   18.80395211   52.75829556   99.61675945 
147.74124258  187.66178244  215.06160439  234.1907606   229.04221552]
Run Code Online (Sandbox Code Playgroud)

scipy.signal.fftconvolve:

[ -4.88130620e-15   6.74371119e-02   4.91875539e+00   1.94250997e+01
3.88227012e+01   6.70322921e+01   9.78460423e+01   1.08486302e+02
1.17267015e+02   1.15691562e+02]
Run Code Online (Sandbox Code Playgroud)

我认为结果应该是相同的,即使这两个函数用不同的程序进行卷积?!


我忘了提一下,我想要卷积2个二维数组:S数组:

G = array([[1,2],[3,4]])
G_ = array([[5,6],[7,8]])
Run Code Online (Sandbox Code Playgroud)

代码

def getFoldGradientsFFT(G, G_):
    X =signal.fftconvolve(G,G_,"same")
    X=X.astype("int")
    X*=255.0/np.max(X);
    return …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy

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

标签 统计

numpy ×2

python ×2

jpeg ×1

png ×1

python-imaging-library ×1

scipy ×1