如何对图像的所有像素值求和 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。
我想对图像的所有像素值求和 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。