opencv 3.4 imshow()打开第二个窗口,其名称与已使用namedWindow

时间:2018-05-17 17:52:19

标签: c++ opencv visual-studio-2017 imshow

由于我喜欢使用其他库,我将我的项目从Linux Mint 17.2移植到Eclipse和OpenCv 3.2.0到Windows 10 Visual Studio 2017和OpenCv 3.4.1。 我解决了典型的操作系统问题,并能够编译代码。

我现在观察到的不应该是可能的!以下代码打开两个具有相同名称的窗口:

    const string RefFrame = "Referenz Frame\0";
    const string MatchFrame = "Matching Frame\0";
    const string FinalFrame = "Transformated Frame\0";
    namedWindow(RefFrame, WINDOW_NORMAL);
    resizeWindow(RefFrame, 600,600);
    namedWindow(MatchFrame, WINDOW_NORMAL);
    resizeWindow(MatchFrame, 600,600);
    namedWindow(FinalFrame, WINDOW_NORMAL);
    resizeWindow(FinalFrame, 600,600);


    bool ready = false;
    vector<Point2f> ListOfPointsInReferenzFrame,   
    ListOfPointsInMatchingFrame;

    while (!ready) {
        ReferenzFrameWithFeature = ReferenzFrame.clone();
        MatchingFrameWithFeature = MatchingFrame.clone();
        this->DrawMatches(RefFrame, ReferenzFrameWithFeature,     ListOfPointsInReferenzFrame);
        this->DrawMatches(MatchFrame, MatchingFrameWithFeature, ListOfPointsInMatchingFrame);

“DrawMatches()”的样子如下:

    void tManualImageMatching::DrawMatches(const std::string WindowName,         cv::Mat &Image, std::vector<cv::Point2f> &ListOfPoints)
    {
        for (int i=0; i < ListOfPoints.size(); i++) {
            circle(Image,cvPoint((int) ListOfPoints[i].x,         (int)ListOfPoints[i].y),20,Scalar(0,0,0),2);//draw circle in point 100,100
        }
        imshow(WindowName, Image);
        resizeWindow(WindowName, 600,600);
    }

在我的Linux代码中使用opencv 3.2.0(使用eclipse构建),这很好用。在Windows下,具有相同名称的第二个窗口的属性将丢失。 - &GT;打开新窗口,类型为“WINDOW_AUTOSIZE”,这意味着resizeWindow命令在此处不起作用。

如何使用每个名称缩小到一个窗口?

0 个答案:

没有答案