使用Visual Studio 2013的64位OpenCV - cv :: namedWindow()的奇怪行为

时间:2014-12-13 14:40:32

标签: c++ opencv visual-studio-2013 window x86-64

目前正在尝试使用OpenCV从uEye相机显示流。为此,我可以使用Visual Studio 2013和OpenCV 2.4.9(64位)。由于事情还没有接近发行版,我正在使用OpenCV附带的调试库(使用Visual Studio 2012编译)。

我试图 memcpy 将相机返回的图像数据添加到 cv :: Mat 对象。在得到一些关于NULL指针(cvNamedWindow的字符串名称)的奇怪错误之后,我决定检查我是否可以实际运行一段非常基本的代码 - 读取PNG图像并在窗口中显示它。嗯,它不起作用......我的错误可能仍然在我使用的memcpy中,但是如果你在下面看到,你会看到我也测试了一个没有摄像头的情况。

  • 无论我是否给出了我的图像的绝对路径,或者只是指向EXE所在的文件,我从 cv :: imshow 得到一个断言失败,即高度和/或宽度都是不是> 0.另一件事让我感到震惊 - 窗口名称全部搞砸了 - 奇怪的符号,空格等。与我指定的名称无关:“camOutput”
  • 此外,我决定通过手动创建CV_8U3类型的矩阵并用黑色像素填充它来测试。 OpenCV显示了图像,但窗口的名称再次搞砸了。这次我能够阅读以下内容,这似乎是命令的一部分:
  在DOS模式下

n。$

O_o我从未见过如此奇怪的行为,尤其是涉及到imshow,imread或namedWindow。我还无法解释为什么 imread 会返回一个空矩阵,无论我提供什么。尝试过PNG,JPEG和BMP - 总是一样的崩溃。

编辑:我创建了一个空的C ++项目并将所有设置从前一个设置中转移出来。现在它正在运作。甚至我的uEye相机的 memcpy 也很好,我可以在OpenCV窗口中显示输出。我不知道我以前的项目有什么问题。由于问题可能再次发生,将不得不进一步分析。然而,由于这个原因,我会把这个问题打开。

0 个答案:

没有答案