簡體   English   中英

如何對圖像的所有像素值求和 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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM