【问题标题】:(OpenCV) ASSERT: "false" in file qasciikey.cpp(OpenCV) 断言:文件 qasciikey.cpp 中的“假”
【发布时间】:2018-06-28 05:42:34
【问题描述】:

我在 lubuntu 16.04 上,使用 OpenCV 3.2.0、Python 2.7 并在 imshow() 短暂显示带有我的相机流的窗口后遇到此错误。

这个错误是随机发生的 - 在这发生之前,流可以正常运行半分钟,或者它可以在我第一次运行脚本时发生。

断言:文件 qasciikey.cpp 中的“false”,第 495 行 中止(核心转储)

我的代码附在下面:

import numpy as np
import cv2

redcross_cascade = cv2.CascadeClassifier('rcrosscascade.xml')

cap = cv2.VideoCapture(2)

cv2.namedWindow('Haar', cv2.WINDOW_NORMAL)

while 1:
    ret, img = cap.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    redcross = redcross_cascade.detectMultiScale(gray, 50, 50)

    for (x,y,w,h) in redcross:
        cv2.rectangle(img,(x,y),(x+w,y+h),(255,255,0),2)

    cv2.imshow('Haar',img)
    key = cv2.waitKey(1) & 0xff
    if key == 27:
        break

cap.release()
cv2.destroyAllWindows()

非常感谢您在此问题上的任何帮助,谢谢!

编辑:我已确定此错误的触发因素 - 从我的 USB 光学鼠标移动。断开鼠标连接可以防止错误重新出现,但我还没有找到发生这种情况的原因。

【问题讨论】:

  • 确保所有资源都正确打开。
  • @Silencer 请问我应该怎么做或者我应该检查什么?
  • 我错了。一开始你说它运行良好......然后我搜索qasciikey.cpp,发现它是一个Qt文件。您是否使用 WITH_QT=ON 标志编译 OpenCV?也许将标志更改为 WITH_QT=OFF,这不是使用 Qt,会起作用。
  • 我正在使用各种 USB 摄像头模块。这个错误发生在一个特定的相机上,在特定的分辨率下可靠地发生:1920x1080。在更高的(2048x1536)和更低的(1280x720)分辨率下,它不会发生。它发生在第一个waitKey() 之后。没有它,我可以很好地阅读图像。这不是因为我这边的鼠标移动。

标签: python c++ opencv haar-classifier


【解决方案1】:

我也遇到了同样的问题。我的应用程序和你的类似。这里建议的修复都没有对我有用。我发现如果我通过 cap.read() 在调试模式下开始单步运行,我可以继续全速运行,问题就会消失,尽管这不是一个好的解决方法。

【讨论】:

    【解决方案2】:

    我之前收到过这个错误。不同的网络摄像头具有不同的性能。 我的方法是在cv2.imshow函数之后写cv2.waitKey函数。

    【讨论】:

      【解决方案3】:

      当我通过 SSH 终端运行我的 python 程序(它使用 cv2)时,我收到了这个错误。当我从机器本身运行程序时,错误消失了。我认为这是由于一些 X11 问题。

      【讨论】:

        猜你喜欢
        • 2016-06-20
        • 1970-01-01
        • 2017-12-28
        • 2018-05-19
        • 2014-02-10
        • 2016-04-05
        • 1970-01-01
        • 2016-08-02
        • 1970-01-01
        相关资源
        最近更新 更多