在python中用自己写的函数实现两幅图像的加减,要求不使用库函数,并且输出图像
时间: 2023-05-28 09:06:10 浏览: 85
自己写的图像库,主要用于传统图像处理算法
以下是一个简单的实现示例:
```python
from PIL import Image
def add_images(image1, image2):
"""将两幅图像相加"""
# 获取图像尺寸
width, height = image1.size
# 创建新的空白图像
new_image = Image.new("RGB", (width, height))
# 循环遍历每个像素,并将两幅图像像素值相加
for x in range(width):
for y in range(height):
# 获取像素点的RGB值
r1, g1, b1 = image1.getpixel((x, y))
r2, g2, b2 = image2.getpixel((x, y))
# 将像素点的RGB值相加
r = min(r1 + r2, 255)
g = min(g1 + g2, 255)
b = min(b1 + b2, 255)
# 将新图像的像素点设置为相加后的RGB值
new_image.putpixel((x, y), (r, g, b))
return new_image
def subtract_images(image1, image2):
"""将两幅图像相减"""
# 获取图像尺寸
width, height = image1.size
# 创建新的空白图像
new_image = Image.new("RGB", (width, height))
# 循环遍历每个像素,并将两幅图像像素值相减
for x in range(width):
for y in range(height):
# 获取像素点的RGB值
r1, g1, b1 = image1.getpixel((x, y))
r2, g2, b2 = image2.getpixel((x, y))
# 将像素点的RGB值相减
r = max(r1 - r2, 0)
g = max(g1 - g2, 0)
b = max(b1 - b2, 0)
# 将新图像的像素点设置为相减后的RGB值
new_image.putpixel((x, y), (r, g, b))
return new_image
# 加载两幅图像
image1 = Image.open("image1.jpg")
image2 = Image.open("image2.jpg")
# 将两幅图像相加,并保存为新图像
new_image = add_images(image1, image2)
new_image.save("add_image.jpg")
# 将两幅图像相减,并保存为新图像
new_image = subtract_images(image1, image2)
new_image.save("subtract_image.jpg")
```
在上面的示例中,我们使用了Python的PIL库来加载和保存图像。我们自己编写了两个函数来实现图像加减操作。在这些函数中,我们使用了循环来遍历每个像素,并计算出相应的加或减的结果。最后,我们使用`putpixel`函数来设置新图像的像素点。
阅读全文