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
时间: 2023-11-06 14:05:41 浏览: 76
PIL.Image.open和cv2.imread的比较与相互转换的方法
5星 · 资源好评率100%
这个错误通常是由于在调用 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`。
阅读全文