OpenCV-Python轨迹栏在macOS上不工作,但在Ubuntu中工作良好

OpenCV-Python轨迹栏在macOS上不工作,但在Ubuntu中工作良好,python,macos,python-3.x,opencv,ubuntu,Python,Macos,Python 3.x,Opencv,Ubuntu,我正在运行一个从网站上获得的代码,该代码在Ubuntu上运行完全正常,但在macOS上轨迹栏不会移动: import cv2 import numpy as np def nothing(x): pass # Create a black image, a window img = np.zeros((300,512,3), np.uint8) cv2.namedWindow('image') # create trackbars for color change cv2.creat

我正在运行一个从网站上获得的代码,该代码在Ubuntu上运行完全正常,但在macOS上轨迹栏不会移动:

import cv2
import numpy as np

def nothing(x):
   pass

# Create a black image, a window
img = np.zeros((300,512,3), np.uint8)
cv2.namedWindow('image')

# create trackbars for color change
cv2.createTrackbar('R','image',0,255,nothing)
cv2.createTrackbar('G','image',0,255,nothing)
cv2.createTrackbar('B','image',0,255,nothing)

# create switch for ON/OFF functionality
switch = '0 : OFF \n1 : ON'
cv2.createTrackbar(switch, 'image',0,1,nothing)

while(1):
    cv2.imshow('image',img)
    k = cv2.waitKey(1) & 0xFF
    if k == 27:
        break

    # get current positions of four trackbars
    r = cv2.getTrackbarPos('R','image')
    g = cv2.getTrackbarPos('G','image')
    b = cv2.getTrackbarPos('B','image')
    s = cv2.getTrackbarPos(switch,'image')

if s == 0:
     img[:] = 0
else:
     img[:] = [b,g,r]

cv2.destroyAllWindows()
这是我的macbook中轨迹栏不移动的图像:

为什么会发生这种情况?
请帮忙。谢谢。

if/else语句应该在while循环中


进口cv2
将numpy作为np导入
def nothing(x):
通过
img=np.zero((300512,3),np.uint8)
cv2.namedWindow(“图像”)
cv2.createTrackbar('R','image',0255,无)
cv2.createTrackbar('G','image',0255,无)
cv2.createTrackbar('B','image',0255,无)
开关='0:关闭\n1:打开'
cv2.createTrackbar(开关“图像”,0,1,无)
而(一):
cv2.imshow(“图像”,img)
k=cv2。等待键(1)和0xFF
如果k==27:
打破
r=cv2.getTrackbarPos('r','image'))
g=cv2.getTrackbarPos('g','image'))
b=cv2.getTrackbarPos('b','image'))
s=cv2.getTrackbarPos(开关,'image')
如果s==0:
img[:]=0
其他:
img[:]=[b,g,r]
cv2.destroyAllWindows()

我找到了解决方案。。。我没有使用k=cv2.waitKey(1)和0xFF,而是使用了k=cv2.waitKey(500),但它看起来仍然不同于ubuntu的轨迹栏。为什么?谢谢你的提问和回答!