Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Numpy调整图像大小_Python_Numpy_Multidimensional Array - Fatal编程技术网

Python Numpy调整图像大小

Python Numpy调整图像大小,python,numpy,multidimensional-array,Python,Numpy,Multidimensional Array,我想拍摄一张图像,改变图像的比例,而它是一个numpy数组。 我想使用本机NumPy函数,不带PIL、cv2、SciPy等 现在我有这个: from copy import copy import numpy as np from scipy import misc img = misc.face() # racoon from SciPy(np.ndarray) img2 = copy(img) # copy of racoon, because misc.face() is Desc

我想拍摄一张图像,改变图像的比例,而它是一个numpy数组。 我想使用本机NumPy函数,不带PIL、cv2、SciPy等

现在我有这个:

from copy import copy
import numpy as np
from scipy import misc


img = misc.face()  # racoon from SciPy(np.ndarray)
img2 = copy(img)  # copy of racoon, because misc.face() is Descriptor(?)
img2.shape()  # (768, 1024, 3)
我需要的形状=(30724096,3)

我可以很容易地用枕头

CONVERT_IMAGE = Image.fromarray(img.astype('uint8'), 'RGB')
CONVERT_IMAGE = CONVERT_IMAGE.resize((4096, 3072), Image.NEAREST)

IMAGE_AS_ARRAY = np.asarray(CONVERT_IMAGE)
IMAGE_AS_ARRAY.shape  # 3072 4096 3
但是我真的需要只使用NumPy函数,而不使用其他lib


你能帮我吗?我在NumPy和3D阵列方面非常弱

仅限于使用某些比例因子进行整整数放大,并且没有实际插值,您可以使用两次来获得所描述的结果:

将numpy导入为np
#带形状的原始图像(4、3、3)
img=np.random.randint(0,255,(4,3,3),dtype=np.uint8)
#整整数放大的比例因子
n=4
#实际放大(结果为某些具有形状(16、12、3)的图像)
img_up=np.repeat(np.repeat(img,n,轴=0),n,轴=1)
#输出
打印(img[:,:,1],“\n”)
打印(img_up[:,:,1])
以下是一些输出:

[[148 242 171]
[247  40 152]
[151 131 198]
[ 23 185 144]] 
[[148 148 148 148 242 242 242 242 171 171 171 171]
[148 148 148 148 242 242 242 242 171 171 171 171]
[148 148 148 148 242 242 242 242 171 171 171 171]
[148 148 148 148 242 242 242 242 171 171 171 171]
[247 247 247 247  40  40  40  40 152 152 152 152]
[247 247 247 247  40  40  40  40 152 152 152 152]
[247 247 247 247  40  40  40  40 152 152 152 152]
[247 247 247 247  40  40  40  40 152 152 152 152]
[151 151 151 151 131 131 131 131 198 198 198 198]
[151 151 151 151 131 131 131 131 198 198 198 198]
[151 151 151 151 131 131 131 131 198 198 198 198]
[151 151 151 151 131 131 131 131 198 198 198 198]
[ 23  23  23  23 185 185 185 185 144 144 144 144]
[ 23  23  23  23 185 185 185 185 144 144 144 144]
[ 23  23  23  23 185 185 185 185 144 144 144 144]
[ 23  23  23  23 185 185 185 185 144 144 144 144]]
----------------------------------------
系统信息
----------------------------------------
平台:Windows-10-10.0.16299-SP0
Python:3.8.5
努比:1.19.2
----------------------------------------

numpy
不做那种大小调整。它需要某种插值,这是图像库开发的。@hpauji tnx for ur anwer,但我在Internet上的一些资源中发现numpy图像大小降级。但是我找不到任何图像大小的扩展。您可以切掉一部分值,或者如答案所示复制值。但是图像软件可以做更复杂的调整大小-平均值,平滑图像等等。不,汉斯,我不能这样做。第三块是RGB颜色,第三块的长度必须是3,不是12。谢谢你的回答。在我的解决方案中,第三维度仍然是
3
?你从
(768,1024,3)升级了吗
(30724096,3)
,如果我从
(7681024,3)
开始,我也会这样做。另外,请注意,我只输出一个通道的最终结果-为了可读性。