如何在OpenCV中为InRange阈值选择颜色的最佳HSV值
生活随笔
收集整理的這篇文章主要介紹了
如何在OpenCV中为InRange阈值选择颜色的最佳HSV值
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
如何在OpenCV中為InRange閾值選擇顏色的最佳HSV值
- 1. 效果圖
- 2. 源碼
- 參考
之前的博客介紹了如何使用Python,OpenCV通過(guò)HSV顏色空間轉(zhuǎn)換檢測(cè)對(duì)象,并進(jìn)行軌跡追蹤。怎么選定合適的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# 創(chuàng)建一個(gè)窗口圖片
cv2.namedWindow('image')# 對(duì)顏色變化創(chuàng)建軌跡蘭
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)# 設(shè)置默認(rèn)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):# 獲取軌跡欄的當(dāng)前位置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')# 設(shè)置顯示的HSV最大最小值lower = np.array([hMin, sMin, vMin])upper = np.array([hMax, sMax, vMax])# 創(chuàng)建HSV圖像,并根據(jù)最低、最高閾值進(jìn)行閾值化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鍵退出循環(huán)if cv2.waitKey(waitTime) & 0xFF == ord('q'):breakcv2.destroyAllWindows()
參考
參考:https://www.cnpython.com/qa/498520
總結(jié)
以上是生活随笔為你收集整理的如何在OpenCV中为InRange阈值选择颜色的最佳HSV值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 诚信为金下一句是什么啊?
- 下一篇: 使用Python,EoN模拟网络中的疾病