inrange函数 python_为什么OpenCV的inRange函数不将我的HSV图像转换成二进制?
好吧,我在@Miki的幫助下在評論中找到了解決方案。在
代碼幾乎沒有變化:lowerb = np.array([lH, lS, lV], np.uint8)
upperb = np.array([uH, uS, uV], np.uint8)
還有
^{pr2}$
上述代碼更改解決了這個問題。在
完整的工作代碼如下import serial
import numpy as np
import cv2
# dummy function
def nothing(x):
pass
# Track bar window
cv2.namedWindow('thresh')
# Track bars
cv2.createTrackbar('lH','thresh', 0, 180, nothing)
cv2.createTrackbar('lS', 'thresh', 0, 255, nothing)
cv2.createTrackbar('lV', 'thresh', 0, 255, nothing)
cv2.createTrackbar('uH', 'thresh', 0, 180, nothing)
cv2.createTrackbar('uS', 'thresh', 0, 255, nothing)
cv2.createTrackbar('uV', 'thresh', 0, 255, nothing)
# capture video
cap = cv2.VideoCapture(0)
while True:
# Read from camera
source, frame = cap.read()
if not source:
break
# converting image color to HSV color space
cv2.cvtColor(frame, cv2.COLOR_RGB2HSV, frame, 0)
# Getting values from track bars
lH = cv2.getTrackbarPos('lH', 'thresh')
uH = cv2.getTrackbarPos('uH', 'thresh')
lS = cv2.getTrackbarPos('lS', 'thresh')
uS = cv2.getTrackbarPos('uS', 'thresh')
lV = cv2.getTrackbarPos('lV', 'thresh')
uV = cv2.getTrackbarPos('uV', 'thresh')
lowerb = np.array([lH, lS, lV], np.uint8)
upperb = np.array([uH, uS, uV], np.uint8)
frame = cv2.inRange(frame, lowerb, upperb)
cv2.flip(frame, 1, frame)
cv2.imshow('thresh', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
總結
以上是生活随笔為你收集整理的inrange函数 python_为什么OpenCV的inRange函数不将我的HSV图像转换成二进制?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 轰6轰炸机远海巡航说明啥?
- 下一篇: php修改文件访问目录为 .htacce