簡體   English   中英

調試聲明失敗(無符號)(c + 1)<= 256(在VideoCapture :: open [Qt Creator]中)

[英]Debug Assertion Failed (unsigned)(c+1) <= 256 (in VideoCapture::open [Qt Creator])

我一直在嘗試在QtCreator (已添加opencv 中使用cv :: VideoCapture :: open(“ <視頻文件的路徑>” )。 即使程序在“調試模式” (調試版本) 下運行沒有錯誤 ,但在“發布模式” (發布版本) 也會給出運行時錯誤

調試斷言失敗文件:f:/dd/vctools/crt_bld/self_x86/src/isctype.c行:56表達式:(unsigned)(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傳遞給參數時,問題才會出現。

有人請對此有所說明。 非常感謝。

看來您同時鏈接了調試版和發行版的庫(兩次?)。 那是我以前遇到的問題。 嘗試僅將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/

我想我找到了答案,盡管對我來說似乎有點模棱兩可。 無論如何,現在該程序可以在發布模式下工作。 希望這可以對某人有所幫助。

我將C:/ C / opencv / build / x86 / vc10 / bin /中的dll文件復制到Windows系統文件夾中。 那是C:\\ Windows \\ SysWOW64。 如果有人使用32位版本的Windows,則應為System32。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM