如何在OpenCV中为InRange阈值选择颜色的最佳HSV值
生活随笔
收集整理的這篇文章主要介紹了
如何在OpenCV中为InRange阈值选择颜色的最佳HSV值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如何在OpenCV中為InRange閾值選擇顏色的最佳HSV值
- 1. 效果圖
- 2. 源碼
- 參考
之前的博客介紹了如何使用Python,OpenCV通過HSV顏色空間轉換檢測對象,并進行軌跡追蹤。怎么選定合適的HSV顏色閾值范圍非常非常非常的重要。
這篇博客將介紹如何在OpenCV中為InRange閾值選擇顏色的最佳HSV值范圍。
1. 效果圖
原始圖如下:
選出紅色的范圍:
(0,40,45)~(30,255,255)
選出黑色的范圍:
(0,0,0)~(179,255,254)
2. 源碼
# 確定hsv顏色的最佳閾值
import cv2
import numpy as npdef nothing(x):pass# 創建一個窗口圖片
cv2.namedWindow('image')# 對顏色變化創建軌跡蘭
cv2.createTrackbar('HMin', 'image', 0, 179, nothing) # Hue is from 0-179 for Opencv
cv2.createTrackbar('SMin', 'image', 0, 255, nothing)
cv2.createTrackbar('VMin', 'image', 0, 255, nothing)
cv2.createTrackbar('HMax', 'image', 0, 179, nothing)
cv2.createTrackbar('SMax', 'image', 0, 255, nothing)
cv2.createTrackbar('VMax', 'image', 0, 255, nothing)# 設置默認HSV空間的最大值
cv2.setTrackbarPos('HMax', 'image', 179)
cv2.setTrackbarPos('SMax', 'image', 255)
cv2.setTrackbarPos('VMax', 'image', 255)# 初始化HSV空間最大、最小值
hMin = sMin = vMin = hMax = sMax = vMax = 0
phMin = psMin = pvMin = phMax = psMax = pvMax = 0img = cv2.imread('images/circle.png')
output = img
waitTime = 33while (1):# 獲取軌跡欄的當前位置hMin = cv2.getTrackbarPos('HMin', 'image')sMin = cv2.getTrackbarPos('SMin', 'image')vMin = cv2.getTrackbarPos('VMin', 'image')hMax = cv2.getTrackbarPos('HMax', 'image')sMax = cv2.getTrackbarPos('SMax', 'image')vMax = cv2.getTrackbarPos('VMax', 'image')# 設置顯示的HSV最大最小值lower = np.array([hMin, sMin, vMin])upper = np.array([hMax, sMax, vMax])# 創建HSV圖像,并根據最低、最高閾值進行閾值化hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)mask = cv2.inRange(hsv, lower, upper)output = cv2.bitwise_and(img, img, mask=mask)# 展示是否HSV值有變化if ((phMin != hMin) | (psMin != sMin) | (pvMin != vMin) | (phMax != hMax) | (psMax != sMax) | (pvMax != vMax)):print("(hMin = %d , sMin = %d, vMin = %d), (hMax = %d , sMax = %d, vMax = %d)" % (hMin, sMin, vMin, hMax, sMax, vMax))phMin = hMinpsMin = sMinpvMin = vMinphMax = hMaxpsMax = sMaxpvMax = vMax# 展示輸出圖像cv2.imshow('image', output)# 等待33毫秒或者按下q鍵退出循環if cv2.waitKey(waitTime) & 0xFF == ord('q'):breakcv2.destroyAllWindows()
參考
參考:https://www.cnpython.com/qa/498520
總結
以上是生活随笔為你收集整理的如何在OpenCV中为InRange阈值选择颜色的最佳HSV值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 诚信为金下一句是什么啊?
- 下一篇: 鱼胶多少钱啊?