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

閱讀時間約 2 分鐘


在某些特殊情況下,需要將圖片進行黑白反轉,例如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),其他灰階值會相應變換。

108會員
162內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
在影像辨識中,若遇到物件與背景難以分辨的狀況下,先做一下色彩分析,知道了色彩強度階層上的像素數,有助於了解後續需要做什麼處理,比較好分割出辨識物。 若想辨識的物件與背景的RGB值過於接近,也比較好說明此狀況,為什麼較難分割出物件。 成果呈現 第一張圖:左邊為原圖,右邊為分析結果的圖,用其他顏
接續上一邊,分割了螺絲與螺母的圖像,但分割後的結果,因為螺絲過於接近的關係,沒有切割乾淨,會有其他螺絲的頭或者身體,這樣會影響到後續量測。 [OpenCV應用][Python]擷取出螺絲或螺母的影像 本文主要是,如何去除掉不要的背景雜物。 下層為原先分割的圖,上層為去除背景雜物的圖。
此篇為上一篇文章的延伸,先辦別是螺絲還是螺母才擷取出影像。 [OpenCV應用][Python]利用findContours辨識螺絲還是螺母 因為可能會需要另外處理螺絲與螺母才可以準確地去做量測,所以第一步就是先分割出這兩種的圖像。
先上成果圖,如果是螺母的話就標註 is circle來區分。 簡單的用圖表加文字說明AOI辨識 在此文章的範例中: 影像前處理:色彩空間轉換(灰階) -> 二值化閥值處理 演算法:尋找輪廓 數值判斷:長,寬,面積,周長 圖片來源 程式碼 import cv2 import nu
常見的圖像銳利化方法: 銳化濾波器 增強對比度 Unsharp Masking
色差檢測在許多應用中非常重要,如印刷、織物、塗料等。色差的測量通常使用 CIEDE2000 色差公式來計算兩個顏色之間的差異。 本文將檢測以下織物圖,分析出兩者的色差 程式範例 流程: 先利用K-Means分群的方式,分割出主要顏色,在用delta_e_cie2000來檢測色差 主要安裝
在影像辨識中,若遇到物件與背景難以分辨的狀況下,先做一下色彩分析,知道了色彩強度階層上的像素數,有助於了解後續需要做什麼處理,比較好分割出辨識物。 若想辨識的物件與背景的RGB值過於接近,也比較好說明此狀況,為什麼較難分割出物件。 成果呈現 第一張圖:左邊為原圖,右邊為分析結果的圖,用其他顏
接續上一邊,分割了螺絲與螺母的圖像,但分割後的結果,因為螺絲過於接近的關係,沒有切割乾淨,會有其他螺絲的頭或者身體,這樣會影響到後續量測。 [OpenCV應用][Python]擷取出螺絲或螺母的影像 本文主要是,如何去除掉不要的背景雜物。 下層為原先分割的圖,上層為去除背景雜物的圖。
此篇為上一篇文章的延伸,先辦別是螺絲還是螺母才擷取出影像。 [OpenCV應用][Python]利用findContours辨識螺絲還是螺母 因為可能會需要另外處理螺絲與螺母才可以準確地去做量測,所以第一步就是先分割出這兩種的圖像。
先上成果圖,如果是螺母的話就標註 is circle來區分。 簡單的用圖表加文字說明AOI辨識 在此文章的範例中: 影像前處理:色彩空間轉換(灰階) -> 二值化閥值處理 演算法:尋找輪廓 數值判斷:長,寬,面積,周長 圖片來源 程式碼 import cv2 import nu
常見的圖像銳利化方法: 銳化濾波器 增強對比度 Unsharp Masking
色差檢測在許多應用中非常重要,如印刷、織物、塗料等。色差的測量通常使用 CIEDE2000 色差公式來計算兩個顏色之間的差異。 本文將檢測以下織物圖,分析出兩者的色差 程式範例 流程: 先利用K-Means分群的方式,分割出主要顏色,在用delta_e_cie2000來檢測色差 主要安裝
你可能也想看
Thumbnail
「設計不僅僅是外觀和感覺。設計是其運作的方式。」 — Steve Jobs 身為一個獨立文案,許多人會以為我們的生活只需要面對電腦,從無到有,用精巧的文字填滿空白的螢幕,呈現心目中獨具風格的作品。 ——有的時候可以如此,但其實這是我們夢寐以求的偶發日常。 更多的時候,白天的工作時間總被各種繁雜
Thumbnail
台股、美股近期明顯回檔,市場敘事發生改變,壞消息一樁接一樁出現,下一步該怎麼走呢?本文將探討近期的宏觀經濟事件,並分享個人的操作思考。
Thumbnail
PyInstaller 是一個強大的工具,可以將 Python 程式碼打包成獨立的可執行檔案,讓你的程式可以在沒有 Python 解釋器的情況下運行。這對於分享和分發你的 Python 應用程式非常有用。以下是使用 PyInstaller 的基本步驟:
使用Python的Threading模組設計一個能夠在背景待命的程式,並在等待5秒後自動結束。我們將使用執行緒來執行背景任務,並使用定時等待來控制程式的結束時間。這種方法適用於不依賴於特定按鍵事件的情況,而是在固定的時間後自動退出程式。
在這篇教學中,我們將介紹如何使用Python的openpyxl套件將資料寫入Excel文件。openpyxl是一個功能強大的函式庫,可以讓我們輕鬆地處理Excel文件。
在這篇教學中,我們將介紹如何使用Python的openpyxl模組來讀取Excel文件中的資料。openpyxl是一個功能強大的函式庫,可以讓我們輕鬆地處理Excel文件。
安裝 pyautogui 在開始之前,我們需要先安裝 pyautogui 模塊。
這篇教學文章將介紹如何使用 OpenAI 的 GPT-3 模型來建立一個簡單的聊天機器人。
安裝 pyautogui 在開始之前,我們需要先安裝 pyautogui 模塊。你可以在終端或命令提示字元中輸入以下命令來安裝它: 1.移動滑鼠 2.模擬滑鼠點擊 3.模擬滑鼠拖曳 4.捲動滑鼠
使用 pyautogui 套件來取得所有正在視窗 (windows)。
Thumbnail
初玩python時常用pip安裝各式各樣的套件下來,而這些套件在本機中是以全域的方式安裝。假設今天需要接手別人的專案,所用的套件版本不相容,對於這些仰賴的套件(依賴dependencies)進行管理跟切分就成了一個課題。
Thumbnail
在Python中使用MySQLdb的起手式大概長這樣。記得execute裡面的SQL語法一定要加上冒號,否則會出錯。我也在這個愚蠢的錯誤上跌倒過。編碼問題是資料庫管理中常見的問題,編碼包含又包含了兩個部份,collation和character set。
Thumbnail
「設計不僅僅是外觀和感覺。設計是其運作的方式。」 — Steve Jobs 身為一個獨立文案,許多人會以為我們的生活只需要面對電腦,從無到有,用精巧的文字填滿空白的螢幕,呈現心目中獨具風格的作品。 ——有的時候可以如此,但其實這是我們夢寐以求的偶發日常。 更多的時候,白天的工作時間總被各種繁雜
Thumbnail
台股、美股近期明顯回檔,市場敘事發生改變,壞消息一樁接一樁出現,下一步該怎麼走呢?本文將探討近期的宏觀經濟事件,並分享個人的操作思考。
Thumbnail
PyInstaller 是一個強大的工具,可以將 Python 程式碼打包成獨立的可執行檔案,讓你的程式可以在沒有 Python 解釋器的情況下運行。這對於分享和分發你的 Python 應用程式非常有用。以下是使用 PyInstaller 的基本步驟:
使用Python的Threading模組設計一個能夠在背景待命的程式,並在等待5秒後自動結束。我們將使用執行緒來執行背景任務,並使用定時等待來控制程式的結束時間。這種方法適用於不依賴於特定按鍵事件的情況,而是在固定的時間後自動退出程式。
在這篇教學中,我們將介紹如何使用Python的openpyxl套件將資料寫入Excel文件。openpyxl是一個功能強大的函式庫,可以讓我們輕鬆地處理Excel文件。
在這篇教學中,我們將介紹如何使用Python的openpyxl模組來讀取Excel文件中的資料。openpyxl是一個功能強大的函式庫,可以讓我們輕鬆地處理Excel文件。
安裝 pyautogui 在開始之前,我們需要先安裝 pyautogui 模塊。
這篇教學文章將介紹如何使用 OpenAI 的 GPT-3 模型來建立一個簡單的聊天機器人。
安裝 pyautogui 在開始之前,我們需要先安裝 pyautogui 模塊。你可以在終端或命令提示字元中輸入以下命令來安裝它: 1.移動滑鼠 2.模擬滑鼠點擊 3.模擬滑鼠拖曳 4.捲動滑鼠
使用 pyautogui 套件來取得所有正在視窗 (windows)。
Thumbnail
初玩python時常用pip安裝各式各樣的套件下來,而這些套件在本機中是以全域的方式安裝。假設今天需要接手別人的專案,所用的套件版本不相容,對於這些仰賴的套件(依賴dependencies)進行管理跟切分就成了一個課題。
Thumbnail
在Python中使用MySQLdb的起手式大概長這樣。記得execute裡面的SQL語法一定要加上冒號,否則會出錯。我也在這個愚蠢的錯誤上跌倒過。編碼問題是資料庫管理中常見的問題,編碼包含又包含了兩個部份,collation和character set。