在OpenCV imshow中显示不同的图像

时间:2015-05-05 09:07:51

标签: c++ opencv

我想用OpenCV imshow显示图像来模拟一些动画。目前,我有以下代码:

<item name="@android:windowEnterAnimation">@anim/slide_down_dialog</item>

现在我使用int display_avatar(int idx){ Mat image; char* imagepath = new char[128]; switch (idx){ case 0: strcpy(imagepath, "c:\\images\\a.png"); break; case 1: strcpy(imagepath, "c:\\images\\b.png"); break; default: break; } image = imread(imagepath, IMREAD_COLOR); if (!image.data){ cout << "Could not open or find the image" << std::endl; return -1; } namedWindow("Display window", WINDOW_AUTOSIZE); imshow("Display window", image); waitKey(0); return 0; } int main(){ display_avatar(0); getchar(); display_avatar(1); getchar(); return 0; } 来触发动画。但我发现该程序会弹出两个窗口(一个控制台窗口和一个getchar())。只有在我关闭namedWindow后,才会出现另一个窗口。如何在同一窗口内进行图像更改?

1 个答案:

答案 0 :(得分:0)

在display_avatar()中删除waitKey(0),并用waitKey(0)替换main函数中的getchar()。 删除namedWindow()调用,这是多余的。

您可以将waitKey视为getchar的opencv版本。实际上,c = waitKey(0)也会给你按下的字符。