将灰度图像以及真彩色图像转换为负片 使用python
时间: 2024-09-07 12:03:45 浏览: 21
将灰度图像和真彩色图像转换成负片通常涉及调整每个像素值,使其相对于原图的255取反。对于灰度图像,每个像素只有单一的强度值,转换很简单;而对于真彩色图像,你需要对每个通道(RGB)分别处理。
**灰度图像转换:**
```python
from PIL import Image
def grayscale_negative(image_path):
img = Image.open(image_path)
# 转换为灰度
gray_img = img.convert('L')
# 对灰度值取反
inverted_gray = 255 - gray_img.point(lambda x: 255 if x != 0 else 0) # 或者直接 `inverted_gray = 255 - gray_img`
inverted_gray.save("negative_gray.jpg")
```
**真彩色图像转换:**
```python
def color_negative(image_path):
img = Image.open(image_path)
width, height = img.size
negative_image = Image.new('RGB', (width, height), "white") # 创建新空白图片,白色作为背景
for i in range(width):
for j in range(height):
r, g, b = img.getpixel((i, j)) # 获取像素值
# 对红、绿、蓝通道取反
inverted_r, inverted_g, inverted_b = 255 - r, 255 - g, 255 - b
if inverted_r == 255 and inverted_g == 255 and inverted_b == 255:
inverted_r, inverted_g, inverted_b = 0, 0, 0 # 避免全黑变为全白
negative_image.putpixel((i, j), (inverted_r, inverted_g, inverted_b))
negative_image.save("negative_color.jpg")
```
运行上述函数,你会得到相应的负片图像文件。