C++ 将OpenCV与Qt链接时出错
当我运行代码时,会出现如下错误: D:\ubunto\OpenCV\OpenCV\build\include\opencv2\imgproc\imgproc.hpp:50:错误:opencv2/core/core.hpp:没有这样的文件或目录 我不知道这是因为opencv链接还是其他原因 你可以在下面找到我的代码 格式1.hC++ 将OpenCV与Qt链接时出错,c++,qt,opencv,C++,Qt,Opencv,当我运行代码时,会出现如下错误: D:\ubunto\OpenCV\OpenCV\build\include\opencv2\imgproc\imgproc.hpp:50:错误:opencv2/core/core.hpp:没有这样的文件或目录 我不知道这是因为opencv链接还是其他原因 你可以在下面找到我的代码 格式1.h 首先,出现此错误是因为编译器无法从#include中找到core.hpp,无法将包含到imgproc.hpp中。 我想您可以尝试将您的INCLUDEPATH更改为: INC
首先,出现此错误是因为编译器无法从
#include
中找到core.hpp
,无法将包含到imgproc.hpp
中。
我想您可以尝试将您的INCLUDEPATH
更改为:
INCLUDEPATH+=-I“D:\ubunto\OpenCV\OpenCV\build\include\”
或
INCLUDEPATH+=-I“D:\ubunto\OpenCV\OpenCV\build\include\opencv2\imgproc”
INCLUDEPATH+=D:\ubunto\OpenCV\OpenCV\build\include\opencv2\core
等等
第二,您将动态库链接错误。你应该写:
LIBS+=-L“D:\ubunto\OpenCV\OpenCV\build\x86\mingw\bin“-lopencv\u core-lopencv\u imgproc
您应该通过以下方式链接库:-l
我希望它能帮助你。斜线划错了。反斜杠\
具有特殊含义。在qt目录分隔符中,使用常规斜杠/
(qt将其转换为windows标准)
另外,这个LIBS+=…bin*.dll
也是错误的,请参见备选答案。未找到的标题是编译,而不是链接器问题。Islam,你的.pro仍然错误qmake
无法分析定义LIBS
部分。查看我的代码LIBS+=-L“D:\ubunto\OpenCV\OpenCV\build\x86\mingw\bin”-lopencv\u core和其他
#ifndef FORM1_H
#define FORM1_H
#include <QDialog>
//#include<highgui.h>
//#include<core/core.hpp>
//#include<cvwimage.h>
#include<opencv.hpp>
#include<imgproc/imgproc.hpp>
//#include <opencv_modules.hpp>
//#include <video/video.hpp>
#include <highgui/highgui.hpp>
namespace Ui {
class Form1;
}
class Form1 : public QDialog
{
Q_OBJECT
public:
explicit Form1(QWidget *parent = 0);
QImage getQImageFromFrame(cv::Mat frame);
~Form1();
private slots:
void on_pushButton_clicked();
void updatePicture();
private:
Ui::Form1 *ui;
cv::Mat *mt;
cv::VideoCapture *video;
QTimer * timer;
QImage *img;
};
#endif // FORM1_H
#include "form1.h"
#include "ui_form1.h"
#include <QtCore>
#include <QtGui>
#include <QGraphicsAnchorLayout>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsWidget>
#include "qimage.h"
#include <QFileDialog>
#include <QPixmap>
#include "qpixmap.h"
Form1::Form1(QWidget *parent) :
QDialog(parent),
ui(new Ui::Form1)
{
ui->setupUi(this);
}
QImage Form1::getQImageFromFrame(cv::Mat frame) {
//converts the color model of the image from RGB to BGR because OpenCV uses BGR
cv::cvtColor(frame, frame, CV_RGB2BGR);
return QImage((uchar*) (frame.data), frame.cols, frame.rows, frame.step, QImage::Format_RGB888);
}
Form1::~Form1()
{
delete ui;
}
void Form1::updatePicture()
{
video >> mt;
img = getQImageFromFrame(mt);
ui->label->setPixmap(QPixmap::fromImage(image));
}
void Form1::on_pushButton_clicked()
{
fileName = QFileDialog::getOpenFileName(this,
tr("Open Image"), "/elhandasya/Desktop", tr("Image Files (*.png *.jpg *.bmp)"));
//QPixmap pix(fileName);
video->open(filename);
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(updatePicture());
timer->start(20);
}
#-------------------------------------------------
#
# Project created by QtCreator 2013-12-16T09:23:28
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = Video_Player
TEMPLATE = app
SOURCES += main.cpp\
form1.cpp
HEADERS += form1.h
FORMS += form1.ui
INCLUDEPATH += -I"D:\ubunto\OpenCV\opencv\build\include\opencv2\imgproc"
INCLUDEPATH += -I"D:\ubunto\OpenCV\opencv\build\include\opencv2\core"
INCLUDEPATH += -I"D:\ubunto\OpenCV\opencv\build\include\opencv2"
LIBS += -LD:\ubunto\OpenCV\opencv\build\x86\mingw\bin
-lopencv_core
-lopencv_imgproc
-lopencv_highgui
-lopencv_legacy
-lopencv_gpu
-lopencv_video
-lopencv_ml
-lopencv_contrib
#LIBS += D:\ubunto\emgu\emgucv-windows-x86 2.4.0.1717\lib
#-opencv_calib3d240
#-opencv_videostab240
#-opencv_calib3d240
#-opencv_contrib240
#-opencv_core240
#-opencv_features2d240
#-opencv_flann240
#-opencv_gpu240
#-opencv_highgui240
#-opencv_imgproc240
#-opencv_legacy240
#-opencv_ml240
#-opencv_nonfree240
#-opencv_objdetect240
#-opencv_photo240
#-opencv_stitching240
#-opencv_video240
INCLUDEPATH += D:/ubunto/OpenCV/opencv/build/include/opencv2
LIBS += D:/ubunto/OpenCV/opencv/build/x86/mingw/bin*.dll #wrong