cvWaitkey 用于增加值
cvWaitkey for for increasing values
我有一个用 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;
}
}
密钥声明为 char key;
我现在遇到的问题如下。
如果我按 n
一切正常,如果我按 m
程序也会增加 n
和 s
。如果我按 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;
}
要在所有系统上工作,您不仅要使用 break 语句,还要这样做:
int key;
key = waitKey() & 255;
请注意,我没有使用 waitKey(0),因为它需要 0 毫秒来绘制图像。实际上 waitKey 需要时间来绘制它。
我有一个用 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;
}
}
密钥声明为 char key;
我现在遇到的问题如下。
如果我按 n
一切正常,如果我按 m
程序也会增加 n
和 s
。如果我按 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;
}
要在所有系统上工作,您不仅要使用 break 语句,还要这样做:
int key;
key = waitKey() & 255;
请注意,我没有使用 waitKey(0),因为它需要 0 毫秒来绘制图像。实际上 waitKey 需要时间来绘制它。