gpt4 book ai didi

c++ - cvWaitkey 用于增加值

转载 作者:太空宇宙 更新时间:2023-11-03 22:29:57 26 4
gpt4 key购买 nike

我有一个用 c++ 和 opencv 编写的程序,它应该计算视差图。现在我想在一个 while 循环中使用这些值,如下所示:

while(true) {

cv::StereoSGBM disparity(minDISP,numDISP,SADWindowSize, disparitySmoothness1, disparitySmoothness2);
cv::Mat disparityMap, disparityNorm;

disparity(undistortedLeft[1], undistortedRight[1], disparityMap);
disparityMap*=(1/16.0);
cv::normalize(disparityMap, disparityNorm, 0,255, cv::NORM_MINMAX, CV_8U);
cv::imshow("disparityMap", disparityNorm);
key = cv::waitKey(0);

switch(char(key)) {
case 'n': numDISP+=16;
case 'm': minDISP+=1;
case 's': SADWindowSize+=2;
case 'q': break;
}
}

key 声明为 char key;

我现在遇到的问题如下。如果我按 n 一切正常,如果我按 m 程序也会增加 ns。如果我按 s 也是一样。如果我按 q 没有任何反应。

我也尝试过使用 if else 语句,结果是一样的。这是因为 key 以任何方式保存了之前按下的按钮吗?

也许你们中有人可以帮我解决这个问题。

最佳答案

可能是 switch-case 的语法有问题。您是否在每个案例的末尾故意留下了 break 语句?

switch(char(key)) 
{
case 'n':
numDISP+=16;
break;
case 'm':
minDISP+=1;
break;
case 's':
SADWindowSize+=2;
break;
case 'q':
// do nothing
break;
}

关于c++ - cvWaitkey 用于增加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28346887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com