如何解决Python skimage.transform.resize
我遇到了一些我不明白的麻烦,我正在尝试调整图像大小以将占用的内存减少到 1Mo 并保持原来的高/宽比例。
这是我的代码:
import skimage
from skimage.io import imread,imsave
from skimage.transform import resize
import matplotlib.pyplot as plt
import numpy as np
#Original image
croa = imread("https://gitlab.emse.fr/gavet/mooc_ti_data/-/raw/master/croatie.jpg?inline=false")
def s2(s0): #function to calculate the height to keep the original ratio
i = croa.shape[0]
j = croa.shape[1]
ratio = j/i
return int(ratio * s0)
def count(image): #function to count the memory taken by the image
if image.shape != (0,):
res = 1
for i in range(len(image.shape)):
res = res * image.shape[i]
return res
else:
return 0
def distance(s0): #function to calculate how far I am from 1Mo.
bis = resize(croa,(s0,s2(s0),3),anti_aliasing=True)
no = count(bis)
return no-10**6
def my_resize(image):
s0 = croa.shape[0]
begin= 200
end= s0
epsilon = 1
my_distance = distance(begin)
follow = [0]
i = 0
while abs(my_distance) > epsilon:
s = (begin + end)//2
follow.append(s)
i = i+1
if follow[i-1]==follow[i]:
a = resize(croa,(s,s2(s),anti_aliasing=True)
plt.imshow(a)
plt.show()
return a
print(s)
my_distance = distance(s)
if my_distance >0:
end = s
else:
begin = s
return s
这是我得到的错误,我尝试使用和不使用 anti_aliasing
。
---------------------------------------------------------------------------
Traceback (most recent call last)
<ipython-input-11-b8f1eaf3fb1e> in <module>
1 # Test visible
2 import numpy.testing as tests
----> 3 I2 = redimensionne_croatie()
4 assert(isinstance(I2,np.ndarray))
5 tests.assert_equal(I2.dtype,np.uint8)
<ipython-input-10-335574f23646> in redimensionne_croatie()
26
27 if suivi[i-1]==suivi[i]:
---> 28 a = resize(croa,anti_aliasing=True)
29 plt.imshow(a)
30 plt.show()
/opt/conda/lib/python3.8/site-packages/skimage/transform/_warps.py in resize(image,output_shape,order,mode,cval,clip,preserve_range,anti_aliasing,anti_aliasing_sigma)
145 "documentation of numpy.pad for more info.")
146
--> 147 image = ndi.gaussian_filter(image,anti_aliasing_sigma,148 cval=cval,mode=ndi_mode)
149
/opt/conda/lib/python3.8/site-packages/scipy/ndimage/filters.py in gaussian_filter(input,sigma,output,truncate)
339 if len(axes) > 0:
340 for axis,mode in axes:
--> 341 gaussian_filter1d(input,axis,342 mode,truncate)
343 input = output
/opt/conda/lib/python3.8/site-packages/scipy/ndimage/filters.py in gaussian_filter1d(input,truncate)
258 # Since we are calling correlate,not convolve,revert the kernel
259 weights = _gaussian_kernel1d(sigma,lw)[::-1]
--> 260 return correlate1d(input,weights,0)
261
262
/opt/conda/lib/python3.8/site-packages/scipy/ndimage/filters.py in correlate1d(input,origin)
131 '(len(weights)-1) // 2')
132 mode = _ni_support._extend_mode_to_code(mode)
--> 133 _nd_image.correlate1d(input,134 origin)
135 return output
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。