小编Ish*_*mar的帖子

在Python中将3个单独的numpy数组合并为RGB图像

所以我有一组数据,我能够转换成R,G,B波段的单独numpy数组.现在我需要将它们组合起来形成RGB图像.

我试过'Image'来完成这项工作,但它需要'模式'来归因.

我试图做一个技巧.我会使用Image.fromarray()将数组带到图像,但默认情况下,当Image.merge需要合并"L"模式图像时,它会达到'F'模式.如果我在第一个位置将fromarray()中的数组属性声明为'L',则所有RGB图像都会失真.

但是,如果我保存图像,然后打开它们然后合并,它工作正常.图像以"L"模式读取图像.

现在我有两个问题.

首先,我不认为这是一种优雅的工作方式.所以,如果有人知道更好的方法,请告诉我们

其次,Image.SAVE无法正常工作.以下是我面临的错误:

In [7]: Image.SAVE(imagefile, 'JPEG')
----------------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

/media/New Volume/Documents/My own works/ISAC/SAMPLES/<ipython console> in <module>()

TypeError: 'dict' object is not callable
Run Code Online (Sandbox Code Playgroud)

请建议解决方案.

请注意,图像大小为4000x4000.

python numpy image image-processing

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

使用多处理/线程将numpy数组操作分解为块

我有一个定义的函数,它呈现一个MxN数组.该阵列非常庞大,因此我想使用该函数同时使用多处理/线程生成小型阵列(M1xN,M2xN,M3xN --- MixN.M1 + M2 + M3 + --- + Mi = M)并最终加入这些数组形成mxn数组.正如Boardrider先生正确地建议提供一个可行的例子,下面的例子将广泛传达我打算做的事情

import numpy as n
def mult(y,x):
    r = n.empty([len(y),len(x)])
    for i in range(len(r)):
        r[i] = y[i]*x
    return r
x = n.random.rand(10000)
y = n.arange(0,100000,1)
test = mult(y=y,x=x)
Run Code Online (Sandbox Code Playgroud)

随着系统的长度xy增加将需要越来越多的时间.对于这个例子,我想运行此代码,这样如果我有4个核心,我可以给工作,每个季度,即放弃工作来计算元素r[0],以r[24999]向第一核心,r[25000]r[49999]到第二核心,r[50000]r[74999]对第三个核心,r[75000]r[99999]到第4核心.最终将结果添加到一起,将它们附加到一个阵列r[0]r[99999].

我希望这个例子能说清楚.如果我的问题仍然不明确,请告诉我.

python arrays multithreading multiprocessing

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