请仿照“图像的四则运算”,自行完成-、*、/操作。
实现将彩色图片转化为黑白(灰度)图片。
import numpy as np
from PIL import Image
import numpy as np
from PIL import Image
class ImageObject:
def init(self,path = ""):
self.path = path
try:
self.data = np.array(Image.open(path))
except:
self.data = None
def __add__(self,other):
Image = ImageObject()
try:
Image.data = np.mod(self.data + other.data,255)
except:
Image.data = self.data
return Image
def __sub__(self,other):
Image = ImageObject()
try:
Image.data = np.mod(self.data - other.data,255)
except:
Image.data = self.data
return Image
def __mul__(self,factor):
Image = ImageObject()
try:
Image.data = np.mod(self.data * factor,255)
except:
Image.data = self.data
return Image
def __truediv__(self,factor):
Image = ImageObject()
try:
Image.data = np.mod(self.data // factor,255)
except:
Image.data = self.data
return Image
def saveImage(self,path):
try:
im = Image.fromarray(self.data)
im.save(path)
return True
except:
return False
a=ImageObject("earth.jpg")
b=ImageObject("gray.png")
(a+b).saveImage("result__add.png")
(a-b).saveImage("result__sub.png")
(a*b).saveImage("result__mul.png")
(a/b).saveImage("result__div.png")
乘除都需要传递因子参数,尝试这样调用类函数。
a = ImageObject("sample1.png")
b = ImageObject("gray.png")
a.__add__(b).saveImage("result__add.png")
a.__sub__(b).saveImage("result__sub.png")
a.__mul__(2).saveImage("result__mul.png")
a.__truediv__(2).saveImage("result__div.png")