[英]Python OpenCV Trackbar Error For cv2.getTrackbarPos
我正在尝试在 Windows 10 PC 上使用 Visual Studio Code 执行以下 Python 3.9.5 脚本:
import cv2
import numpy as np
frameWidth = 640
frameHeight = 480
cap = cv2.VideoCapture(1)
cap.set(3, frameWidth)
cap.set(4, frameHeight)
def empty(a):
pass
cv2.namedWindow("HSV")
cv2.resizeWindow("HSV", 640, 240)
cv2.createTrackbar("HUE MIN", "HSV", 0, 179, empty)
cv2.createTrackbar("HUE Max", "HSV", 129, 129, empty)
cv2.createTrackbar("SAT Min", "HSV", 0, 255, empty)
cv2.createTrackbar("SAT Max", "HSV", 255, 255 ,empty)
cv2.createTrackbar("VALUE Min", "HSV", 0, 255, empty)
cv2.createTrackbar("VALUE Max", "HSV", 255, 255, empty)
cap = cv2.VideoCapture('vid1.mp4')
frameCounter = 0
while True:
frameCounter +=1
if cap.get(cv2.CAP_PROP_FRAME_COUNT) == frameCounter:
cap.set(cv2.CAP_PROP_POS_FRAMES, 0)
frameCounter=0
_, img = cap.read()
imgHsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
h_min = cv2.getTrackbarPos("HUE Min", "HSV")
h_max = cv2.getTrackbarPos("HUE Max", "HSV")
s_min = cv2.getTrackbarPos("SAT Min", "HSV")
s_max = cv2.getTrackbarPos("SAT Max", "HSV")
v_min = cv2.getTrackbarPos("VALUE Max", "HSV")
v_max = cv2.getTrackbarPos("VALUE Max", "HSV")
print(h_min)
lower = np.array([h_min, s_min, v_min])
upper = np.array([h_max, s_max, v_max])
mask = cv2.inRange(imgHsv, lower, upper)
result = cv2.bitwise_and(img, img, mask=mask)
mask = cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR)
hstack = np.hstack([img, mask, result])
cv2.imshow('Horizontal Stacking', hstack)
if cv2.waitKey(1) and 0xFF == ord('q'):
cv2.waitKey(0)
cap.release()
cv2.destroyAllWindows()
但是,在执行时,我收到以下错误:
[ WARN:0@0.229] global D:\a\opencv-python\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (539) `anonymous-namespace'::SourceReaderCB::~SourceReaderCB terminating async callback
Traceback (most recent call last):
File "c:...\ColorPickerScript.py", line 35, in <module>
h_min = cv2.getTrackbarPos("HUE Min", "HSV")
cv2.error: OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:862: error: (-215:Assertion failed) trackbar in function 'cv::getTrackbarPos'
我希望有人能指出我正确的方向,以弄清楚为什么会发生这种情况以及我能做些什么来解决它。 我还没有找到任何解决方案,谢谢!
正如 Christoph Rackwitz 所指出的,问题在于我制作了一种类型,其中我有一个所有大写字母的字符串,但没有另一个。 更正此问题可解决此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.