Debug Assertion Failed(无符号)(c + 1)< = 256(在VideoCapture :: open [Qt Creator]中)

时间:2013-07-10 16:30:15

标签: c++ qt opencv qt4 qt-creator

我一直在 QtCreator (opencv添加)中尝试使用 cv :: VideoCapture :: open(“<路径到视频文件>”)。即使程序在“bebug模式”(调试版本)中运行没有错误,它在“发布模式”(发布版本)中提供运行时错误。

  

调试断言失败文件:   f:/dd/vctools/crt_bld/self_x86/src/isctype.c行:56表达式:   (无符号)(c + 1)< = 256

这是一个简单的程序,只使用cv :: VideoCapture :: open()[用于测试目的]

以下是.pro文件

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = untitled
TEMPLATE = app
SOURCES += main.cpp\
        mainwindow.cpp   
HEADERS  += mainwindow.h   
FORMS    += mainwindow.ui   

INCLUDEPATH += C:/C/opencv/build/include
INCLUDEPATH += C:/C/opencv/build/include/opencv  

LIBS += C:/C/opencv/build/x86/vc10/lib/opencv_highgui240d.lib
LIBS += C:/C/opencv/build/x86/vc10/lib/opencv_highgui240.lib


LIBS += C:/C/opencv/build/x86/vc10/bin/opencv_highgui240d.dll
LIBS += C:/C/opencv/build/x86/vc10/bin/opencv_highgui240.dll

以下是标题文件

#include <QMainWindow>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    cv::VideoCapture vcap;
};

以下是.cpp文件

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    vcap.open("C:/Users/ANURUDDHA/pedestrians/ThreePastShop2cor.mpg");
}

MainWindow::~MainWindow()
{
    delete ui;
}

当我将int作为参数传递给cv :: VideoCapture :: open()[例如:vcap.open(0)]时,它在调试和发布版本中运行时都没有错误并打开网络摄像头成功。只有当我将String传递给参数时才会出现问题。

有人请对此有所了解。真的很感激。

2 个答案:

答案 0 :(得分:1)

看起来你在libs的调试版和发行版中都有链接(两次?)。这在过去曾引起我的问​​题。尝试仅将LIBS += C:/C/opencv/build/x86/vc10/bin/opencv_highgui240.dll用于发布版本,并LIBS += C:/C/opencv/build/x86/vc10/bin/opencv_highgui240d.dll用于调试版本。

此外,0与NULL相同。在断言失败之前,库可能会中断它正在做的任何事情(无论是在调试还是发布中)。你不应该在发布模式下获得断言失败,但事实上你告诉我调试库已经加载到你为发布模式编译的程序中。

修改

看起来有人已经在这里回答你: http://answers.opencv.org/question/15838/videocaptureopenqt-creatordebug-assertion-failed/

答案 1 :(得分:0)

我想我找到了答案虽然对我来说似乎有点模棱两可。无论如何,现在该程序在发布模式下工作。 希望这可能会帮助某些人。

我将C:/ C / opencv / build / x86 / vc10 / bin /中的dll文件复制到Windows系统文件夹中。那就是C:\ Windows \ SysWOW64。如果有人使用32位版本的Windows,它应该是System32。