from PIL import Image img = Image.open("red1.jpg") lab_img = img.convert("LAB") l, a, b = lab_img.split() a = a.point(lambda i: int(i * 0.5)) a = a.contrast(1.5) lab_img = Image.merge("LAB", (l, a, b)) rgb_img = lab_img.convert("RGB") rgb_img.save("red3.jpg")报错AttributeError: contrast
时间: 2023-11-03 10:04:12 浏览: 39
这个错误是因为 `PIL` 库中的 `Image` 对象没有 `contrast` 属性。你可以尝试使用 `ImageEnhance` 模块中的 `Contrast` 类来增加图像的对比度。具体的代码如下所示:
```python
from PIL import Image, ImageEnhance
img = Image.open("red1.jpg")
lab_img = img.convert("LAB")
l, a, b = lab_img.split()
a = a.point(lambda i: int(i * 0.5))
enhancer = ImageEnhance.Contrast(a)
a = enhancer.enhance(1.5)
lab_img = Image.merge("LAB", (l, a, b))
rgb_img = lab_img.convert("RGB")
rgb_img.save("red3.jpg")
```
这段代码将图像转换为 `LAB` 颜色空间,然后对 `a` 通道进行了亮度减半的处理,并使用 `ImageEnhance.Contrast` 类来增加对比度。最后将图像转换回 `RGB` 颜色空间并保存。
相关问题
from PIL import Image img = Image.open("red1.jpg") lab_img = img.convert("LAB") l, a, b = lab_img.split() a = a.point(lambda i: i * 0.5) a = a.contrast(1.5) lab_img = Image.merge("LAB", (l, a, b)) rgb_img = lab_img.convert("RGB") rgb_img.save("red3.jpg")报错TypeError: integer argument expected, got float
这个错误通常是由于在调用 point() 方法时,该方法的 lambda 函数返回一个 float 类型的值,而 PIL 库只接受整型参数。你可以将 lambda 函数中的返回值强制转换为整型即可。例如,可以将 `lambda i: i * 0.5` 改为 `lambda i: int(i * 0.5)`。
修改后的代码如下:
```python
from PIL import Image
img = Image.open("red1.jpg")
lab_img = img.convert("LAB")
l, a, b = lab_img.split()
a = a.point(lambda i: int(i * 0.5))
a = a.contrast(1.5)
lab_img = Image.merge("LAB", (l, a, b))
rgb_img = lab_img.convert("RGB")
rgb_img.save("red3.jpg")
```
运行这段代码,就可以对 `red1.jpg` 图像进行处理,并将处理后的图像保存为 `red3.jpg`。
from PIL import Image img = Image.open('data/train.jpg') img.show()展示一段时间后自己关闭了
是的,当你运行 `img.show()` 时,它会打开一个外部应用程序来显示图像。你可以手动关闭该应用程序或等待一段时间后,它会自动关闭。如果你想在代码运行时关闭图像,可以使用 `img.close()` 方法。例如:
```
from PIL import Image
img = Image.open('data/train.jpg')
img.show()
img.close()
```
这将在图像显示一段时间后自动关闭它。