[OpenCV][Python]利用cv2.inRange換個顏色

閱讀時間約 2 分鐘

上一篇提到利用cv2.inRangex,建立遮罩來過濾出紅球。這次我們稍微更動一下程式碼,將紅球變顏色。

[OpenCV][Python]利用cv2.inRange搭配cv2.bitwise_and過濾紅球

結果圖

將紅球改變顏色成籃球

raw-image

程式範例

import cv2
import numpy as np

# 讀取圖像 預設讀取BGR
image = cv2.imread('D:/CRABpy/write/RGB.png')
result = image.copy()
# 設定 RGB 顏色範圍
# 這裡設置的是遮罩範圍
lower_bound = np.array([0, 0, 100])
upper_bound = np.array([50, 50, 255])

# 遮罩
mask = cv2.inRange(image, lower_bound, upper_bound)

# 將遮罩應用於原圖像,替換掉顏色
result[mask > 0] = [255,0,0]

# 顯示結果
cv2.imshow('Original Image', image)
cv2.imshow('Mask', mask)
cv2.imshow('result Image', result)
cv2.waitKey(0)

程式碼解說

result[mask > 0] = [255,0,0]

result 影像中對應於 mask 影像中值大於 0 的所有像素的顏色更改為紅色(即 [255, 0, 0]


具體例子:

假設有一個 mask 陣列如下:

codemask = [
[0, 1, 0],
[1, 1, 0],
[0, 0, 1]
]

還有一個 result 影像陣列:

coderesult = [
[[0, 0, 0], [0, 0, 0], [0, 0, 0]],
[[0, 0, 0], [0, 0, 0], [0, 0, 0]],
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
]

執行 result[mask > 0] = [255, 0, 0] 之後, result 變為:

coderesult = [
[[0, 0, 0], [255, 0, 0], [0, 0, 0]],
[[255, 0, 0], [255, 0, 0], [0, 0, 0]],
[[0, 0, 0], [0, 0, 0], [255, 0, 0]]
]

也就是說, mask 中大於 0 的位置的像素在 result 中被更改為紅色 [255, 0, 0]


119會員
201內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
首先我們先用小畫家,創建一個簡單的十字箭頭圖,在用高斯模糊將圖用模糊來模擬圖片糊掉的狀況。 如何檢測呢? 先假設在圖像清晰的狀況下,取邊緣的話線條應該是很明顯的吧,模糊的情況下,邊緣線條應該就會變多? 看下圖,由左看到右,在圖片清晰的狀況下,線條是相當明顯的 那有什麼方法將其量化成數字?
用小畫家隨意畫三個圈分別用紅藍綠,我們利用cv2.inRange與搭配cv2.bitwise_and,將紅球過濾出來吧。 程式範例 因為OpenCV中cv2.imread讀取圖檔預設讀取是為[B,G,R]的格式,所以設置紅色範圍要注意設定在R的範圍內。
使用cv2.imread讀取圖片時,如果路徑有包含到中文,就會報錯。 本文將提供另外一個方式cv2.imdecode,路徑有包含到中文時仍可以正常讀取圖片。 測試範例 import cv2 img = cv2.imread('D:/CRABpy/write/圖檔/chars_01.png'
本文將介紹,在圖像中找出最大矩形的物件來定位。
本篇文章主要講述cv2.connectedComponent應用於物件上的分割,將不同文字分割並用不同顏色標記。 範例程式結果圖 cv2.connectedComponentsWithStats 是 OpenCV 中用來執行連通元件標記的函式之一。
針對辨識物的不同,流程就會不一樣,在依照現實狀況進行刪減,以下說明為個人常用的流程。 基本流程: 讀圖 灰階 濾波 (看圖片雜訊多不多) 二值化 連通區域 特徵篩選 特徵資訊 辨識 - (OCR,量測,瑕疵檢測等。) 名詞介紹 Gray 灰階 將原始的彩色圖像轉換為灰階圖
首先我們先用小畫家,創建一個簡單的十字箭頭圖,在用高斯模糊將圖用模糊來模擬圖片糊掉的狀況。 如何檢測呢? 先假設在圖像清晰的狀況下,取邊緣的話線條應該是很明顯的吧,模糊的情況下,邊緣線條應該就會變多? 看下圖,由左看到右,在圖片清晰的狀況下,線條是相當明顯的 那有什麼方法將其量化成數字?
用小畫家隨意畫三個圈分別用紅藍綠,我們利用cv2.inRange與搭配cv2.bitwise_and,將紅球過濾出來吧。 程式範例 因為OpenCV中cv2.imread讀取圖檔預設讀取是為[B,G,R]的格式,所以設置紅色範圍要注意設定在R的範圍內。
使用cv2.imread讀取圖片時,如果路徑有包含到中文,就會報錯。 本文將提供另外一個方式cv2.imdecode,路徑有包含到中文時仍可以正常讀取圖片。 測試範例 import cv2 img = cv2.imread('D:/CRABpy/write/圖檔/chars_01.png'
本文將介紹,在圖像中找出最大矩形的物件來定位。
本篇文章主要講述cv2.connectedComponent應用於物件上的分割,將不同文字分割並用不同顏色標記。 範例程式結果圖 cv2.connectedComponentsWithStats 是 OpenCV 中用來執行連通元件標記的函式之一。
針對辨識物的不同,流程就會不一樣,在依照現實狀況進行刪減,以下說明為個人常用的流程。 基本流程: 讀圖 灰階 濾波 (看圖片雜訊多不多) 二值化 連通區域 特徵篩選 特徵資訊 辨識 - (OCR,量測,瑕疵檢測等。) 名詞介紹 Gray 灰階 將原始的彩色圖像轉換為灰階圖
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
Frames per second簡稱FPS, 也就是每秒幾個幀數的意思, 平常我們看到的影片背後其實都是一張張圖片的組成, 而這一幅畫面就是影片的每一幀。 由於人眼的特殊生理結構, 畫面的幀數只要高於每秒10 - 12張的時候就會認為是連貫的, 這也就是為什麼電影膠片是一格格的拍攝出來, 但是藉
Thumbnail
當我們在進行影像處理時, 在Python的世界最常聽到的就是OpenCV, 而我們在處理影片時也會想要僅針對某時間段的影片進行處理, 今天我們就來教您如何透過OpenCV來讀取特定的時間區段。 在進入主題之前, 有一些基本概念務必先行建立, 一個影片是由多張圖片組成的, 因此最小單元為一張圖
Thumbnail
點陣圖 點陣圖是由許多方格像素組成的圖片, 因此我們常常在將圖片放大時會呈現像是馬賽克的狀況, 假設期望圖片越清晰那所需要的像素會較多個, 因此空間耗用量也相對較大。 常見的格式有: .JPG .PNG .GIF .BMP .TIFF等格式。 繪製程式碼: 向量圖 向量
Thumbnail
繼上次分享的「【🔒 影像辨識 - 影像處理】Ep.1 關於影像的基本單位, 相信我們對於影像的儲存應該有了基本的認識了, 那麼接下來我們會需要的是了解顏色的組成。 我們除了在文章裡講述概念之外, 也會提供實作的數位作品分享給大家, 請大家根據範例學習與練習。 關於顏色 灰階的時代 早期尚未
Thumbnail
歡迎來到「阿Han的軟體心法實戰營 - 影像處理」系列的文章區,我們會針對影像處理的相關知識、開發技巧進行分享,並教你手把手用程式寫出屬於自己的影像處理程式, 當然也會包括AI模型訓練的部分,就讓我們一起來探索影像處理的領域吧! 在進入影像辨識的世界之前, 我們先來了解一下關於解析度的基本概念吧!
Thumbnail
在樹莓派安裝OpenCV的紀錄。板子是樹莓派3B(沒有+),系統raspbian bullseye 32bit灌到USB隨身碟。
Thumbnail
#安裝 OpenCV 相關套件 pip install opencv-python pip install opencv-contrib-python pip install matplotlib
Haar Cascade classifier OpenCV 官方 Github:https://github.com/opencv/opencv/tree/4.x/data 人臉特徵模型:haarcascade_frontalface_default.xml 資料來源: https://steam
opencv is use BGR color matplotlib is use RGB color 顯示圖片 opencv matplotlib
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
Frames per second簡稱FPS, 也就是每秒幾個幀數的意思, 平常我們看到的影片背後其實都是一張張圖片的組成, 而這一幅畫面就是影片的每一幀。 由於人眼的特殊生理結構, 畫面的幀數只要高於每秒10 - 12張的時候就會認為是連貫的, 這也就是為什麼電影膠片是一格格的拍攝出來, 但是藉
Thumbnail
當我們在進行影像處理時, 在Python的世界最常聽到的就是OpenCV, 而我們在處理影片時也會想要僅針對某時間段的影片進行處理, 今天我們就來教您如何透過OpenCV來讀取特定的時間區段。 在進入主題之前, 有一些基本概念務必先行建立, 一個影片是由多張圖片組成的, 因此最小單元為一張圖
Thumbnail
點陣圖 點陣圖是由許多方格像素組成的圖片, 因此我們常常在將圖片放大時會呈現像是馬賽克的狀況, 假設期望圖片越清晰那所需要的像素會較多個, 因此空間耗用量也相對較大。 常見的格式有: .JPG .PNG .GIF .BMP .TIFF等格式。 繪製程式碼: 向量圖 向量
Thumbnail
繼上次分享的「【🔒 影像辨識 - 影像處理】Ep.1 關於影像的基本單位, 相信我們對於影像的儲存應該有了基本的認識了, 那麼接下來我們會需要的是了解顏色的組成。 我們除了在文章裡講述概念之外, 也會提供實作的數位作品分享給大家, 請大家根據範例學習與練習。 關於顏色 灰階的時代 早期尚未
Thumbnail
歡迎來到「阿Han的軟體心法實戰營 - 影像處理」系列的文章區,我們會針對影像處理的相關知識、開發技巧進行分享,並教你手把手用程式寫出屬於自己的影像處理程式, 當然也會包括AI模型訓練的部分,就讓我們一起來探索影像處理的領域吧! 在進入影像辨識的世界之前, 我們先來了解一下關於解析度的基本概念吧!
Thumbnail
在樹莓派安裝OpenCV的紀錄。板子是樹莓派3B(沒有+),系統raspbian bullseye 32bit灌到USB隨身碟。
Thumbnail
#安裝 OpenCV 相關套件 pip install opencv-python pip install opencv-contrib-python pip install matplotlib
Haar Cascade classifier OpenCV 官方 Github:https://github.com/opencv/opencv/tree/4.x/data 人臉特徵模型:haarcascade_frontalface_default.xml 資料來源: https://steam
opencv is use BGR color matplotlib is use RGB color 顯示圖片 opencv matplotlib