C++ 在Qt中初始化cv::VideoCapture时出现Seg故障
我使用OpenCV 3.0和Qt5.5.0,使用MingW4.9.2作为编译器。每次使用int初始化cv::VideoCapture时,都会导致segfault。下面是我能想到的尽可能多的相关信息 OpenCVViewer.hC++ 在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
#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