C++ 在 Qt Creator Ubuntu 12.04 中设置 OpenCV
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/17938360/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Setting up OpenCV in Qt Creator Ubuntu 12.04
提问by vasan
I'm trying to set up OpenCV in Qt Creator and I have some problems. I added the OpenCV path in the Qt Creator .pro file
我正在尝试在 Qt Creator 中设置 OpenCV,但遇到了一些问题。我在 Qt Creator .pro 文件中添加了 OpenCV 路径
INCLUDEPATH += /usr/local/include/opencv
LIBS += -L/usr/local/lib \
-lopencv_core \
-lopencv_imgproc \
-lopencv_highgui \
-lopencv_ml \
-lopencv_video \
-lopencv_features2d \
-lopencv_calib3d \
-lopencv_objdetect \
-lopencv_contrib \
-lopencv_legacy \
-lopencv_flann
And I want to read and show image in this code
我想在这段代码中阅读和显示图像
void MainWindow::on_pushButton_clicked()
{
cv::Mat matInput = cv::imread("LP.jpg");
if( matInput.empty())
{
std::cout<<"Can't load image "<<std::endl;
}
cv::namedWindow("Show");
cv::imshow("Show", matInput);
cv::waitKey();
}
When I run my project it shows the following message:
当我运行我的项目时,它显示以下消息:
Starting /home/vasan/Qt/build-OpenCVWithQt-Desktop-Debug/OpenCVWithQt...
The program has unexpectedly finished.
/home/vasan/Qt/build-OpenCVWithQt-Desktop-Debug/OpenCVWithQt exited with code 0
正在启动 /home/vasan/Qt/build-OpenCVWithQt-Desktop-Debug/OpenCVWithQt...
程序意外完成。
/home/vasan/Qt/build-OpenCVWithQt-Desktop-Debug/OpenCVWithQt 退出,代码为 0
回答by Tormod Haugene
I have also been trying to set up OpenCV for Qt Creator for a few days now. I would recommend you trying the procedure found at
几天来,我也一直在尝试为 Qt Creator 设置 OpenCV。我建议您尝试在以下位置找到的程序
https://code.google.com/p/qt-opencv-multithreaded/wiki/Documentation
https://code.google.com/p/qt-opencv-multithreaded/wiki/Documentation
It is simple to follow, and it just WORKS. When you get to section 1.3, run any code sample you got at hand. I used:
遵循起来很简单,而且很有效。当你到达 1.3 节时,运行你手头的任何代码示例。我用了:
int main( int argc, char** argv )
{
if( argc != 2)
{
cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
return -1;
}
Mat image;
image = imread(argv[1], CV_LOAD_IMAGE_COLOR); // Read the file
image = imread("lena.png", CV_LOAD_IMAGE_COLOR); // Read the file
if(! image.data ) // Check for invalid input
{
cout << "Could not open or find the image" << std::endl ;
return -1;
}
namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", image ); // Show our image inside it.
waitKey(0); // Wait for a keystroke in the window
return 0;
}
Hope that helps!
希望有帮助!
回答by Matheus Laranjeira
It worked for me:
它对我有用:
INCLUDEPATH += /usr/local/include/opencv2
LIBS += -L/usr/local/lib
LIBS += -lopencv_core
LIBS += -lopencv_imgproc
LIBS += -lopencv_highgui
LIBS += -lopencv_ml
LIBS += -lopencv_video
LIBS += -lopencv_features2d
LIBS += -lopencv_calib3d
LIBS += -lopencv_objdetect
LIBS += -lopencv_contrib
LIBS += -lopencv_legacy
LIBS += -lopencv_flann
LIBS += -lopencv_nonfree
回答by giuseppe
Your code is correct. I think the problem arise because you are using shadow building. For this reason you should put the image in the shadow building folder (the folder that contains the executable) and not in the project folder (that contains only the code files).
你的代码是正确的。我认为问题的出现是因为您正在使用影子构建。因此,您应该将图像放在 shadow building 文件夹(包含可执行文件的文件夹)中,而不是放在项目文件夹(仅包含代码文件)中。
Another tip is to insert a returnstatement in the ifcase, so program will not quit when it does not find the image.
另一个技巧是在ifcase 中插入return语句,因此程序在找不到图像时不会退出。
if( matInput.empty())
{
qDebug() << "Can't load image";
return;
}
Also, be sure to include the following headers
另外,请务必包含以下标题
#include <QDebug>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>