Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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
C++ 在Qt中初始化cv::VideoCapture时出现Seg故障_C++_Qt_Opencv_Mingw - Fatal编程技术网

C++ 在Qt中初始化cv::VideoCapture时出现Seg故障

C++ 在Qt中初始化cv::VideoCapture时出现Seg故障,c++,qt,opencv,mingw,C++,Qt,Opencv,Mingw,我使用OpenCV 3.0和Qt5.5.0,使用MingW4.9.2作为编译器。每次使用int初始化cv::VideoCapture时,都会导致segfault。下面是我能想到的尽可能多的相关信息 OpenCVViewer.h #pragma once #include <QWidget> #include <QTimer> #include <opencv2/opencv.hpp> class OpenCVView

我使用OpenCV 3.0和Qt5.5.0,使用MingW4.9.2作为编译器。每次使用int初始化cv::VideoCapture时,都会导致segfault。下面是我能想到的尽可能多的相关信息

OpenCVViewer.h

    #pragma once

    #include <QWidget>
    #include <QTimer>
    #include <opencv2/opencv.hpp>

    class OpenCVViewer : public QWidget
    {
        Q_OBJECT
    public:
        OpenCVViewer(QWidget *parent = 0);

    public slots:
        void display_scene();

    protected:
        void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;

    private:
        QImage      render_img;     /// Qt image to be rendered
        cv::Mat     original_img;   /// original OpenCV image to be shown
        bool    showImage( cv::Mat image ); /// Used to set the image to be viewed
        QTimer *timer;

        cv::VideoCapture cap;
    };
和堆栈跟踪

0 QEdit!DllRegisterServer 0x14006cda 1视频输入::startint, 视频设备*0x6bd84c6b 2视频输入::setupint 0x6bd848be 3 cv::VideoCapture_DShow::openint 0x6bd8bfd5 4 cv::VideoCapture\u DShow::VideoCapture\u DShowint 0x6bd8c0b5 5 cv::VideoCapture::openint 0x6bd89e86 6 cv::VideoCapture::VideoCaptureint 0x6bd8a2b7 7.0x401901 8.0x403d22 9 ?? 0x4016f7 10 ?? 0x401647 11 ?? 0x4032f2 12 ?? 0x404cfd 13 ?? 0x4013de 14内核32!BaseThreadInitThunk 0x7557337a 15个ntdll!RTL初始化例外链0x779f9882 16个ntdll!RTL初始化例外链0x779f9855 17


没有Qt的视频捕获可以工作吗?不可以。由于某些原因,我从未想过检查您是否可以尝试使用VLC、GraphStudio Text或VideoInput library打开相机/设备?是的。我可以用VLC打开它。我也可以在VisualStudio中用OpenCV打开它,尽管我不能在Qt项目中使用VS?你用minGW编译OpenCV了吗?或者您可以尝试在VisualStudio中使用Qt吗?例如,使用QtForVisualStudio加载项。
#include "OpenCVViewer.h"
#include <QtWidgets>
#include <opencv2/opencv.hpp>
#include <stdexcept>

OpenCVViewer::OpenCVViewer(QWidget *parent) :
    QWidget(parent),
    cap(0)
{
    timer = new QTimer(this);
    QObject::connect(timer, SIGNAL(timeout()), this, SLOT(display_scene()));

    if (!cap.isOpened())  // if not success, throw exception
    {
        throw std::runtime_error("Cannot open the web cam");
    }
    timer->start(30);
}

/** Rest of file not included */
 QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = Humanactivity
TEMPLATE = app

SOURCES += main.cpp\
        mainwindow.cpp \
    OpenCVViewer.cpp

HEADERS  += mainwindow.h \
    OpenCVViewer.h

FORMS    += mainwindow.ui

win32: LIBS += -L$$PWD/../lib/opencv/build/mingw32/bin/ -lopencv_calib3d300 \
                                                        -lopencv_core300 \
                                                        -lopencv_features2d300 \
                                                        -lopencv_flann300 \
                                                        -lopencv_highgui300 \
                                                        -lopencv_imgcodecs300 \
                                                        -lopencv_imgproc300 \
                                                        -lopencv_ml300 \
                                                        -lopencv_objdetect300 \
                                                        -lopencv_photo300 \
                                                        -lopencv_shape300 \
                                                        -lopencv_stitching300 \
                                                        -lopencv_superres300 \
                                                        -lopencv_video300 \
                                                        -lopencv_videoio300 \
                                                        -lopencv_videostab300 \
                                                        -lopencv_ffmpeg300
INCLUDEPATH += $$PWD/../lib/opencv/build/include
DEPENDPATH += $$PWD/../lib/opencv/build/include