OpenCV,在显示图像时读取用户文本输入(使用 waitKey)

OpenCV, reading user text input while an image is being displayed (using waitKey)

本文关键字:输入 文本 使用 waitKey 用户 读取 显示 显示图 图像 OpenCV      更新时间:2023-10-16

在使用OpenCV时,我试图获取一些用户文本输入有点困难。

我开发了一个迭代程序,该程序打开图像,检测颜色并使用标准cv::imshow()显示它们,然后是强制性waitKey()。在此状态下,按任意键应仅处理并显示下一个图像。

问题是我想允许用户选择性地单击显示的图像并输入一些文本数据。我尝试使用cin >> mystring但看起来waitKey()阻塞了控制台,因此显示我键入的任何内容,但在等待键结束之前,cin不会将其作为输入。这是一个问题,因为有时我想为每个图像获取多个文本输入,因此能够在waitKey工作时正常使用控制台和cin会很好。

¿关于如何允许用户在显示图像时输入文本的任何想法?解决我的问题会很好,但也欢迎任何其他想法或解决方法。

泰!

我知道你可能做错了什么 - 如果你也发布了你的代码,那就太好了(对于其他人登陆这里)。

就像我建议的那样,您可以设置鼠标回调并获取该函数中的字符串。这对我来说足够公平:

std::string s("empty");
void on_mouse_click( int event, int x, int y, int, void* )
{
    if( event == EVENT_LBUTTONDOWN )    //are you missing this?
    {
        std::cout<<"enter string: ";
        std::cin>>s;
    }
}
int main()
{
    :
    :
    cv::imshow( "images", frame );
    cv::waitKey();
    std::cout<<s;
return 1;
}

如果我直接按一个键,最后一个显示语句将显示"空"。如果我先单击图像,返回控制台并键入内容,返回图像窗口然后按键,我会得到我输入的字符串。