如何对图像的所有像素值求和 100?

How to sum 100 to all pixel values of an image?

我想对图像的所有像素值求和 100(限定 255 的限制),我该怎么做?我在网上找到的例子是这样的:

gray_2[np.where(gray == 0)] = 255

但在我的例子中,我想操纵所有这些..如何才能做到?

我想获取所有图像像素值并将 100 与该值相加。

如果你有一个数据类型,如果你给它加 100 就不会溢出(即 uint16),那么你可以简单地使用 numpy.add() 来做到这一点:

gray_2 = np.add(gray, 100)

虽然大多数图像都是 uint8 类型,因此您希望将输出限制在 0 到 255 的范围内。但是当您执行添加时,您希望使用不会溢出的数据类型。所以需要一些转换(astype()):

gray_2 = np.add(gray.astype(np.uint16), 100).clip(0, 255).astype(np.uint8)

简单地将所有像素加100?

yourimage += 100

对每个像素的每个通道加 100。这是最简单的表达方式。它在功能上等同于 np.add.

请注意,这可能会 溢出 。如果你想阻止这种情况,有两种选择。

选项 1:cv2.add。此 OpenCV 函数使用 饱和算法

yourimage = cv2.add(yourimage, 100)

选项 2:np.clip 和一些类型转换。假设您的源图像类型为 np.uint8:

yourimage = (yourimage.astype(np.uint16) + 100).clip(0, 255).astype(np.uint8)

转换为 uint16,它可以在不换行的情况下保存这些值,然后裁剪到 0..255 范围内,然后转换回 uint8。