在下面的代码中,我创建了一个循环,该循环一直运行直到按下'q'。我正在使用轨迹栏设置2个变量。但是我想在运行此循环之前创建某种暂停来设置这些轨迹栏。但是,getch()函数会冻结整个程序,直到我按下一个键并且不允许我编辑轨迹栏。是否可以创建某种允许我编辑轨迹栏的暂停?

int main(int argc, const char * argv[])
{
    cvNamedWindow("test image", CV_WINDOWS_AUTOSIZE);
    cvCreateTrackbar("subject", "test image", &subjectID, 40, NULL);
    cvCreateTrackbar("subject", "test image", &photoID, 10, NULL);
    ...
    <some more code>
    ...

    while(key != 'q')
    {
        cout << "set trackbars and press enter";
        getch()
        ...
        <and more code>
        ...
    }
}

最佳答案

另一个while循环和cv::waitKey()应该可以解决问题。

cout << "set trackbars and press enter"; //you might want to put this inside the loop
while (true) {
            int c = waitKey(10);
            if( c == 13) { break; }
        }

while(key != 'q')
{
    ...
    /*all your code*/
    ...
}

关于c++ - 暂停时编辑轨迹栏值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10445898/

10-12 16:11