@@ -112,12 +112,13 @@ class Image:
112112 def __init__ (self , value , copy = True ):
113113 super ().__init__ ()
114114
115- if isinstance (value , Image ):
116- value = value ._value
117115 if copy :
118116 self ._value = self ._view (value )
119117 else :
120- self ._value = value
118+ if isinstance (value , Image ):
119+ self ._value = value ._value
120+ else :
121+ self ._value = value
121122
122123 if isinstance (value , Image ):
123124 self .properties = list (value .properties )
@@ -249,15 +250,15 @@ def __array_ufunc__(self, ufunc, method, *inputs, **kwargs):
249250
250251 outputs = []
251252 for result in results :
252- out = Image (result )
253+ out = Image (result , copy = False )
253254 out .merge_properties_from (inputs )
254255 outputs .append (out )
255256
256257 return tuple (outputs )
257258 elif method == "at" :
258259 return None
259260 else :
260- result = Image (results )
261+ result = Image (results , copy = False )
261262 result .merge_properties_from (inputs )
262263 return result
263264
@@ -288,7 +289,7 @@ def __array_function__(self, func, types, args, kwargs):
288289 if isinstance (out , (bool , int , float )):
289290 return out
290291
291- out = Image (out )
292+ out = Image (out , copy = False )
292293 for inp in args :
293294 if isinstance (inp , Image ):
294295 out .merge_properties_from (inp )
@@ -302,28 +303,32 @@ def __array__(self, *args, **kwargs):
302303 def to_tf (self ):
303304
304305 if isinstance (self ._value , np .ndarray ):
305- return Image (tensorflow .constant (self ._value )).merge_properties_from (self )
306+ return Image (
307+ tensorflow .constant (self ._value ), copy = False
308+ ).merge_properties_from (self )
306309
307310 if isinstance (self ._value , cupy .ndarray ):
308- return Image (tensorflow . constant ( self . _value . get ())). merge_properties_from (
309- self
310- )
311+ return Image (
312+ tensorflow . constant ( self . _value . get ()), copy = False
313+ ). merge_properties_from ( self )
311314
312315 return self
313316
314317 def to_cupy (self ):
315318
316319 if isinstance (self ._value , np .ndarray ):
317- return Image (cupy .array (self ._value )).merge_properties_from (self )
320+ return Image (cupy .array (self ._value ), copy = False ).merge_properties_from (
321+ self
322+ )
318323
319324 return self
320325
321326 def to_numpy (self ):
322327
323328 if isinstance (self ._value , cupy .ndarray ):
324- return Image (self ._value .get ()).merge_properties_from (self )
329+ return Image (self ._value .get (), copy = False ).merge_properties_from (self )
325330 if isinstance (self ._value , tensorflow .Tensor ):
326- return Image (self ._value .numpy ()).merge_properties_from (self )
331+ return Image (self ._value .numpy (), copy = False ).merge_properties_from (self )
327332
328333 return self
329334
@@ -332,7 +337,7 @@ def __getattr__(self, key):
332337
333338 def __getitem__ (self , idx ):
334339 idx = strip (idx )
335- out = Image (self ._value .__getitem__ (idx ))
340+ out = Image (self ._value .__getitem__ (idx ), copy = False )
336341 out .merge_properties_from ([self , idx ])
337342 return out
338343
0 commit comments