2024-07-18|閱讀時間 ‧ 約 24 分鐘

[Python]使用NumPy 進行影像黑白反轉


在某些特殊情況下,需要將圖片進行黑白反轉,例如Tesseract(OCR辨識引擎)就有建議黑底白字的狀況下辨識率較高。

本文將使用 NumPy 進行黑白影像反轉,並顯示反轉前後的影像。


成果顯示

圖片黑白反轉


程式碼範例

import cv2
import numpy as np

# 讀取影像(灰階模式)
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)

# 黑白反轉
inverted_image = 255 - image

# 顯示原影像和反轉後的影像
cv2.imshow('Original Image', image)
cv2.imshow('Inverted Image', inverted_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

詳細說明

  1. 讀取影像
    image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
    使用 OpenCV 的 cv2.imread 函數以灰階模式讀取影像。
    圖像在使用 OpenCV 讀取後會被存儲為一個 NumPy 陣列。每個陣列元素對應於圖像的一個像素值。
  2. 黑白反轉
    inverted_image = 255 - image
    使用 NumPy 對影像進行逐元素操作,將每個像素值變為其相對應的反轉值。如果原像素值是 255(白色),反轉後會變成 0(黑色)。
    當你執行 inverted_image = 255 - image 時,這是一個針對整個 NumPy 陣列的向量化操作。NumPy 會對陣列中的每個元素進行減法操作
  3. 顯示影像
    cv2.imshow('Original Image', image)
    cv2.imshow('Inverted Image', inverted_image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    使用 OpenCV 的 cv2.imshow 函數顯示原影像和反轉後的影像。


這樣處理後,無論原本的像素是什麼顏色,都會被準確地反轉。白色像素(255)變成黑色(0),黑色像素(0)變成白色(255),其他灰階值會相應變換。

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.