Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么opencv imshow()创建的新窗口与调试模式下的namedWindow()具有相同的名称?_Opencv - Fatal编程技术网

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

为什么opencv imshow()创建的新窗口与调试模式下的namedWindow()具有相同的名称?,opencv,Opencv,我想创建一个垫子,并在名为“figure”的窗口中显示它 如果没有问题,应该有一个名为“figure”的窗口,并接受任何键停止 在发布模式下,以下代码可以很好地工作。 但在调试模式下,imshow()将创建一个新窗口,该窗口与通过namefown()创建的窗口同名。只有通过namedWindow()创建的图形才接受我的输入 #include<opencv2\opencv.hpp> const std::string winName = "figure"; int main() {

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

如果没有问题,应该有一个名为“figure”的窗口,并接受任何键停止

在发布模式下,以下代码可以很好地工作。 但在调试模式下,
imshow()
将创建一个新窗口,该窗口与通过
namefown()创建的窗口同名。只有通过
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);

}
#包括
const std::string winName=“figure”;
int main(){
cv::Mat m;
cv::namedWindow(winName,cv::WINDOW_AUTOSIZE);
m、 创建(300,300,CV_32FC3);
m、 设置为(cv::标量(0.0f、2.0f、5.0f));
cv::imshow(winName,m);
cv::waitKey(0);
}

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

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

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

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

@Miki如果不使用
namedWindow()
,窗口将立即消失,程序将立即停止。根据你的建议,代码仍然不起作用。这更奇怪。你在这里不需要名字。我怀疑项目设置存在一些问题。可以显示在调试模式下链接的库吗?@Miki Library:
D:\ProgramFiles\opencv3.3.1\opencv\build\x64\vc14\lib$(LibraryPath)
目录:
D:\ProgramFiles\opencv3.3.1\opencv\build\include\opencv2;D:\ProgramFiles\opencv3.3.1\opencv\build\include\opencv;D:\ProgramFiles\opencv3.3.1\opencv\build\include$(IncludePath)
其他依赖项
opencv_world331.lib;opencv_world331d.lib;%(附加依赖项)
好的,这可能就是问题所在。在发行版中,您应该只链接到
opencv\u world331.lib
,在调试版中只链接到
opencv\u world331d.lib
。另外,我假设您使用的是visual studio 2015,并且您的项目是64位的,对吗?@Miki-Additional-Dependencies
opencv_-world331.lib;opencv_world331d.lib;%(附加依赖项)‌​如果不使用
namedWindow()
,窗口将立即消失,程序将立即停止。根据你的建议,代码仍然不起作用。这更奇怪。你在这里不需要名字。我怀疑项目设置存在一些问题。可以显示在调试模式下链接的库吗?@Miki Library:
D:\ProgramFiles\opencv3.3.1\opencv\build\x64\vc14\lib$(LibraryPath)
目录:
D:\ProgramFiles\opencv3.3.1\opencv\build\include\opencv2;D:\ProgramFiles\opencv3.3.1\opencv\build\include\opencv;D:\ProgramFiles\opencv3.3.1\opencv\build\include$(IncludePath)
其他依赖项
opencv_world331.lib;opencv_world331d.lib;%(附加依赖项)
好的,这可能就是问题所在。在发行版中,您应该只链接到
opencv\u world331.lib
,在调试版中只链接到
opencv\u world331d.lib
。另外,我假设您使用的是visual studio 2015,并且您的项目是64位的,对吗?@Miki-Additional-Dependencies
opencv_-world331.lib;opencv_world331d.lib;%(附加依赖项)‌​)
@很高兴它起了作用;)谢谢我遇到了同样的问题,因为我的道具表链接了调试库和发布库。这在opencv341中运行良好,但在opencv341_构建中中断。将我的
标记拆分为
,以便一次只链接一个opencv库,修复了此问题。@很高兴它有所帮助;)谢谢我遇到了同样的问题,因为我的道具表链接了调试库和发布库。这在opencv341中运行良好,但在opencv341_构建中中断。将我的
标记拆分为
,以便一次只链接一个opencv库,修复了该问题。