在Qt

时间:2015-10-25 02:52:34

标签: c++ qt opencv mingw

我正在使用OpenCV 3.0和Qt 5.5.0,使用MinGW 4.9.2作为编译器。每次使用int初始化cv :: VideoCapture时,都会导致段错误。以下是我能想到的相关信息。

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;
    };

OpenCVViewer.cpp

#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 .pro文件。 OpenCV是用MinGW 4.9.2编译的。

 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

堆栈跟踪

  

0 QEdit!DllRegisterServer 0x14006cda
  1 videoInput :: start(int,   videoDevice *)0x6bd84c6b
  2 videoInput :: setup(int)0x6bd848be
  3 cv :: VideoCapture_DShow :: open(int)0x6bd8bfd5
  4 cv :: VideoCapture_DShow :: VideoCapture_DShow(int)0x6bd8c0b5
  5 cv :: VideoCapture :: open(int)0x6bd89e86
  6 cv :: VideoCapture :: VideoCapture(int)0x6bd8a2b7
  7 ?? 0x401901
  8 ?? 0x403d22
  9 ?? 0x4016f7
  10 ?? 0x401647
  11 ?? 0x4032f2
  12 ?? 0x404cfd
  13 ?? 0x4013de
  14 KERNEL32!BaseThreadInitThunk 0x7557337a
  15 ntdll!RtlInitializeExceptionChain 0x779f9882
  16 ntdll!RtlInitializeExceptionChain 0x779f9855 17 ??

0 个答案:

没有答案