付費限定

[OpneCV][Python]通過 KMeans 聚類演算法分析圖像(HSV色彩空間)

更新於 發佈於 閱讀時間約 8 分鐘

我們將學習如何使用 Python 和 OpenCV 實現圖像的主色提取與重新著色。

以下的程式碼展示了如何通過 KMeans 聚類演算法分析圖像,提取 HSV 色彩空間中的主色,並將圖像重新著色,提取想偵測的物件的顏色。

raw-image


在官網案例,實作為RGB色彩空間,但如果套用HSV色彩空間則會因為H色相的特性,造成同樣顏色卻分在不同群,本文章主要解釋並解決這問題。


程式功能概述

這段程式碼的核心功能是:

  1. 提取圖像主色:通過 KMeans 聚類,找出指定數量的主色。
  2. 自訂調色板:利用自定義的調色板,對圖像重新著色。
  3. 返回 HSV 中心值與分割後的圖像:輸出主色(HSV 格式)和重新著色的圖像。

以行動支持創作者!付費即可解鎖
本篇內容共 2986 字、0 則留言,僅發佈於[Python][OpenCV]學習心得筆記你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
avatar-img
128會員
216內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
Tesseract 是一個開源的光學字符識別 (OCR) 引擎,可通過自定義訓練來改進對特定字體或語言的識別。 以下是一份基於 tesstrain 工具,並針對 Windows CMD 的完整 Tesseract 5 訓練教學。將利用官方提供的ocrd-testset.zip來做示範 前置
在使用 make 時,有時可能會遇到以下錯誤: make: *** No rule to make target 'tesseract-langdata'. Stop. 這表明 make 認為目標 tesseract-langdata 無需執行,原因可能與環境設定不正確相關。本教學將說明如何解
你還沒有編譯 OpenCV,那麼你需要先完成 OpenCV 的編譯過程,這樣才能生成 OpenCVConfig.cmake 文件。下面是一步一步的指南,幫助你在 Windows 上編譯 OpenCV。 本文主要介紹使用Cmake + VS2022來編譯OpenCV,最後目的是讓OpenCV可以利用
[OpenCV][Python]使用GrabCut 來去背 在上篇文章提到如何用GrabCut 來去背,但都是處於比較基礎的方式,讓演算法自行判斷前景背景,本文主要說明,使用設定參數讓演算法計算得更加準確,可根據UI上的圖顯示,用滑鼠畫區域來設定參考的背景與前景。 UI圖顯示 步驟,先載圖,在
本文詳細探討了Tesseract的box定義。經驗分享釐清了Tesseract與cv2.rectangle的座標差異,解釋了怎樣使用JTessBoxEditor進行框的驗證。透過範例,讀者將瞭解如何正確設置字符的bounding box,並學會轉換OCR座標為Tesseract所需格式
本文主要介紹使用Numpy實現一個尋找邊界的方法,在用這個方法延伸去判斷2D條碼中圖案L角,根據預定義的方向角度對應表來判斷圖像的角度(0 度、90 度、180 度或 270 度) 設計邏輯 數據過濾: 函式 __filtered_positions 確保在對數據進行處理之前,能夠有效地過濾
Tesseract 是一個開源的光學字符識別 (OCR) 引擎,可通過自定義訓練來改進對特定字體或語言的識別。 以下是一份基於 tesstrain 工具,並針對 Windows CMD 的完整 Tesseract 5 訓練教學。將利用官方提供的ocrd-testset.zip來做示範 前置
在使用 make 時,有時可能會遇到以下錯誤: make: *** No rule to make target 'tesseract-langdata'. Stop. 這表明 make 認為目標 tesseract-langdata 無需執行,原因可能與環境設定不正確相關。本教學將說明如何解
你還沒有編譯 OpenCV,那麼你需要先完成 OpenCV 的編譯過程,這樣才能生成 OpenCVConfig.cmake 文件。下面是一步一步的指南,幫助你在 Windows 上編譯 OpenCV。 本文主要介紹使用Cmake + VS2022來編譯OpenCV,最後目的是讓OpenCV可以利用
[OpenCV][Python]使用GrabCut 來去背 在上篇文章提到如何用GrabCut 來去背,但都是處於比較基礎的方式,讓演算法自行判斷前景背景,本文主要說明,使用設定參數讓演算法計算得更加準確,可根據UI上的圖顯示,用滑鼠畫區域來設定參考的背景與前景。 UI圖顯示 步驟,先載圖,在
本文詳細探討了Tesseract的box定義。經驗分享釐清了Tesseract與cv2.rectangle的座標差異,解釋了怎樣使用JTessBoxEditor進行框的驗證。透過範例,讀者將瞭解如何正確設置字符的bounding box,並學會轉換OCR座標為Tesseract所需格式
本文主要介紹使用Numpy實現一個尋找邊界的方法,在用這個方法延伸去判斷2D條碼中圖案L角,根據預定義的方向角度對應表來判斷圖像的角度(0 度、90 度、180 度或 270 度) 設計邏輯 數據過濾: 函式 __filtered_positions 確保在對數據進行處理之前,能夠有效地過濾
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在影像辨識中,若遇到物件與背景難以分辨的狀況下,先做一下色彩分析,知道了色彩強度階層上的像素數,有助於了解後續需要做什麼處理,比較好分割出辨識物。 若想辨識的物件與背景的RGB值過於接近,也比較好說明此狀況,為什麼較難分割出物件。 成果呈現 第一張圖:左邊為原圖,右邊為分析結果的圖,用其他顏
Thumbnail
上一篇提到利用cv2.inRangex,建立遮罩來過濾出紅球。這次我們稍微更動一下程式碼,將紅球變顏色。 [OpenCV][Python]利用cv2.inRange搭配cv2.bitwise_and過濾紅球 結果圖 將紅球改變顏色成藍球
Thumbnail
用小畫家隨意畫三個圈分別用紅藍綠,我們利用cv2.inRange與搭配cv2.bitwise_and,將紅球過濾出來吧。 程式範例 因為OpenCV中cv2.imread讀取圖檔預設讀取是為[B,G,R]的格式,所以設置紅色範圍要注意設定在R的範圍內。
Thumbnail
介紹OpenCV中的cv2.matchTemplate和cv2.minMaxLoc函數的使用方法和參數,提供程式範例以及相關特徵匹配的詳細介紹,讓讀者對此有更深入的瞭解。
Thumbnail
觀看本文將可以學習到如何利用Numpy求得物件的邊緣點,及算出物件的寬跟高。 有詳細的程式邏輯說明,及各函式用法說明。 綠點及紅點則是採樣到的邊界點,比較粗的點是偵測到的最大值 完整程式碼 import cv2 import numpy as np import matplotl
Thumbnail
直方圖是對圖像中像素強度分布的圖形表示。通過分析直方圖,我們可以獲得有關圖像對比度、亮度和色彩分佈的有用信息。
Thumbnail
涉及圖像處理和計算機視覺時,色彩空間轉換是一個常見操作,應用如下: 降維: 將一張彩色圖像轉換為灰度圖像可以減少數據的維度,簡化處理過程,同時在某些情況下保留重要的視覺信息。 突顯特徵: 在某些情況下,某些色彩通道可能包含冗餘或不必要的信息,通過轉換到其他色彩空間,可以更好地突顯圖像中的重要特徵
Thumbnail
本文將利用OpenCV的findContours函式,從找到的輪廓中來計算物件的面積,周長,邊界框等屬性,從而得到物體的寬度與高度。 一般來說,我們在進行輪廓檢測時,會先進行圖像二值化,將對象轉換為白色,背景為黑色。這樣,在找到輪廓後,輪廓的點就會以白色表示,背景為黑色。 結果圖 從圖中綠色框
Thumbnail
[影像處理_OpenCV Python]使用Python撰寫影像處理功能,圖片遮罩或濾除掉不要的地方,旋轉圖片 以下範例將呈現影像處理三種不同的應用: 遮罩的實現 濾除 旋轉
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在影像辨識中,若遇到物件與背景難以分辨的狀況下,先做一下色彩分析,知道了色彩強度階層上的像素數,有助於了解後續需要做什麼處理,比較好分割出辨識物。 若想辨識的物件與背景的RGB值過於接近,也比較好說明此狀況,為什麼較難分割出物件。 成果呈現 第一張圖:左邊為原圖,右邊為分析結果的圖,用其他顏
Thumbnail
上一篇提到利用cv2.inRangex,建立遮罩來過濾出紅球。這次我們稍微更動一下程式碼,將紅球變顏色。 [OpenCV][Python]利用cv2.inRange搭配cv2.bitwise_and過濾紅球 結果圖 將紅球改變顏色成藍球
Thumbnail
用小畫家隨意畫三個圈分別用紅藍綠,我們利用cv2.inRange與搭配cv2.bitwise_and,將紅球過濾出來吧。 程式範例 因為OpenCV中cv2.imread讀取圖檔預設讀取是為[B,G,R]的格式,所以設置紅色範圍要注意設定在R的範圍內。
Thumbnail
介紹OpenCV中的cv2.matchTemplate和cv2.minMaxLoc函數的使用方法和參數,提供程式範例以及相關特徵匹配的詳細介紹,讓讀者對此有更深入的瞭解。
Thumbnail
觀看本文將可以學習到如何利用Numpy求得物件的邊緣點,及算出物件的寬跟高。 有詳細的程式邏輯說明,及各函式用法說明。 綠點及紅點則是採樣到的邊界點,比較粗的點是偵測到的最大值 完整程式碼 import cv2 import numpy as np import matplotl
Thumbnail
直方圖是對圖像中像素強度分布的圖形表示。通過分析直方圖,我們可以獲得有關圖像對比度、亮度和色彩分佈的有用信息。
Thumbnail
涉及圖像處理和計算機視覺時,色彩空間轉換是一個常見操作,應用如下: 降維: 將一張彩色圖像轉換為灰度圖像可以減少數據的維度,簡化處理過程,同時在某些情況下保留重要的視覺信息。 突顯特徵: 在某些情況下,某些色彩通道可能包含冗餘或不必要的信息,通過轉換到其他色彩空間,可以更好地突顯圖像中的重要特徵
Thumbnail
本文將利用OpenCV的findContours函式,從找到的輪廓中來計算物件的面積,周長,邊界框等屬性,從而得到物體的寬度與高度。 一般來說,我們在進行輪廓檢測時,會先進行圖像二值化,將對象轉換為白色,背景為黑色。這樣,在找到輪廓後,輪廓的點就會以白色表示,背景為黑色。 結果圖 從圖中綠色框
Thumbnail
[影像處理_OpenCV Python]使用Python撰寫影像處理功能,圖片遮罩或濾除掉不要的地方,旋轉圖片 以下範例將呈現影像處理三種不同的應用: 遮罩的實現 濾除 旋轉