使用 python-numpy 放大图像
Zoom in an Image using python-numpy
我正在尝试放大图像。
import numpy as np
from scipy.ndimage.interpolation import zoom
import Image
zoom_factor = 0.05 # 5% of the original image
img = Image.open(filename)
image_array = misc.fromimage(img)
zoomed_img = clipped_zoom(image_array, zoom_factor)
misc.imsave('output.png', zoomed_img)
剪辑缩放参考:
这不起作用并引发此错误:
ValueError: could not broadcast input array from shape
对此有任何帮助或建议
有没有办法在给定缩放系数的情况下缩放图像。问题是什么?
回溯:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/tornado/web.py", line 1443, in _execute
result = method(*self.path_args, **self.path_kwargs)
File "title_apis_proxy.py", line 798, in get
image, msg = resize_image(image_local_file, aspect_ratio, image_url, scheme, radius, sigma)
File "title_apis_proxy.py", line 722, in resize_image
z = clipped_zoom(face, 0.5, order=0)
File "title_apis_proxy.py", line 745, in clipped_zoom
out[top:top+zh, left:left+zw] = zoom(img, zoom_factor, **kwargs)
ValueError: could not broadcast input array from shape (963,1291,2) into shape (963,1291,3)
您在我的 中使用的 clipped_zoom
函数仅适用于单通道图像。
目前它对 "color" 维度以及输入数组的宽度和高度维度应用相同的缩放因子。 ValueError
的出现是因为 out
数组被初始化为与输入相同的通道数,但 zoom
的结果由于缩放因子而具有较少的通道。
为了使其适用于多通道图像,您可以将每个颜色通道分别传递给 clipped_zoom
并连接结果,或者您可以将元组而不是标量作为 zoom_factor
参数传递给scipy.ndimage.zoom
.
我已经使用后一种方法更新了我之前的回答,因此它现在适用于多通道图像和单色图像。
我正在尝试放大图像。
import numpy as np
from scipy.ndimage.interpolation import zoom
import Image
zoom_factor = 0.05 # 5% of the original image
img = Image.open(filename)
image_array = misc.fromimage(img)
zoomed_img = clipped_zoom(image_array, zoom_factor)
misc.imsave('output.png', zoomed_img)
剪辑缩放参考:
这不起作用并引发此错误:
ValueError: could not broadcast input array from shape
对此有任何帮助或建议 有没有办法在给定缩放系数的情况下缩放图像。问题是什么?
回溯:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/tornado/web.py", line 1443, in _execute
result = method(*self.path_args, **self.path_kwargs)
File "title_apis_proxy.py", line 798, in get
image, msg = resize_image(image_local_file, aspect_ratio, image_url, scheme, radius, sigma)
File "title_apis_proxy.py", line 722, in resize_image
z = clipped_zoom(face, 0.5, order=0)
File "title_apis_proxy.py", line 745, in clipped_zoom
out[top:top+zh, left:left+zw] = zoom(img, zoom_factor, **kwargs)
ValueError: could not broadcast input array from shape (963,1291,2) into shape (963,1291,3)
您在我的 clipped_zoom
函数仅适用于单通道图像。
目前它对 "color" 维度以及输入数组的宽度和高度维度应用相同的缩放因子。 ValueError
的出现是因为 out
数组被初始化为与输入相同的通道数,但 zoom
的结果由于缩放因子而具有较少的通道。
为了使其适用于多通道图像,您可以将每个颜色通道分别传递给 clipped_zoom
并连接结果,或者您可以将元组而不是标量作为 zoom_factor
参数传递给scipy.ndimage.zoom
.
我已经使用后一种方法更新了我之前的回答,因此它现在适用于多通道图像和单色图像。