Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.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 神经网络中的变形状、高尺度、图像阵列_Python_Computer Vision_Conv Neural Network_Object Detection_Image Resizing - Fatal编程技术网

Python 神经网络中的变形状、高尺度、图像阵列

Python 神经网络中的变形状、高尺度、图像阵列,python,computer-vision,conv-neural-network,object-detection,image-resizing,Python,Computer Vision,Conv Neural Network,Object Detection,Image Resizing,我有一个图像像素值数组,我想将其放大以输入我的神经网络。它是一个形状数组(28000,48,48,1)。这些是标准化的图像像素值,希望将其放大到更高的分辨率,以便输入到我的CNN中。数组看起来像这样 array([[[[-0.6098866 ], [-0.4592209 ], [-0.40325198], ..., [-0.7694696 ], [-0.90518403], [-0.951

我有一个图像像素值数组,我想将其放大以输入我的神经网络。它是一个形状数组(28000,48,48,1)。这些是标准化的图像像素值,希望将其放大到更高的分辨率,以便输入到我的CNN中。数组看起来像这样

array([[[[-0.6098866 ],
         [-0.4592209 ],
         [-0.40325198],
         ...,
         [-0.7694696 ],
         [-0.90518403],
         [-0.95160526]],

        [[-0.66049284],
         [-0.68162924],
         [-0.694159  ],

my
X\U列
y\U列
图像阵列的形状均为(28000,48,48,1)。我想将这28000个图像阵列放大或调整大小为75x75。请帮忙。我是否应该将数组转换回非规范化数组或图像,然后使用cv2进行高比例缩放?如何调整图像大小?

调整图像大小的一种简单方法是使用Python模块PIL(Python图像库),您可以使用
pip安装工具安装它。下面的示例演示如何调整单个图像的大小:

将numpy导入为np
从PIL导入图像

将matplotlib.pyplot作为plt导入 #开放图像 panda\u pil=Image.open(“panda.jpg”) 打印(np.数组(panda_pil.形状) # (613, 696, 3) panda_pil_resized=panda_pil.resize((75,75)) 打印(np.array(panda\u pil\u resized).shape) # (75, 75, 3) plt.imshow(np.array(panda_-pil_-resized)) plt.show()
您可以按如下方式下载熊猫图片:

导入urllib.request
panda_fname=“panda.jpg”
panda_url=”https://upload.wikimedia.org/wikipedia/commons/f/fe/Giant_Panda_in_Beijing_Zoo_1.JPG"
urllib.request.urlretrieve(panda\u url,panda\u fname)
要调整所有28000个图像的大小,一种方法是将其作为for循环中的预处理步骤,并将图像保存到numpy数组中

编辑:您可以在原始28000x2304图像数组中循环,并在
for
-循环中分别放大每个图像。要从
np.ndarray
对象中获取
PIL.Image
对象,您可以使用
PIL.Image.from_array
,如下所示(我刚刚生成了一个随机的高斯噪声数组,但它应该与您的图像相同):

将numpy导入为np
从PIL导入图像
从时间导入性能计数器
旧的宽度,旧的高度=48,48
新宽度,新高度=75,75
图像数量=28000
old\u image\u array=np.random.normal(大小=[num\u图像,old\u宽度*old\u高度])
新建图像数组=np.empty(形状=[num\u图像,新建宽度*新建高度])
打印(“开始转换…”)
t0=性能计数器()
#分别在每个图像上循环
对于范围内的i(num_图像):
#获取第i个图像并重塑
old_image=old_image_数组[i]。重塑(old_宽度,old_高度)
#转换为PIL.Image
old\u image\u pil=image.fromarray(old\u image)
#高分辨率
新图片大小=旧图片大小((新图片宽度,新图片高度))
#转换为numpy数组
new\u image=np.array(new\u image\u pil)
#重塑形状并存储在新的图像阵列中
新建图像\u数组[i]=新建图像。重塑(新建宽度*新建高度)
t1=性能计数器()
打印(“所用时间={.3f}s”。格式(t1-t0))
打印(旧\u图像\u数组.shape、新\u图像\u数组.shape)
控制台输出:

Starting conversion...
Time taken = 2.771 s
(28000, 2304) (28000, 5625)

也许有一种更有效的方法可以做到这一点,但这种方法很简单,如果您还不知道,可以使用一些有用的工具来了解它们(
PIL
是一个处理图像的好模块,请查看您是否想了解更多关于
PIL
).

调整图像大小的一种简单方法是使用Python模块PIL(Python图像库),您可以使用
pip安装工具安装它。下面的示例演示如何调整单个图像的大小:

将numpy导入为np
从PIL导入图像

将matplotlib.pyplot作为plt导入 #开放图像 panda\u pil=Image.open(“panda.jpg”) 打印(np.数组(panda_pil.形状) # (613, 696, 3) panda_pil_resized=panda_pil.resize((75,75)) 打印(np.array(panda\u pil\u resized).shape) # (75, 75, 3) plt.imshow(np.array(panda_-pil_-resized)) plt.show()
您可以按如下方式下载熊猫图片:

导入urllib.request
panda_fname=“panda.jpg”
panda_url=”https://upload.wikimedia.org/wikipedia/commons/f/fe/Giant_Panda_in_Beijing_Zoo_1.JPG"
urllib.request.urlretrieve(panda\u url,panda\u fname)
要调整所有28000个图像的大小,一种方法是将其作为for循环中的预处理步骤,并将图像保存到numpy数组中

编辑:您可以在原始28000x2304图像数组中循环,并在
for
-循环中分别放大每个图像。要从
np.ndarray
对象中获取
PIL.Image
对象,您可以使用
PIL.Image.from_array
,如下所示(我刚刚生成了一个随机的高斯噪声数组,但它应该与您的图像相同):

将numpy导入为np
从PIL导入图像
从时间导入性能计数器
旧的宽度,旧的高度=48,48
新宽度,新高度=75,75
图像数量=28000
old\u image\u array=np.random.normal(大小=[num\u图像,old\u宽度*old\u高度])
新建图像数组=np.empty(形状=[num\u图像,新建宽度*新建高度])
打印(“开始转换…”)
t0=性能计数器()
#分别在每个图像上循环
对于范围内的i(num_图像):
#获取第i个图像并重塑
old_image=old_image_数组[i]。重塑(old_宽度,old_高度)
#转换为PIL.Image
old\u image\u pil=image.fromarray(old\u image)
#高分辨率
新图片大小=旧图片大小((新图片宽度,新图片高度))
#转换为numpy数组
new\u image=np.array(new\u image\u pil)
#重塑形状并存储在新的图像阵列中
新建图像\u数组[i]=新建图像。重塑(新建宽度*新建高度)
t1=性能计数器()
打印(“所用时间={.3f}s”。格式(t1-t0))
打印(旧\u图像\u数组.shape、新\u图像\u数组.shape)
控制台输出:

Starting conversion...
Time taken = 2.771 s
(28000, 2304) (28000, 5625)

也许有一种更有效的方法可以做到这一点,但这种方法很简单,如果你还不了解它们,可以使用有用的工具来了解它们(
PIL
是一个处理图像的好模块,看看你是否想了解更多关于
PIL
)。

有没有尝试过
scipy.misc.imresize()
skimresize a