Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将Waitkey更改为";0“;使用qtwidts.QSlider没有效果_Python_Opencv_Pyqt5 - Fatal编程技术网

Python 将Waitkey更改为";0“;使用qtwidts.QSlider没有效果

Python 将Waitkey更改为";0“;使用qtwidts.QSlider没有效果,python,opencv,pyqt5,Python,Opencv,Pyqt5,我的程序扫描给定视频中的圆圈。使用QSlider,我可以在程序运行时更改WaitKey的值。除了将滑块值更改为0外,每个数字都可以正常工作。视频不会等待任何按键(据我所知,WaitKey(0)表示等待任何按键)。程序的行为就像值仍然为1一样。该参数称为“globals.Speed” 正如政府所说: 注意:此函数是HighGUI中唯一可以获取和保存数据的方法 处理事件,因此需要为正常事件定期调用它 处理,除非在需要 关注事件处理 注意:该功能仅在至少有一个HighGUI窗口时有效 已创建,并且窗口

我的程序扫描给定视频中的圆圈。使用QSlider,我可以在程序运行时更改WaitKey的值。除了将滑块值更改为0外,每个数字都可以正常工作。视频不会等待任何按键(据我所知,WaitKey(0)表示等待任何按键)。程序的行为就像值仍然为1一样。该参数称为“globals.Speed”

正如政府所说:

注意:此函数是HighGUI中唯一可以获取和保存数据的方法 处理事件,因此需要为正常事件定期调用它 处理,除非在需要 关注事件处理

注意:该功能仅在至少有一个HighGUI窗口时有效 已创建,并且窗口处于活动状态。如果有几个高鬼 windows,其中任何一个都可以处于活动状态

waitKey()
仅当OpenCV HighGUI窗口被激活时才起作用。如果您在界面上使用Qt GUI,您也应该在鼠标或键盘事件中使用Qt功能。

如所述:

注意:此函数是HighGUI中唯一可以获取和保存数据的方法 处理事件,因此需要为正常事件定期调用它 处理,除非在需要 关注事件处理

注意:该功能仅在至少有一个HighGUI窗口时有效 已创建,并且窗口处于活动状态。如果有几个高鬼 windows,其中任何一个都可以处于活动状态


waitKey()
仅当OpenCV HighGUI窗口被激活时才起作用。如果您在界面上使用Qt GUI,您也应该在鼠标或键盘事件上使用Qt功能。

HighGUI是cv2.VideoCapture()启动时弹出的界面吗?我在QLabel中显示视频帧,这意味着在我的例子中没有创建HighGUI?很抱歉,我的编程技能/知识还不太好,我不确定WaitKey(0)现在需要在代码中更改哪些内容才能正常工作。是的,正如您所说,您正在使用不属于opencv ui的qlabel。所以waitKey()永远不会起作用。为此,您应该使用qt特性,或者使用imshow()从opencv获取GHGUI是库模块。在waitKey之前,至少需要一个cv::imshow或cv::namedWindow来创建窗口,不要关闭它。当cv2.VideoCapture()启动时,HighGUI是弹出的界面吗?我在QLabel中显示视频帧,这意味着在我的例子中没有创建HighGUI?很抱歉,我的编程技能/知识还不太好,我不确定WaitKey(0)现在需要在代码中更改哪些内容才能正常工作。是的,正如您所说,您正在使用不属于opencv ui的qlabel。所以waitKey()永远不会起作用。为此,您应该使用qt特性,或者使用imshow()从opencv获取GHGUI是库模块。在waitKey之前,至少需要一个cv::imshow或cv::namedWindow来创建窗口,而不要关闭它。
# class that does the interface stuff
class MyWindow(QMainWindow):

    def __init__(self):
        super(MyWindow, self).__init__()
        self.resize(1300, 800)
        self.setWindowTitle("MainWindow")
        self.initUI()

    def initUI(self):
        [...]
        # QSlider to change WaitKey value
        self.horizontalSliderSpeed = QtWidgets.QSlider(self)
        self.horizontalSliderSpeed.setGeometry(QtCore.QRect(20, 300, 160, 22))
        self.horizontalSliderSpeed.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSliderSpeed.setMinimum(0)
        self.horizontalSliderSpeed.setMaximum(2000)
        self.horizontalSliderSpeed.setValue(globals.Speed)
        self.horizontalSliderSpeed.valueChanged.connect(lambda: self.changedValue(4))
        self.horizontalSliderSpeedLabel = QtWidgets.QLabel(self)
        self.horizontalSliderSpeedLabel.setFont(font)
        self.horizontalSliderSpeedLabel.setText(f"Speed: {globals.Speed}")
        self.horizontalSliderSpeedLabel.move(200, 300)
        [...]

    def changedValue(self, a):
        [...]
        if a == 4:
            globals.Speed = self.horizontalSliderSpeed.value()
            self.horizontalSliderSpeedLabel.setText(f"Speed: {globals.Speed}")
   [...]

# class that processes the video
class Child_Clocked(QThread):

    def run(self):
        cap = cv2.VideoCapture(globals.VideoFile)

        while globals.While_Run:
            try:
                cv2.waitKey(globals.Speed)
                ret, frame = cap.read()
    [...]