用于增加值的cvWaitkey 我有一个用OpenCV编写的C++程序,它应该计算一个视差图。现在,我想在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; } }
键被声明为用于增加值的cvWaitkey 我有一个用OpenCV编写的C++程序,它应该计算一个视差图。现在,我想在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; } },c++,opencv,C++,Opencv,键被声明为char键 我现在的问题如下。 如果我按n一切正常,如果我按m程序也会增加n和s。如果我按s,情况也一样。如果我按q什么也没有发生 我还尝试了使用if-else语句,结果是一样的。 这是因为键以任何方式保存了之前按下的按钮吗 也许你们中的某个人可以帮我解决这个问题。也许switch case的语法有问题。你有没有在每一个案例的结尾故意留下一个破绽陈述 switch(char(key)) { case 'n': numDISP+=16; bre
char键代码>
我现在的问题如下。
如果我按n
一切正常,如果我按m
程序也会增加n
和s
。如果我按s
,情况也一样。如果我按q
什么也没有发生
我还尝试了使用if-else语句,结果是一样的。
这是因为键以任何方式保存了之前按下的按钮吗
也许你们中的某个人可以帮我解决这个问题。也许switch case的语法有问题。你有没有在每一个案例的结尾故意留下一个破绽陈述
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需要时间才能将其静止 好吧,如果我用这个,什么都不管用了。问题是,我可以使用std::cout Wait打印值,您是否希望按下'q'键来打破while循环?因为它只会中断switch语句。在switch语句中,它将继续执行下一个代码部分,直到找到一个中断
。因此,您应该添加一个中断代码>之后numDISP+=16代码>minDISP+=1代码>和sadWindowsSize+=2代码>如果您不希望在按下前一个键时执行它们。。。break
只会将您带出switch语句,而不会带出循环!关于案例q,我认为他想退出函数。