Qt Creator 在链接到 OpenCV 时给我一个错误
Qt Creator gives me an error when linking to OpenCV
我在网上找到了一个简单的 OpenCV 程序。我正在尝试在 Qt Creator 中编译它。源码如下(main.cpp):
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
VideoCapture cap(0); // open the default camera
if(!cap.isOpened()) // check if we succeeded
return -1;
Mat edges;
namedWindow("edges",1);
for(;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
cvtColor(frame, edges, COLOR_BGR2GRAY);
GaussianBlur(edges, edges, Size(7,7), 1.0, 1.0);
Canny(edges, edges, 0, 30, 3);
imshow("edges", edges);
if(waitKey(30) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}
这是我的 .pro 文件:
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
CONFIG += link_pkgconfig
PKGCONFIG += opencv
SOURCES += main.cpp
INCLUDEPATH += /usr/local/include/opencv2
LIBS += -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui -lopencv_shape -lopencv_videoio
当我构建项目时,出现以下链接器错误(以及其他类似错误):
error: undefined reference to `cv::VideoCapture::VideoCapture(int)'
但是,当使用一个简单的 CMake 文件时,它可以完美地构建和运行。我的 CMakeLists.txt 很简单:
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage main.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
我还需要设置一些其他路径吗?
首先检查你是否安装了OpenCV的所有依赖。可能您还需要安装 FFmpeg
。
然后替换为:
LIBS += -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui -lopencv_shape -lopencv_videoio
由此:
LIBS += -L/usr/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -lopencv_shape -lopencv_videoio
您还需要添加具体的OpenCV配置:
CONFIG += opencv
或者:
unix: CONFIG += link_pkgconfig
unix: PKGCONFIG += opencv
这些小改动对我来说很管用。
问题已解决。
这件事发生在我身上的原因是我首先做到了
sudo apt install libopencv-highgui-dev
和
sudo apt install libopencv-dev
然后从源代码编译 OpenCV 2.4.13 并安装它(因为我正好需要这个版本)。
使用 cmake,它链接到 OpenCV 4.1.0,但是使用 Qt Creator,它链接到 OpenCV 2.4.13。解决方案是卸载 OpenCV 并仅安装版本 2.4.13。
我也在使用 Opencv 开发 Qt,我使用这些行将 opencv 添加到 Qt 到 .pro
文件:
INCLUDEPATH += /usr/local/include/opencv
LIBS += `pkg-config --cflags --libs opencv`
您还应该通过终端检查 opencv 安装:
pkg-config --modversion opencv
如果出现错误,则说明安装有问题。
编辑: 如果您安装了 opencv4.x.x,您应该使用 "opencv4"
[=15= 更改上述命令中的单词 "opencv"
]
试试这个:
CONFIG += opencv
INCLUDEPATH += /usr/local/include/opencv4
我在网上找到了一个简单的 OpenCV 程序。我正在尝试在 Qt Creator 中编译它。源码如下(main.cpp):
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
VideoCapture cap(0); // open the default camera
if(!cap.isOpened()) // check if we succeeded
return -1;
Mat edges;
namedWindow("edges",1);
for(;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
cvtColor(frame, edges, COLOR_BGR2GRAY);
GaussianBlur(edges, edges, Size(7,7), 1.0, 1.0);
Canny(edges, edges, 0, 30, 3);
imshow("edges", edges);
if(waitKey(30) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}
这是我的 .pro 文件:
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
CONFIG += link_pkgconfig
PKGCONFIG += opencv
SOURCES += main.cpp
INCLUDEPATH += /usr/local/include/opencv2
LIBS += -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui -lopencv_shape -lopencv_videoio
当我构建项目时,出现以下链接器错误(以及其他类似错误):
error: undefined reference to `cv::VideoCapture::VideoCapture(int)'
但是,当使用一个简单的 CMake 文件时,它可以完美地构建和运行。我的 CMakeLists.txt 很简单:
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage main.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
我还需要设置一些其他路径吗?
首先检查你是否安装了OpenCV的所有依赖。可能您还需要安装 FFmpeg
。
然后替换为:
LIBS += -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui -lopencv_shape -lopencv_videoio
由此:
LIBS += -L/usr/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -lopencv_shape -lopencv_videoio
您还需要添加具体的OpenCV配置:
CONFIG += opencv
或者:
unix: CONFIG += link_pkgconfig
unix: PKGCONFIG += opencv
这些小改动对我来说很管用。
问题已解决。
这件事发生在我身上的原因是我首先做到了
sudo apt install libopencv-highgui-dev
和
sudo apt install libopencv-dev
然后从源代码编译 OpenCV 2.4.13 并安装它(因为我正好需要这个版本)。
使用 cmake,它链接到 OpenCV 4.1.0,但是使用 Qt Creator,它链接到 OpenCV 2.4.13。解决方案是卸载 OpenCV 并仅安装版本 2.4.13。
我也在使用 Opencv 开发 Qt,我使用这些行将 opencv 添加到 Qt 到 .pro
文件:
INCLUDEPATH += /usr/local/include/opencv
LIBS += `pkg-config --cflags --libs opencv`
您还应该通过终端检查 opencv 安装:
pkg-config --modversion opencv
如果出现错误,则说明安装有问题。
编辑: 如果您安装了 opencv4.x.x,您应该使用 "opencv4"
[=15= 更改上述命令中的单词 "opencv"
]
试试这个:
CONFIG += opencv
INCLUDEPATH += /usr/local/include/opencv4