我想用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
后,才会出现另一个窗口。如何在同一窗口内进行图像更改?
答案 0 :(得分:0)
在display_avatar()中删除waitKey(0),并用waitKey(0)替换main函数中的getchar()。 删除namedWindow()调用,这是多余的。
您可以将waitKey视为getchar的opencv版本。实际上,c = waitKey(0)也会给你按下的字符。