日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpecCV颜色分割

發布時間:2025/3/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpecCV颜色分割 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

顏色分割

普通讀取的圖片都是RGB格式,就意味著每種顏色都是由三種RGB組合而成。同樣的常用的格式還有HSV,具體的看下面的百度貼過來的:
色調H
用角度度量,取值范圍為0°~360°,從紅色開始按逆時針方向計算,紅色為0°,綠色為120°,藍色為240°。它們的補色是:黃色為60°,青色為180°,紫色為300°;
飽和度S
飽和度S表示顏色接近光譜色的程度。一種顏色,可以看成是某種光譜色與白色混合的結果。其中光譜色所占的比例愈大,顏色接近光譜色的程度就愈高,顏色的飽和度也就愈高。飽和度高,顏色則深而艷。光譜色的白光成分為0,飽和度達到最高。通常取值范圍為0%~100%,值越大,顏色越飽和。
明度V
明度表示顏色明亮的程度,對于光源色,明度值與發光體的光亮度有關;對于物體色,此值和物體的透射比或反射比有關。通常取值范圍為0%(黑)到100%(白)。

下面展示使用HSV對圖片進行顏色分割,要分割的圖片如下:

HSV格式中,H表示與顏色有關的,所以如果基于顏色分割的話,主要是對H通道進行閾值分割。看圖片鳥為一種顏色,背景大致為一種顏色,大致可以猜測H通道的直方圖有兩個波峰,且背景像素對于小鳥像素,所以選擇幅值較小的波峰即為小鳥所在區域:
下面編寫代碼實現相關的內容:

img_hsv = cv2.cvtColor(img2,cv2.COLOR_BGR2HSV)H,S,V = cv2.split(img_hsv)plt.bar([i for i in range(256)],calHist(H))plt.show()

首先來看一下H通道的直方圖:

和預測結果相同,可以看到小波峰主要集中在100附近,所以閾值選擇需要在100兩邊:
下面我們來試試不同閾值選擇的結果:不同的閾值為【50,120】、【80-120】、【100,120】

可以看出只要將小波峰完全包進閾值選擇范圍內就可以選擇出來小鳥。
然后利用這個掩碼對圖像做位與操作:

res = cv2.bitwise_and(img,img,mask=mask)

得到分割出來的小鳥:

完整的代碼如下:

def split_baseColor(img):img_blur = cv2.blur(img,ksize=(5,5))img_median = cv2.medianBlur(img_blur,5)img_gaussian = cv2.GaussianBlur(img_median,(5,5),0)img2 = cv2.bilateralFilter(img_gaussian,9,75,75)img_hsv = cv2.cvtColor(img2,cv2.COLOR_BGR2HSV)H,S,V = cv2.split(img_hsv)plt.bar([i for i in range(256)],calHist(H))plt.bar([i for i in range(256)],calHist(S))plt.bar([i for i in range(256)],calHist(V))plt.show()low = np.array([50,0,0])high = np.array([120,255,255])mask = cv2.inRange(img_hsv,low,high)res = cv2.bitwise_and(img,img,mask=mask)s = np.hstack((img,res))s = cv2.pyrDown(s)show(s)

總結

以上是生活随笔為你收集整理的OpecCV颜色分割的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。