在OpenCV IMShow中显示不同的图像

Show different images in OpenCV imshow

本文关键字:图像 显示 OpenCV IMShow      更新时间:2023-10-16

我想显示图像以使用opencv imshow仿真动画。目前,我有以下代码:

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)。只有关闭namedWindow之后,才会出现另一个窗口。我该如何在同一窗口内进行图像更改?

在display_avatar()内删除waitkey(0),然后用waitkey(0)替换主函数中的getchar()。删除名为Window()调用,它是多余的。

您可以将Waitkey视为GetChar的OpenCV版本。实际上,c = waitkey(0)也会为您提供按下的字符。

替换

getchar()

通过OPECV功能cvWaitKey(0)

零表示功能"永远"等待您按下按钮。它返回整数指示您按下的字符。

另请参见链接