我在使用OpenCV时尝试获取一些用户文本输入有点困难。
我开发了一个迭代程序,它打开图像,检测颜色并使用标准cv::imshow()
后跟强制waitKey()
显示它们。在这种状态下,按任意键只需处理并显示下一张图像。
问题是我想让用户可选择点击显示的图像并输入一些文本数据。我尝试使用cin >> mystring
,但看起来waitKey()
阻塞了控制台,所以我键入的任何内容都显示但cin
没有作为输入UNTIL,waitKey结束。这是一个问题,因为有时我想为每个图像输入多个文本输入,所以在waitKey工作时能够正常使用控制台和cin会很好。
¿任何关于如何在显示图像时允许用户输入文字的想法?解决我的问题会很好,但也欢迎任何其他想法或解决方法。
泰!
答案 0 :(得分:0)
我知道你可能做错了什么 - 如果你发布了你的代码,它会很棒(对于其他人来说)。
就像我建议的那样,您可以设置鼠标回调并获取该函数中的字符串。这对我来说很公平:
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;
}
最后一个显示语句显示&#34;空&#34;如果我直接敲了一把钥匙。如果我先点击图像,返回控制台并键入内容,返回图像窗口,然后点击一个键,我得到的是我输入的字符串。