我发现在opencv程序中有不止一个waitKey调用会使程序延迟,并且所有调用都没有正确注册。有时候你必须按住一些键超过4秒,才能使代码执行。上述错误调用的工作原理如下:
if cv2.waitKey(1) == 100:
show_crop = not show_crop
if cv2.waitKey(1) == 99:
show_cv = not show_cv
if cv2.waitKey(1) == 116:
show_curr_track = not show_curr_track
该程序检测不到所需的按钮按下调用,而是你需要按住所说的按钮几秒钟,在其代码执行.我该如何解决这个问题?
1条答案
按热度按时间c9x0cxw01#
我在我的程序中遇到了这个问题,并决定以问答的方式回答这个问题!我想出了一个非常简单的解决方法。首先,使用一个waitKey调用来获取所需的密钥,如-
inp = waitKey(1)
现在,创建一个字典,它的键作为你按下的按钮的序数,值作为你想要执行的代码(使用;或将代码拆分为单独的函数)-
这里,27是Esc,99是c,116是t,115是s等等。如果你不知道键的实际整数值,你也可以使用ord函数。
最后,您可以将单个waitKey函数与字典结合使用,并使用内置的
exec
函数,如下所示-这里,exec函数接受一个字符串作为输入,并将其作为python代码运行。
注:使用;对于多行代码(如字典第1行所示),或将其分解为单行函数调用。
确保将
inp
设置回None或其他超出字典范围的值,以便在主循环的下一次迭代中不会意外执行相同的代码。您还可以使用
inp = waitKey(1)
下面更传统的if else系列,但字典方法在我看来更简洁:)