0

在下面的代码中,我创建了一个循环,它一直运行直到按下“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>
        ...
    }
}
4

1 回答 1

1

另一个 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*/
    ...
}
于 2012-05-05T08:01:09.813 回答