我在使用 OpenCV 时尝试获取一些用户文本输入有点困难。
我开发了一个迭代程序,它打开一个图像,检测颜色并使用标准cv::imshow()后跟强制性waitKey(). 在这种状态下,按任意键应该只是处理并显示下一个图像。
问题是我想让用户有选择地单击显示的图像并输入一些文本数据。我尝试使用,cin >> mystring但看起来好像waitKey()阻塞了控制台,所以我输入的任何内容都会显示,但不会cin作为输入,直到 waitKey 结束。这是一个问题,因为有时我希望每个图像输入多个文本,因此在 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;
}
Run Code Online (Sandbox Code Playgroud)
如果我直接敲击一个键,最后一个显示语句将显示“空”。如果我先单击图像,返回控制台并输入一些内容,返回图像窗口然后按某个键,我会得到我输入的字符串。