为什么opencv imshow()创建一个新窗口与namedWindow()在调试模式下的名称相同?

LI *_* Ke 2 opencv

我想创建一个垫子并在名为"figure"的窗口中显示它.

如果没有错,应该有一个名为"figure"的窗口,并接受任何键停止.

在发布模式下,以下代码可以正常运行.但在调试模式下,imshow()将创建一个新窗口,该窗口与创建的窗口具有相同的名称nameWindow().并且只有通过namedWindow()接受我的输入创建的图形.

#include<opencv2\opencv.hpp>

const std::string winName = "figure";
int main() {
    cv::Mat m;
    cv::namedWindow(winName,cv::WINDOW_AUTOSIZE);
    m.create(300, 300, CV_32FC3);
    m.setTo(cv::Scalar(0.0f, 2.0f, 5.0f));

    cv::imshow(winName, m);
    cv::waitKey(0);

}
Run Code Online (Sandbox Code Playgroud)

Mik*_*iki 7

此问题是由于错误的链接设置.

  • Debug中,您只需要链接到调试库opencv_world331d.lib
  • Release中,您只需链接到发布库opencv_world331.lib